unit-testing - 针对条件 (A && B && C) || 执行 MCDC D

标签 unit-testing code-coverage mc-dc

我遇到一种情况,我需要编写一些测试用例才能完全覆盖代码。 在特定分支我遇到以下情况 if((A && B && C) || D)

if((A && B && C) || D)
{
  //perform task 1'
}
else
{
  //perform task 2;
}

但是这样我无法获得 MCDC 的测试用例组合.. 这里的出路是什么......

最佳答案

你的出路可能是使用工具 MCDC识别可能的测试用例。

由于有许多可能的测试对组合,手动执行此操作可能确实需要大量工作。

很抱歉,我无法分享我的研究的所有细节。我建议首先阅读由 FAA 发布的“对三种形式的修改条件决策覆盖 (MCDC) 标准的调查”(DOT/FAA/AR-01/18)。

包括屏蔽在内,有 52 个可能的测试对。如果您进行适当的白盒分析,包括 bool 快捷方式评估,那么您甚至会发现 63 个 MCDC 测试对。应用集合覆盖算法将产生 3 个可能的最小测试集。

进行一些启发式操作将得出可能令人惊讶的测试向量:

 Test Pair for Condition 'a':    0  14   (Unique Cause)
 Test Pair for Condition 'b':    8  14   (Unique Cause)
 Test Pair for Condition 'c':   12  14   (Unique Cause)
 Test Pair for Condition 'd':    0   1   (Unique Cause)

测试向量:推荐结果:0 1 8 12 14

0:   a=0  b=0  c=0  d=0    (0)
1:   a=0  b=0  c=0  d=1    (1)
8:   a=1  b=0  c=0  d=0    (0)
12:  a=1  b=1  c=0  d=0    (0)
14:  a=1  b=1  c=1  d=0    (1)

关于unit-testing - 针对条件 (A && B && C) || 执行 MCDC D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37671985/

相关文章:

unit-testing - C# - 单元测试 - 如何计算代码覆盖率

c# - 对调用同一对象上的另一个公共(public)函数的函数进行单元测试的正确方法是什么?

unit-testing - 在 iTextSharp 中测试代码

node.js - 如何让 Istanbul 报告 Lab/Hapi.js 测试的覆盖范围?

unit-testing - 如何使用 nyc Istanbul CLI reporter 为每个文件设置阈值?

unit-testing - java中的修改条件/决策覆盖率分析工具

code-coverage - MC/DC - 如何管理非 100% 覆盖率的决策

c# - vstest.console.exe 未发现 xunit 测试

c# - 我应该明确断言计数还是结果?