为了开发安全可靠的软件,测试是质量保证中不可或缺的一部分。如果没有充分和记录在案的测试,就不可能确定软件是否安全且功能正确。在这种情况下,代码覆盖率(测试覆盖率)的测量尤为重要。这是因为它可以用来确定一个软件已经被测试的全面程度。代码覆盖率表示测试代码占总代码的比例。例如,简单来说,如果在测试期间运行四分之三的选项,代码覆盖率为 75%。
特别是在安全关键的软件开发中,行业标准对代码覆盖率提出了精确的要求,因此如果没有足够的测试覆盖率证明,产品就无法在这里获得认证。而且在其他开发项目中,公司越来越重视软件质量和衡量代码覆盖率。
市场上有多种代码覆盖分析器可用于测量代码覆盖。它们在处理和质量方面存在显着差异。出于这个原因,我们展示了选择代码覆盖工具的十个基本标准:
- 独立于编译器
当然,代码覆盖工具必须与项目中使用的编译器配合使用。然而,依赖一个从一开始就可以独立于编译器使用的工具是很有意义的。这样的工具可以在所有项目中使用,在编译器更改的情况下也可以在当前项目中使用。可以独立于编译器使用的覆盖工具可以以更加多样化的方式使用,因此是一项值得的投资。
- 易用性
如果最好的软件不必要地复杂或没有经过深思熟虑,则不情愿地(因此很少)使用它。另一方面,简单的处理可以显着提高用户对使用测试覆盖率工具的接受度。理想情况下,该工具在后台运行,并且在测试期间不会为用户生成任何额外的工作。
- 覆盖报告的可理解性
在评估覆盖率报告时,应该一目了然地清楚代码的哪些部分已经过测试,哪些部分仍然缺乏覆盖率。使用良好的覆盖工具,测试人员可以轻松地在源代码级别识别哪些测试用例仍然未完成。通过执行这些缺失的测试,可以有针对性地增加代码覆盖率。同时,这避免了因冗余测试而导致的不必要的工作。
4. 支持更高的安全关键开发覆盖水平
对于安全关键软件的测试,标准(例如汽车领域的 ISO 26262、航空领域的 DO-178C 和铁路运输领域的 EN-50128)规定了高达 MC/DC 覆盖的高覆盖水平。因此,必须确保覆盖工具支持所有所需的覆盖级别。为了能够长期使用解决方案,不仅应该考虑当前的需求,还应该考虑未来的需求。重要的是要知道:许多覆盖工具仅提供决策或分支覆盖,因此不足以用于安全关键软件开发。
. 灵活集成
即使在公司内部,开发环境和工具链也常常是异构的。覆盖工具应该可以轻松应对所有这些不同的环境。必须能够无缝集成到相应的构建过程和测试的执行中,并且无需付出太多努力。如果该工具也可以通过命令行使用,则在创建自动构建方面具有优势。
- 低仪器开销
大多数覆盖率工具通过检测源代码来测量代码覆盖率。带有“计数器”的覆盖工具丰富了源代码,它计算测试期间相关代码部分的执行位置和执行频率。但是,这会增加原始代码的大小。因此,在对内存有限的嵌入式目标进行测试时,应注意尽可能降低这种所谓的仪器开销。有时,各个代码覆盖率工具之间的内存需求差异很大。例如,Verifysoft Technology 的代码覆盖分析器 Testwell CTC++ 在这方面非常节省资源。
- 支持不同的编程语言
公司经常使用不同的编程语言或计划在未来引入其他语言。因此,从一开始就选择支持所有或尽可能多的这些语言的工具是有意义的。
- 支持“创意”编程
一些覆盖工具在分析偏离通用标准或具有高嵌套深度的语言结构时会遇到问题。然而,衡量测试覆盖率的好工具还应该能够应对“创造性”的编程风格。
- 安全关键软件开发的适用性
在开发安全关键软件时,相关标准要求整个工具链都必须合格。这里的目的是证明覆盖分析器和整个工具链中使用的其他工具都能可靠地工作。专业代码覆盖工具制造商通过认证套件和工具认证建议支持软件项目。在这种情况下,还应注意所选的覆盖工具是否已成功用于安全关键项目。
- 评估许可证、技术支持和客户参考
应在工具评估期间检查覆盖工具对自己项目的适用性。在此期间,您已经对技术支持的表现有一个印象。是否也可以通过电话或仅通过电子邮件获得支持?支持人员的能力如何?响应时间如何?用户手册有多好和有多实用?制造商是否也提供培训?最后但并非最不重要的一点是,还建议查看制造商的客户参考资料。这些可以提供有关覆盖分析器质量和供应商性能的更多信息。
结论
代码覆盖对于安全关键软件开发来说是强制性的,这是有充分理由的。但对于任何想要提高软件质量的人来说,这也是一个很好的方法,可以衡量和增加测试的覆盖范围和价值。在选择代码覆盖分析器时,必须注意确保该工具满足设置的要求。此外,易用性和专业支持等因素也起着重要作用。如果使用得当,一个好的测试覆盖率工具有助于显着提高质量,增加开发人员和测试人员的积极性,并以节省成本的方式执行测试。
相关实战:https://www.99qibang.cn/information/50bf3eeb78fc402786e8dfb8c8c908d7.html
https://www.99qibang.cn/information/6d9ff7241fb44440bcce931a9fdae89a.html
https://www.99qibang.cn/information/6d9ff7241fb44440bcce931a9fdae89a.html