我有一些关于 MC/DC 和逐级测试的问题

问题描述 投票:0回答:2

最近开始从事软件测试工作,有一些疑问。

成对测试是这个参数可以有的所有值的组合,它也适用于布尔表达式吗?

例如,

布尔表达式为 (A || B) && C (假设每个参数只有0和1。)

这里,是否适用于Boolean Exp ??

第二个问题是关于MC/DC的。

我学会了如何通过MC/DC制作测试用例

但是,我想知道 MC/DC 如何证明覆盖了几乎 90% 的代码覆盖率?

在(A || B) && C中,我猜测有4个组合测试用例。

但是,所有组合都是8个。MC/DC如何减少病例呢?

testing white-box-testing
2个回答
0
投票
  1. 它适用于布尔表达式吗?

是的。它适用于布尔表达式。

Truth Table

获取布尔表达式的所有可能组合,我们可以得到上面的真值表。


  1. 如何证明 MC/DC 覆盖了近 90% 的代码覆盖率?

MC/DC 无法保证超过 90% 的code 覆盖率。但是,它可以确保决策分支条件覆盖率,它们是一段代码的组成部分。

但是,它怎么能证明覆盖呢?

答案在于 MC/DC 准则的属性:

  • 布尔表达式中的每个条件都应该采用所有可能的条件 结果。
  • 每个决定都会带来所有可能的结果。
  • 每个条件都会独立影响决策的结果。

因此已经考虑了每个条件的布尔结果(TRUE/FALSE),并且这些条件的布尔结果(决策)的组合将产生每个可能的值(TRUE/FALSE)。


  1. MC/DC 如何减少病例?

当您识别 MC/DC 对时,您将得出此表:

MC/DC Pairs

其中一些配对是相似的。为什么?因为当你计算布尔表达式时,你可以短路一些条件。这意味着即使至少有一个条件没有被评估,你的表达式也可以做出决定。

Final MC/DC Test Cases

这将是最终结果。请注意,某些行具有 (-) 空值。这意味着它没有被评估,但可以推断出决定。


虽然相关,但不相关,我在这里写了一篇文章:MC/DC 如何加速单元测试创建

尽管迟到了,但希望这能有所帮助。 :D


0
投票

MC/DC 测试有助于发现死代码。为了获得 100% 的 MC/DC 覆盖率,输入的每次变化都会影响输出。

对于条件“(A || B) && C”,有 3 个输入:至少需要 4 个测试用例 (n+1)。

A B C:是 1 0 1: 1 1 0 0: 0(C 从第一次测试更改) 0 0 1: 0(A 从第一次测试更改) 0 1 1: 1(B从第三次测试更改)

MC/DC 测试无法确认代码是否正确实现为 (A || B) && C。 如果使用串联输入,例如“(A或B)和(not(A)或C)。not(A)应被视为另一个输入。因此至少需要5个测试用例。

© www.soinside.com 2019 - 2024. All rights reserved.