当程序员讨论测试时,经常出现的一个问题是多少才足够?我需要获得100%的保险吗?让我们首先解决房间里的大象:完全测试一个软件是不可能的。不相信我?一书中描述的100行程序有多达1018条独特的路径。实际上,当您意识到当代软件通常超过数十万甚至数百万行代码时,您很快就会意识到完全测试一个软件是多么不切实际。
一次正在度假,接到一个来自世界偏远地区的卫星电话,告诉我我正在执行的任务是“在饮料中”——一种委婉的说法,表明预计飞行的飞行器在水下。最后,它被证明是由于生锈的螺母而导致的故障,但在调查该故障的过程中,我们通过安全关键代码发现了许多路径,这些路径未被我们的测试制度所涵盖。虽然在接下来的几个月里解决了所有问题,但我的假期很难享受,因为我不知道发生了什么。
那么多少软件测试才足够呢?这是任务和安全关键型软件项目解决的问题,可以从中吸取一些宝贵的经验教训。最基本的方法是测试,测量,重复。这里提到的测量是结构覆盖分析,或代码覆盖率。许多行业标准(例如,航空航天的DO-178和汽车的ISO 26262)要求使用代码覆盖率作为证明测试完整性的唯一手段。
结构覆盖率分析是对给定测试或一组测试执行的代码结构的度量。最基本的指标之一,语句覆盖率 (SC),衡量通过测试执行的代码语句。更严格的度量是决策覆盖率 (DC),它包括 SC 的目标以及测量从代码中的每个决策点获取的决策路径。更严格的是修改条件/决策覆盖率(MC / DC),其中包括DC的目标以及测量决策点中每个条件的值。所有这三种测量都是由DO-178标准强制要求的。
代码覆盖率通常以百分比表示,软件测试越彻底,代码覆盖率越高,软件包含缺陷的可能性就越小。
安全关键型软件标准高度关注如何有效地测试软件。他们指出,有效的软件测试需要一种规范的方法,其中代码覆盖率用于提供有关迄今为止测试有效性的反馈。应用于系统的测试严格程度必须由系统故障的影响决定。后果越严重,测试必须越严格。
然而,需要注意的是;100%的覆盖率并不一定转化为有效的测试。以最大化代码覆盖率为目标的测试可能会遗漏代码中的重要问题,而严格测试有助于识别这些问题,例如:
• 与需求相关的错误• 缺少代码
• 与数据流相关的错误
• 争用条件
• 硬件兼容性/配置
尽管如此,作为测试完整性和严谨性的衡量标准,代码覆盖率是无与伦比的,每个软件开发项目都应该采用。
审核编辑:郭婷
-
飞行器
+关注
关注
13文章
728浏览量
45678 -
代码
+关注
关注
30文章
4841浏览量
69208
发布评论请先 登录
相关推荐
分析C语言代码结构的设计问题
英诺达发布全新静态验证产品,提升芯片设计效率
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
利用静态检查工具完善功能安全中测试覆盖率
![利用静态检查工具完善功能安全中测试<b class='flag-5'>覆盖率</b>](https://file1.elecfans.com/web2/M00/05/4E/wKgZombZBlyAKTM5AABgbFGSCIA155.jpg)
智能网联是否是自动驾驶落地的必要条件?
TL084方向比例放大器中的平衡电阻是否必要?
2025年智能水表将覆盖全北京!超声波测量技术助力智能水表实现全天候高精度流量监测
![2025年智能水表将<b class='flag-5'>覆盖</b>全北京!超声波测量技术助力智能水表实现全天候高精度流量监测](https://file.elecfans.com/web1/M00/F0/CC/o4YBAGCt64uASn7SAACOQ25eVjs910.jpg)
单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级覆盖率、代码访问分析、增强覆盖率审查
![单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级<b class='flag-5'>覆盖率</b>、<b class='flag-5'>代码</b>访问<b class='flag-5'>分析</b>、增强<b class='flag-5'>覆盖率</b>审查](https://file1.elecfans.com//web2/M00/FA/AC/wKgaomaLoUyANINfAAA0otRbLaM96.webp)
如何将SystemVerilog断言属性和覆盖属性置于在设计上?
![如何将SystemVerilog断言属性和<b class='flag-5'>覆盖</b>属性置于在设计上?](https://file1.elecfans.com/web2/M00/EA/A7/wKgaomZVQn6AcfRaAABL-Zqip2I038.jpg)
在Flexible Safety RTOS安全应用中集成X-CUBE-STL的步骤
![在Flexible Safety RTOS安全应用中集成X-CUBE-STL的步骤](https://file1.elecfans.com/web2/M00/C4/7A/wKgZomXzzEyAZ6PUAAAgoAqS3Ig386.png)
AI(VSO)赋能的VCS验证流程
![AI(VSO)赋能的VCS验证流程](https://file1.elecfans.com/web2/M00/C3/33/wKgaomXhcJGAfmSLAAAxz69Z7JM774.png)
评论