循环复杂性和基础路径

Pav*_*l_K 1 testing unit-testing

让我们考虑一下我们有以下方法:

public void testIt(boolean a, boolean b){
   if (a && b){
   ...
   }
   if (a){
   ....
   }
}
Run Code Online (Sandbox Code Playgroud)

该方法的循环复杂度= 3.因此,根据基础路径测试,我们应该进行3次测试,以实现陈述和决策覆盖.但是,我看到我只能使用两个测试(true,true)和(false,false)来实现语句和决策覆盖.我的错误在哪里?

Old*_*Fox 7

是的,你是对的.Cyclomatic复杂度为3,您应验证的案例是:

  1. a是假的,b - 我们不在乎(我后来解释......) - >什么也没发生

  2. a是真,b是假 - >只执行了第二个条件

  3. a和b都是真的 - >第一个和第二个条件都被执行了

如果你只查看参数,我提到的第一个选项有2个不同的输入(b true/false),但是在这两种情况下都应该发生相同的情况,所以我建议你只验证一次或使用等效的C#测试用例属性