软件说明
- 【针对 C/C++ 开发的综合性代码质量保障工具】
- Parasoft C++test 能够使团队开发更好的代码,实施更有效的测试,以及持续地监视实现其质量目标的过程。使用 C++test 经时间验证的重要更佳实践—例如静态分析,全面的代码审查,运行时错误检测,集成覆盖率分析的单元测试和组件测试—能够在开发周期的开始阶段,自动地在开发者的桌面上完成。能够通过命令行模式自动化地执行回归和持续集成测试,为监测和分析质量趋势提供数据。此外, C++test 与 Parasoft 的Concerto 结合在一起, 提供基于 Web 交互式的仪表板,具有细分能力的 Concerto 使团队能够通过 C++test的结果以及其它关键进度指标来把握项目状态和趋势。
- 针对嵌入式和跨平台开发, C++test 可以用在基于宿主环境和目标环境的代码分析和测试流程中。详情请参阅第3页。
- 自动化代码分析以提供代码规范性
一个正确实施的编码策略通过建立预防性的编码规范能够降低全部种类的编程错误。C++test 通过静态分析代码来检查是否遵循这些策略。对 C++test进行配置可以为他们的团队和组织实施一个代码标准的策略,用户可以在内建和自定义规则中定义他们自己的规则集。可以生成多种格式的代码分析报表。 - 数千条内建规则—包括实现 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 的静态分析在不执行代码的情况下检测严重的缺陷 (图示为 Eclipse 版本)
优点
n 提高团队开发效率 — 应用一套全面的更佳实践集合以缩减测试时间,降低测试难度,和减少到达 QA 阶段的缺陷数量。
n 优化团队开发资源的配置 — 自动地审查已知的代码问题,以便有更多的时间可以被用于需要人类智慧的地方。
n 建立更可靠的代码库 — 高效地构建,并可持续地执行,和维护一个全面的回归测试套件,用于检测更新是否破坏了既有的功能。
n 让 C 和 C++ 代码质量和进度可视化 — 获取对用于实现需求代码的评估,并跟踪其过程以实现质量和进度的目标。
n 降低项目成本 — 自动对广泛的潜在用户路径进行测试以查找出只有在真正使用时才能发现的问题。- 功能
n 通过静态分析来使代码遵守用户选定的编码规范
n 提供图形化的 RuleWizard 编辑器来创建自定义的编码规则
n 通过对代码路径做静态模拟分析以定位潜在的运行时错误
n 提供图形化接口和动态跟踪功能使代码审查自动化
n 应用程序监测/内存分析
n 自动生成并执行单元和组件级的测试
n 灵活的桩函数机制
n 完全支持回归测试
n 代码高亮显示的覆盖率分析
n 不止针对单元测试的代码覆盖率分析(包括应用程序级的测试)
n 使用图形界面和命令行方式进行全面团队部署
运行时错误检测
n 通过简单的功能测试
识别复杂的内存相关的问题—例如:
l 内存泄漏
l 空指针
l 未初始化的内存
l 缓冲区溢出
n 从应用程序运行过程中收集代码覆盖率
n 通过在实际目标环境中监测应用程序以提升测试结果的准确性
简化代码审查
代码审查是已知的发现代码缺陷有效的方法。然而不幸的是,许多组织没有充分利用代码审查,因为他们认为这需要做大量的工作。 C++test 的代码审查模块自动准备,通知,和跟踪同行代码审查,实现了一个非常有效的面向团队的过程。 所有代码审查的状态,包括全部审查者的注释,都由 C++test 基础设施来维护和自动地分配。C++test 支持两种典型的代码审查流程:
n 提交后代码审查。这个模式是通过自定义的源码控制器接口来自动地识别源代码库中的代码变化, 并且根据预先设定的关于更改的代码到审查者的映射来创建代码审查任务。
n 提交前代码审查。 用户可以通过选择一个为审查而分配的文件集合来从图形界面开始一个代码审查,或者自动地识别所有本地修改的源代码。 - 团队代码审查的功效通过 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 重新运行这些测试并将当前的结果与原来捕获的”黄金集合(goldenset)”相比较。它可以很容易地被配置为使用不同的执行设置,测试用例,和桩函数以支持在不同环境中的测试(例如, 不同的持续集成阶段, 测试不完整的系统, 或者测试一个完整系统的特定部分)。 - 先进的单元测试功能
n 自动生成测试用例和桩函数
n 根据观察到的测试结果自动生成断言
n 图形化测试用例向导增加和修改自定义的测试用例
n 对测试用例和桩函数源代码的完全可视性和可编辑
n 智能,灵活的桩函数功能
n 参数化测试和桩函数
n 符合 DO-178B 标准的多种覆盖率分析(包括 MC/DC)
n 灵活地支持持续的回归测试
n 按照缺陷和需求来注释测试用例
n 在调试器下执行测试用例
n 在特殊模式下测试模板代码 - 可配置的详细报告
C++test 的 HTML, PDF 和自定义格式的报告可以通过GUI 控件或一个选项文件来配置。标准报告包括有通过/失败的代码分析和测试结果的概要,已分析文件的列表,和一个代码覆盖率概要。此报告可以进行自定义,以包括活动的静态分析检查的清单, 具有单独测试的通过/失败状态的扩展测试输出, 对于关键指标的趋势图参数,和用颜色表明的所有代码覆盖率结果的完整代码清单。 生成的报告可以根据各种角色的过滤器通过邮件被自动地发送。除了直接提供数据给负责缺陷所标记代码的开发人员, C++test 也发送概要报告给管理人员和团队负责人。
仪表板跟踪关键的开发指标
高效的团队部署
C++test 建立了一个高效的过程以确保软件验证任务被植入到团队的现有工作流程中并且自动地—使团队更加专注于真正需要人类智慧的任务。通过自动化任务安排和分配使缺陷审查和纠正更加容易。每个检测到的缺陷通过区分优先顺序,被安排给相应编写这部分代码的开发人员,并分配完整数据和代码的交叉链接到他的或她的 IDE 中。为了帮助管理人员评估和记录趋势,集中化的报告能够确保对质量状态和过程实时监控。这些数据同样帮助确定是否需要进一步的行动以满足内部目标或证明策略的遵从性。
支持嵌入式和跨平台开发
随着嵌入式系统中的软件组件变得越来越重要,全面提升了质量在嵌入式软件中的关注度。长期存在的质量对策,例如使用调试器做测试变得不再有效或不够充分。更加复杂的问题是,许多开发人员不能轻易地在实际的部署环境中运行一个测试程序,因为他们无法访问最后的系统硬件。为了应对这些挑战,需要在整个开发生命周期中实现代码质量—在自动化实施和监测的协助下,协同使用一个被时间证明的早期缺陷预防技术。
对于要求高品质的行业,例如航空,医疗,汽车,运输,和工业自动化, Parasoft 基于 Web 交互式仪表板和具有 SQL数据库支撑的数据细分能力的统计和报告系统,通过让遵守情况可视化来实现高效和可度量的质量过程。- 在宿主机,模拟器 和目标机上测试
C++test 自动化实施完整的测试执行流程, 包括测试用例生成,交叉编译,部署,执行,和加载结果 (包括覆盖率指标)返回到 GUI 中。可以为自动的测试执行来从 GUI 或命令行交互地驱动测试, 以及批处理回归测试。在交互模式中,为了方便调试或验证用户可以单独地或在选中的组中运行测试。 对于批处理执行,用户可以针对指定的代码,它们的名称或者在磁盘上的位置来执行测试。 - C++test 可自定义的工作流程使用户能够按照代码开发的方式来进行测试,并使用相同的测试套件来确认目标环境下的功能性/可靠性问题
高度的可定制化
C++test 允许用户完全自定义测试执行流程。除了使用内建的自动化测试以外,用户可以包含自定义的测试脚本和 shell命令来使工具符合他们具体的构建和测试环境。
通过交叉编译为预期的目标环境所提供的运行时库,C++test可以被广泛的用于多种嵌入式操作系统和结构体系。C++test 的所有测试中间产物的源代码都可见,因此完全可以移植。