软件测试 - 以下哪组值将以最少的测试用例实现100%的决策覆盖率?

时间:2016-05-15 01:06:01

标签: testing

考虑以下高级程序设计并假设您可以 提供todayABC的值:

Start;
While B < C
  If today = Monday
     set A = 1
  elseif today = Wednesday
     set A = 2
  Endif;
  If B < C
     B = B + 1
  Endif;
Endwhile;
End;

以下哪组值将达到100%的决策覆盖率 最少数量的测试用例(值的顺序为todayABC)?

一个。星期一,1,3,3;星期一3,2,4;星期三,1,2,3;星期二,5,3,4

湾星期一,1,2,4;星期三1,2,4

℃。星期一,5,1,1;星期二,5,1,2;星期三,5,1,2

d。星期一,5,3,2;星期一,5,1,1;星期一5,2,3;星期二,4,4,3; 星期三,1,2,3

我查了一下答案,这是一个。但是怎么样?有人可以用最简单的方式向我解释这个吗?我根本不明白!

2 个答案:

答案 0 :(得分:0)

该代码中的决定是

  • B < C#1
  • today = Monday
  • today = Wednesday
  • B < C#2

我们暂时忽略第二个B < C

只有在第一个决定为真的情况下,才能达到除第一个决定之外的所有决定。要退出每个决策,您需要在某些测试用例中满足以下所有条件:

  • B < C是假的
  • B < C为真,today = Monday
  • B < C为真,today = Wednesday
  • B < C为真,today =MondayWednesday
  • 以外的任何内容

允许这样做的测试用例

  1. 任何BCB >= C,其他值无关紧要
  2. 任何BCB < Ctoday = Monday
  3. 任何BCB < Ctoday = Wednesday
  4. 任何BCB < Ctoday = MondayWednesday
  5. 以外的任何内容

    “a”中的测试用例列表满足这四组标准。他们按照我提出的顺序,可能并非巧合。

    A根本不重要,因为任何决定都不会使用A

    回到第二个B < CB必须小于C才能做出决定,因此如果我们做出决定,我们将始终采用其B < C分支。但是,我们永远不会采用其B >= C分支。四个测试用例是我们能做的最好的,但我们永远无法达到100%的决策覆盖率!分析告诉我们代码有问题,在这种情况下,B < C的第二次检查是不必要的。

答案 1 :(得分:0)

我认为这是一个错误。 实际的问题是: 考虑以下高级程序设计,并假设您可以 提供今天的A,B和C值:

Start;
Do until B = C
  If today = Monday
     set A = 1
   elseif today = Wednesday
    Set A = 2
    Set B = C
   Endif;
   If B < C
      B = B + 1
   Endif;
Endloop;
End;

以下哪组值将以最少的测试用例(值的顺序为今天,A,B,C)实现 100%决策覆盖率

a. Monday, 1, 3, 3; Monday 3, 2, 4; Wednesday, 1, 2, 3; Tuesday, 5, 4, 3
b. Monday, 1, 2, 4; Wednesday 1, 2, 4
c. Monday, 5, 1, 1; Tuesday, 5, 1, 2; Wednesday, 5, 1, 2
d. Monday, 5, 3, 2; Monday, 5, 1, 1; Monday 5, 2, 3; Tuesday, 4, 4, 3;
Wednesday, 1, 2, 3

a。是正确的答案,解释:星期一1.3.3覆盖决策“ Set = 1”

星期一3.2.4覆盖决策“如果B

enter image description here