gpt4 book ai didi

unit-testing - 代码覆盖是否应该考虑由短路引起的代码分支?

转载 作者:行者123 更新时间:2023-12-01 23:30:47 26 4
gpt4 key购买 nike

常规分支覆盖将需要两个单元测试来覆盖一个简单的 if 语句。但是如果有if (A && B)这样的组合条件,从控制流图的角度来看,如果使用短路,就会有一个额外的分支。这与给出 3 的圈复杂度计数一致(还应用每个逻辑运算符将复杂度增加 1 的规则,因为在短路的情况下会创建决策节点)。但据我所知,代码分析器不考虑那些分支。无论如何都值得覆盖它们以确保表达式的部分评估不会产生副作用吗?

最佳答案

当然,这取决于您分析代码的目的。

FAA 通常建议(例如 DOT/FAA/AR-06/54“软件验证工具评估研究”,最终报告,2007 年 6 月。第 4.2.5 节)短路运算符的所有操作数(包括 C 的三元运算符)运算符,以及 bool 运算符)被解释为决策 - 就像你描述的那样。对于更高的设计保证级别(特别是灾难性和危险性),根据相关标准(DO178、DO254 等)要满足的目标具有要求覆盖所有可能的决策的效果——在更高的 DAL 上增加独立性。

因此,假设您的应用程序需要更高的 DAL,答案通常是肯定的。另一种方法是构建一个特定的论据来支持这样的声明,即不需要这种覆盖来满足您的分析或测试的目标 - 并说服审阅者接受该论点。可能需要为每个短路实例构建这样的论点。

关于unit-testing - 代码覆盖是否应该考虑由短路引起的代码分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37066431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com