parasoft c/c++嵌入式单元测试:测试套件,内存监控

相关成本

这篇文章中,我们测量ASR演示代码的单元测试达到100%语句覆盖率所需的时间。项目配置的时间不到10分钟。初始生成测试用例用了30秒。查看生成的测试用例花了一个小时,其中还包括对严重问题的分析和修正:

  • 有些功能没有针对传递空指针的保护措施(如前所述)。
  • “average”功能无法接收非常大的数据。检测到溢出。
  • “average”功能没有针对improperl- initialized结构的保护措施。

还有一个小时是为达到100%语句覆盖率而创建测试用例。总共花费不到3个小时,代码达到了100%的语句覆盖率(SIL 2),79%路径覆盖(SIL 3),以及59%的MC/直流覆盖(SIL4)。另外,代码问题已被检测出和修复了。创建了25个有质量保证的测试用例,其中两个是便于填充数据源的迭代。

内存监控

C++test带给我们的好处不仅仅是提高效率。首先,可以对所有运行的测试用例进行内存监控。要做到这一点,C++test 仪器代码用于监控其执行,然后运行它。如果检测到任何读/写出界;使用未初始化的变量;泄漏或类似运行时的缺陷,将会把这些错误报告出来。您不必亲自检测,就会得到运行时的错误代码。

回归测试套件

另一个好处是,我们为简化ASR代码建立了一个回归测试套件。 回归测试套件为修改代码时提供了一个安全网。你可以把它看成是植入代码的大量的传感器。一旦遇到问题,传感器就会发出警告。回归测试套件为代码修改提供了更多的可能。在它的保护下,你唯一要考虑的事情是:这次修复是否会导致弊大于利。在你进行单元测试的同时就可以建立这种回归测试套件。这的确是一个额外的惊喜!

单元测试用例通常在一个非常低的水平。它们并不能取代常规的功能测试,只是把它扩大。当然,这种“功能性”的测试用例越多越好。换句话说,创建的测试用例要努力模仿现实生活中的情况,而不只是为了得到一些额外的代码覆盖。建立这样的测试用例需要更多的努力。强大的测试套件可以帮助您捕捉真实的、显著的问题。如果想要确定这个修复的效果,你需要运行很多测试用例,甚至成百上千个。这种信任是无价的。

报告

实现了100%的语句覆盖并且通过了所有的测试用例,这些结果很值得高兴。但如果你想证明你的代码,你需要证明你 做到了这一点。为了这个目的,C++test可以生成报告。或者,你可以只保留手头上这些记录来证明你可以提供良好的,高质量的软件。

单元测试相关的功能安全

在前文中,我们提到了验证功能安全的问题。事实上,这是今天的关键问题和未来的电气/电子/ 电子系统问题。新的功能越来越多地触及安全工程领域。每个功能必须保持在接受的风险级别,称为安全功能。要实现功能安全,这些功能需要满足安全功能的要求(功能的作用)和安全完整性要求(函数的可能行为令人满意)。未来的发展和一体化需要安全功能的进一步加强,其中包括安全系统的发展流程和验证安全目标是否达到。

安全完整性等级

安全完整性等级(SIL) - 作为由IEC-61508标准定义的(四个级别之一(SIL1-SIL4))在给定的安全范围内应对危险故障。每个安全相关的系统功能都需要有相应的安全完整性等级分配。E / E / PE安全系统通常实现一个以上的安全功能。如果安全完整性要求这些具有不同的功能,那么他们之间要有充分的独立性。

 

你可能感兴趣的:(c,c,单元测试,嵌入式,内存监控,/,Parasoft,++test,测试套件)