嵌入式单元测试技术

发表于:2009-5-31 14:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

分享:

  一些值得考虑的问题

  在宿主环境下进行测试可能意味着用以创建代码的编译器和目标系统编译器不同。如果交叉编译器提供商同时提供用在宿主环境下的编译器(例如Green Hills Software的本地编译器),则可以直接使用。如果没有,则可以使用支持大多数平台的GNU Compiler Collection(GCC)。虽然保证代码在宿主编译器和目标编译器上的一致性会对维护成本有些许的提升,但是与早期测试对整个项目带来的好处相比却是很合算的。

  单元测试不大可能发现因同步错误造成的应用程序级的错误条件或者与实际设备接口的错误。尽管如此,在嵌入式系统的开发过程中,单元测试能帮助开发者尽早地发现很多类错误,所以提高了系统整体开发效率并且消除了测试瓶颈。

  使用C++test来自动化单元测试过程

  用户可以使用Parasoft C++test来自动化对嵌入式系统软件的测试。

  Parasoft C++test是一套经广泛验证的最佳编码实践的自动化解决方案,它能有效地提高软件开发团队的开发效率以及软件的质量。C++test能帮助用户进行编码策略增强、静态代码分析、全面代码走查以及单元和组件测试,从而为用户保证其C以及C++代码按预期运行提供一个实际可行的方法。C++test可以在桌面环境下的主流IDE(包括Wind River Workbench以及Eclipse)以及回归测试过程中的命令行中以批处理的方式运行。C++test集成了Parasoft的GRS报告系统,它能提供一个基于Web交互界面的报表并为用户提供向下挖掘(drill-down)功能,基于C++test报告的这些结果,开发团队实时把握项目状态和趋势以及其它关键指标。

  对于嵌入式以及交叉开发而言,C++test可以在基于宿主环境和目标环境下执行代码分析以及数据流分析。在宿主环境中,开发者可以通过C++test的编码策略增强、静态代码分析、全面代码走查以及单元和组件测试模块来对代码进行“随时测试”式的验证以及回归测试。被测代码的外部依赖性被桩函数自动地取代,桩函数能真实地模拟硬件以及其它代码在实际运行中的表现。

  图2:Wind River Workbench中的C++test插件能为其用户提供一个简便的方法来使用C++test进行完整的代码分析和单元测试。

  通过扩展的基于宿主环境的测试,C++test能让用户在某个模块代码完成后立即对其进行测试,即使此时目标环境还未准备好或不能进行测试。这样,绝大部分的潜藏在程序中的逻辑问题都能够在早期被发现,从而让开发者修复这些错误变得十分迅捷,而在目标硬件平台上的测试则能更加注重于验证软硬件接口问题。此外,基于宿主环境的测试相对于目标系统而言更加容易自动运行和维护,这使得用户可以不用其它嵌入式开发工具就可以验证相对平台独立的代码正确性。

  当开发者在仿真器或实际目标硬件平台上进行测试时,在宿主环境下生成和优化过的测试套件可以被重用来验证软件在目标硬件上的功能性。先前的桩函数这时可以用实际代码或者系统接口来代替从而完成完整系统的测试,而不需要修改测试代码。C++test同时还提供一个内建功能来自动捕捉执行测试输出以及将其转变成后续回归测试时的“黄金”数据集。

  C++test让整个测试流程自动进行,包括测试用例生成、交叉编译、部署、执行以及将测试结果(包括覆盖率指标)导入GUI。测试可以通过GUI交互地进行或者通过命令行自动执行,以及以批处理的方式进行的回归测试。在交互模式下,用户可以对单个模块或者一组代码进行测试,从而让调试和验证都变得更简单。在批处理模式下,测试可以针对用户提供的代码或者根据文件名字或在磁盘中的位置来进行。

  同时,C++test还支持将其执行顺序进行完全的用户自定义。除了内建的自动化测试,用户还可以引入自定义测试脚本以及通过shell命令将测试工具根据代码具体结构和测试环境进行自定义。C++test的运行库也能被自定义并且针对不同的目标操作系统进行交叉编译。这种无可比拟的灵活性能够任意实现其希望的测试流程而不需要预设工具的功能。

  图3:C++test的可自定义工作流程让用户可以根据代码的构造来进行测试,然后使用这个测试套件在目标硬件环境下测试其功能性和可靠性。

  嵌入式开发支持的单元测试

  • 真正的单元(函数/类)和组件测试
  • 自动生成C或C++格式的测试套件
  • 支持数据源
  • 单一测试或者任意测试的任意组合方式的交互执行
  • 捕捉实际测试结果后自动生成回归测试套件
  • 宿主平台和目标平台的统一测试环境
  • 测试流程完全可自定义并提供运行时支持
  • 语句、代码块、分支/条件以及路径指标覆盖率分析
  • 提供HTML和XML格式的测试结果报告
  • 支持GUI/桌面环境以及命令行方式

  支持的目标编译器

  • Wind River GCC 3.4.x和DIAB 5.4+
  • GCC 2.95.x – 4.1交叉编译器
  • Green Hills 4.0.x
22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号