Parasoft C++test—C / C++测试,静态分析,代码审查
Parasoft® C++test® 是一个自动化了经广泛证明能提高开发团队生产力和软件质量方法的集成解决方案。
C/C++test功能:
- 静态分析— 静态代码分析,数据流静态分析,与度量指标分析
- 自动化同行代码审查过程—准备、通知、跟踪
- 单元测试— JUnit 与 Cactus测试创建、执行、优化、与维护
- 运行时错误检测— 竞争条件、异常、资源与内存泄露、安全攻击的漏洞等等
这提供了一个切实可行的方法来预防,揭露,纠错为了确保C/C++ Code按照预期正常工作。增进快速纠错,每个问题检测是优先基于配置严重任务的基础上、自动分配给写相关代码的开发者,并且分配给他或者她可直接连接到有问题代码的IDE和若何解决的描述。
为了嵌入式与跨平台开发,C++test 能被用在基于主机与基于目标代码分析和测试流。
Parasoft 的客户,包括58%的财富500强, 信赖 C++test 能够帮助他们:
- 预防影响应用程序安全性,可靠性和性能的缺陷
- 内部遵从或监管质量倡议
- 在大型和分布式团队之间确保一致性
- 通过自动化关键缺陷预防方法来提高生产力
- 成功地实施流行的开发方法,例如 TDD, Agile, 和XP
Parasoft C/C++ 质量解决方案提供一套自动化的经广泛证明能提高软件开发团队生产力和软件质量的最佳方法的集成解决方案。
内存错误侦测 | 识别可能造成应用程序行为不正常或间断的难以发现的错误。 |
静态代码分析 | 促进遵守监管规范(FDA, PCI, 等等)。确保代码符合在安全性,可靠性,性能和可维护性上的统一期望。通过建立预防性编码规范消除所有类型编程错误。 |
数据流静态分析 | 检测复杂运行时错误没有需要测试案例或者应用程序运行。检测缺陷包括使用初始化的或无效内存,空指针解引用,数组和缓冲区溢出,除零,内存和资源泄露与死代码。 |
质量指标分析 | 识别容易出错并难以维护的复杂代码。 |
自动化同行代码审查过程 | 自动化和管理同行代码审查工作流- 包括准备,通知和跟踪- 并降低在桌面上启用远程代码审查的开销。 |
生成与执行单元测试 | 确保团队在完整的系统准备就绪之前开始验证可靠性和功能,减少诸如调试等下游工序的时间和成本。 |
运行时错误检测 | 自动地检测出在应用程序执行过程中发生的缺陷—包括内存泄漏,空指针,未初始化内存,缓冲区溢出等。 |
嵌入式目标测试执行流 | 支持测试在主机或模拟机和目标硬件。完全自动化的目标为基础的测试执行流,包括测试用例生成,交叉编译,部署,执行,装载结果返回到图形界面。 |
自动化回归测试 | 当应用程序在执行时生成捕获实际代码行为的单元测试用例,提供了一个快速和简单的方法来创建功能/回归测试所需的实际测试用例。 |
覆盖率分析 | 通过使用一个多维度的测试覆盖率分析器评估测试套件的有效性和完整性。包括语句,分支,路经和MC/DC覆盖。这有助于证明符合测试要求并验证例如 DO-178与FDA 的需求。 |
Parasoft C++test下载试用、价格与购买:请咨询:北京铸锐数码科技 010-62139280
C/C+ +开发的全面的代码质量工具
Parasoft C++test 能够使团队开发更好的代码,实施更有效的测试,以及持续地监视实现其质量目标的过程。 使用 C++test 经时间验证的重要最佳实践—例如静态分析,全面的代码审查,内存监测,集成覆盖率分析的单元测试和组件测试—能够在开发周期的开始阶段,自动地在开发者的桌面上完成。能够通过命令行模式自动化地执行回归和持续集成测试,为监测和分析质量趋势提供数据。此外, C++test 与 Parasoft 的 Concerto 结合在一起, 提供基于 Web 交互式的仪表板,具有细分能力的 Concerto使团队能够通过 C++test 的结果以及其它关键进度指标来把握项目状态和趋势。
针对嵌入式和跨平台开发, C++test 可以用在基于宿主环境和目标环境的代码分析和测试流程中。
自动化代码分析以提供代码规范性
一个正确实施的编码策略通过建立预防性的编码规范能够降低全部种类的编程错误。C++test 通过静态分析代码来检查是否遵循这些策略。对 C++test 进行配置可以为他们的团队和组织实施一个代码标准的策略,用户可以在内建和自定义规则中定义他们自己的规则集。可以生成多种格式的代码分析报告,包括 HTML 和 PDF。
数千条内建规则—包括实现 FDA, PCI, 中华人民共和国国家军用标准(GJB5369),MISRA, MISRA 2004, 新的 MISRA C++ 标准, 和来自于 Meyers的 Effective C++ 和Effective STL 等书籍以及从其他主流源码中总结的准则—有助于预防 C/C++ 语言中潜在的缺陷, 实施最佳的编码实践,以及提高代码的可维护性和可重用性。使用图形化的 RuleWizard 编辑器创建的自定义规则能增强标准 API 的使用,并预防单个缺陷被发现后类似的应用程序缺陷重复出现。
在不执行软件的情况下检测运行时缺陷
BugDetective, Parasoft 先进的数据流静态分析功能, 通过模拟应用程序的执行路径—可能跨越多个函数和文件—并确定这些路径是否会触发运行时缺陷。可以检测的缺陷类型包括使用未初始化的或无效的内存,空指针解引用,数组和缓冲区溢出,除零,内存和资源泄漏,以及各种风格的死代码(Dead Code)。
C++test 通过为每个潜在的缺陷提供一个完整的路径分析,跟踪缺陷的产生过程,开发人员可以在 IDE 中快速地定位到路径中的任何一点,从而极大地简化了缺陷分析的工作。
简化代码审查
代码审查是已知的发现代码缺陷最有效的方法。然而不幸的是,许多组织没有充分利用代码审查,因为他们认为这需要做大量的工作。 C++test 的代码审查模块自动准备,通知,和跟踪同行代码审查,实现了一个非常有效的面向团队的过程。 所有代码审查的状态,包括全部审查者的注释,都由 C++test 基础设施来维护和自动地分配。C++test 支持两种典型的代码审查流程:
提交后代码审查 这个模式是通过自定义的源码控制器接口来自动地识别源代码库中的代码变化, 并且根据预先设定的关于更改的代码到审查者的映射来创建代码审查任务。
提交前代码审查 用户可以通过选择一个为审查而分配的文件集合来从图形界面开始一个代码审查,或者自动地识别所有本地修改的源代码。
团队代码审查的功效通过 C++test 的静态分析能力得到进一步的增强了。因为能够自动地监测团队的编码策略,几乎完全消除了逐行检查的需求。到代码被提交用于审查的时候, 违规也已经被识别出来并清理了。那么审查就可以集中在检查算法,审查设计,和找寻自动化工具无法检测的细微错误。
监测应用程序的内存问题
应用程序内存监测是用于消除严重的内存相关缺陷并具有零误报率的最著名方法。持续地监测运行的应用程序以查找某些类别的问题—如内存泄漏,空指针,未初始化的内存,和缓冲区溢出—以及在测试过程完成之后立即可见结果。
无需高级的和耗时的测试活动,准备好的应用程序通过标准的功能性测试然后标记出所有存在的问题。应用程序可以执行在目标设备,模拟的目标平台,或者宿主机上。收集的问题以及理解和解决这个问题所需的细节直接地显示在开发人员的 IDE 中 (包括内存块的大小,数组索引,分配/释放堆栈跟踪等。)
在应用程序执行期间收集覆盖率指标。 这些信息可以用于查看应用程序的哪一部分已经测试和微调整回归单元测试集(作为功能性测试的补充)。
具有覆盖率分析的单元和集成测试
C++test 的自动化极大地提高了测试新开发或旧代码的正确性和可靠性的效率。 C++test 自动地为每个函数生成完整的测试,包括测试驱动和测试用例, 这些测试用例是类似于 CppUnit 格式的纯C 或 C++ 代码。不论是否修改这些测试, 它们都被用于代码功能性行为的初步验证。通过使用边界情况的条件, 这些自动生成的测试用例也检查对未知输入的功能响应,揭露潜在的可能性问题。
完全通过一套具体的 GUI 构件来简化测试的创建和管理。图形化的测试用例向导使开发人员能够为选中的函数快速地创建黑盒功能性测试,而不必担心它们的内部运作或嵌入的数据依赖。数据源向导帮助参数化测试用例和桩函数—以最小的努力使测试范围和覆盖率得到提升。使用桩函数视图很方便分析和生成桩函数,此视图显示所有在代码中使用的函数并允许用户为任何在测试范围内不可用的函数创建桩函数—或者为特定的测试目的而改变现有的函数。在测试用例浏览器中集中进行测试执行和分析,并合并了所有现有的项目测试和提供一个明确的通过/失败状态。 这些功能用于支持自动的持续集成和测试"随进度而测试(test as you go)“ 开发特别有用。
提供多种测试覆盖率分析报告,包括语句,分支,路径,和 MC/DC 覆盖率, 帮助用户评估测试的有效性和完整性, 以及证明符合测试和验证的需求,例如 DO-178B。 测试覆盖率是通过对所有受支持的覆盖率指标的代码高亮来体现的—在 GUI 或用颜色表示的代码列表报告中。 可以以多种格式生成包括文件, 类,和函数数据的概要覆盖率报告。
自动化回归测试
C++test 有助于健壮性回归测试套件的开发,帮助检测是否增量代码变更破坏了现有的功能。 无论团队是有大量的遗留代码库,还是少量刚好完成的代码,或者介于两者之间的情况,C++test 都能够通过自动地记录运行时测试结果而产生的测试断言来生成捕获现有软件行为的测试。 随着代码库的发展, C++test 重新运行这些测试并将当前的结果与原来捕获的"黄金集合(golden set)"相比较。它可以很容易地被配置为使用不同的执行设置,测试用例,和桩函数以支持在不同环境中的测试(例如, 不同的持续集成阶段, 测试不完整的系统, 或者测试一个完整系统的特定部分)。这种类型的回归测试对于支持敏捷开发和发布周期短的情况, 以及确保不断发展的延续性功能和难以测试的应用程序尤为重要。
可配置的详细报告
C++test 的 HTML, PDF, 和自定义格式的报告可以通过 GUI 控件或一个选项文件来配置。标准报告包括有通过/失败的代码分析和测试结果的概要,已分析文件的列表,和一个代码覆盖率概要。 此报告可以进行自定义,以包括活动的静态分析检查的清单, 具有单独测试的通过/失败状态的扩展测试输出, 对于关键指标的趋势图参数,和用颜色表明的所有代码覆盖率结果的完整代码清单。 生成的报告可以根据各种角色的过滤器通过邮件被自动地发送。除了直接提供数据给负责缺陷所标记代码的开发人员, C++test 也发送概要报告给管理人员和团队负责人。
高效的团队部署
C++test 建立了一个高效的过程以确保软件验证任务被植入到团队的现有工作流程中并且自动地—使团队更加专注于真正需要人类智慧的任务。 通过自动化任务安排和分配使缺陷审查和纠正更加容易。每个检测到的缺陷通过区分优先顺序,被安排给相应编写这部分代码的开发人员,并分配完整数据和代码的交叉链接到他的或她的 IDE 中。为了帮助管理人员评估和记录趋势,集中化的报告能够确保对质量状态和过程实时监控。这些数据同样帮助确定是否需要进一步的行动以满足内部目标或证明策略的遵从性。
优点
- 提高团队开发效率 — 应用一套全面的最佳实践集合以缩减测试时间,降低测试难度,和减少到达 QA 阶段的缺陷数量。
- 优化团队开发资源的配置 — 自动地审查已知的代码问题,以便有更多的时间可以被用于需要人类智慧的地方。
- 建立更可靠的代码库 — 高效地构建,并可持续地执行,和维护一个全面的回归测试套件,用于检测更新是否破坏了既有的功能
- 让C 和C++ 代码质量和进度可视化 — 获取对用于实现需求代码的评估,并跟踪其过程以实现质量和进度的目标。
- 降低项目成本 — 自动对广泛的潜在用户路径进行测试以查找出只有在真正使用时才能发现的问题。
功能
- 通过静态分析来使代码遵守用户选定的编码规范
- 提供一个图形化的 RuleWizard 编辑器来创建自定义的编码规则
- 通过对代码路径做静态模拟分析以定位潜在的运行时错误
- 提供图形化接口和动态跟踪功能使代码审查自动化
- 应用程序监测/内存分析
- 自动生成并执行单元和组件级的测试
- 灵活的桩函数机制
- 完全支持回归测试
- 代码高亮显示的覆盖率分析
- 在单元测试执行过程中进行运行时内存错误检查
- 使用图形界面和命令行方式进行全面团队部署
支持嵌入式和跨平台开发
随着嵌入式系统中的软件组件变得越来越重要,全面提升了质量在嵌入式软件中的关注度。长期存在的质量对策,例如使用调试器做测试变得不再有效或不够充分。更加复杂的问题是,许多开发人员不能轻易地在实际的部署环境中运行一个测试程序,因为他们无法访问最后的系统硬件。为了应对这些挑战,需要在整个开发生命周期中实现代码质量—在自动化实施和监测的协助下,协同使用一个被时间证明的早期缺陷预防技术。
对于要求高品质的行业,例如航空,医疗,汽车,运输,和工业自动化, Parasoft 基于 Web 交互式仪表板和具有 SQL 数据库支撑的数据细分能力的统计和报告系统,通过让遵守情况可视化来实现高效和可度量的质量过程。
在宿主机,模拟器,和目标机上测试
C++test 自动化实施完整的测试执行流程, 包括测试用例生成,交叉编译,部署,执行,和加载结果 (包括覆盖率指标) 返回到 GUI 中。可以为自动的测试执行来从 GUI 或命令行交互地驱动测试, 以及批处理回归测试。在交互模式中, 为了方便调试或验证用户可以单独地或在选中的组中运行测试。 对于批处理执行,用户可以针对指定的代码,它们的名称或者在磁盘上的位置来执行测试。
高度的可定制化
C++test 允许用户完全自定义测试执行流程。除了使用内建的自动化测试以外,用户可以包含自定义的测试脚本和 shell 命令来使工具符合他们具体的构建和测试环境。
通过交叉编译为预期的目标环境所提供的运行时库,C++test 可以被广泛的用于多种嵌入式操作系统和结构体系。C++test 的所有测试中间产物的源代码都可见,因此完全可以移植。
先进的单元测试功能
- 自动生成测试用例和桩函数
- 根据观察到的测试结果自动生成断言
- 图形化测试用例向导增加和修改自定义的测试用例
- 对测试用例和桩函数源代码的完全可视性和可编辑
- 智能,灵活的桩函数功能
- 参数化测试和桩函数
- 符合 DO-178B 标准的多种覆盖率分析(包括 MC/DC)
- 灵活地支持持续的回归测试
- 按照缺陷和需求来注释测试用例
- 在调试器下执行测试用例
- 在特殊模式下测试模板代码
C++test 版本
Desktop Edition(桌面版)
一个完整的集成工具套件,可帮助开发人员/测试人员执行自动编码标准分析(自动代码审查),单元测试和回归测试。
在他们的桌面上使用内置的编码规则和指引/自动生成的测试用例进行测试。通过一个单一路径扫描和测试多个类/文件/目录。测试失败和违反编码标准,报告给用户的GUI进行评估和修正。
专业版拟对每一个开发人员/测试人员桌面授权和使用。
还包括RuleWizard的模块,可以使用图形界面创建自定义编码标准和规则。
Server Edition(服务器版)
服务器版包括专业版的所有功能,但允许以批处理或“服务器”进程(ES)方式执行自动编码标准分析,单元测试和回归测试,服务器版可以执行整个项目的代码库,对于整个团队的开发人员编码标准的符合性建立全自动化的评估/分析
。服务器版提供命令行界面,这使得它能够集成与自动化构建进程。服务器版提供了错误报告概要输出到一个文件和/或电子邮件分发列表(电子邮件选项仅适用于Jtest)。服务器版包括团队使团队配置管理模块,使得团队集中管理和共享编码标准/规则集和单位测试参数配置。该模块有利于建立一个团队的开发人员/测试人员使用的共同规则集和测试配置,以确保整个团队的一致性。TCM 对于使用专业版的一些开发人员,需要分享共同的编码标准,测试参数和偏好。
这是一个单独license选择,可以安装和运行在任何支持的计算机系统(例如,一个开发人员的工作站,Parasoft产品的服务器或一个独立的系统)。包括了Bug Detective。