考虑以下高级程序设计并假设您可以
提供today
,A
,B
和C
的值:
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%的决策覆盖率
最少数量的测试用例(值的顺序为today
,A
,B
,C
)?
一个。星期一,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
我查了一下答案,这是一个。但是怎么样?有人可以用最简单的方式向我解释这个吗?我根本不明白!
答案 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 =
除Monday
或Wednesday
允许这样做的测试用例
B
和C
,B >= C
,其他值无关紧要B
和C
,B < C
,today = Monday
B
和C
,B < C
,today = Wednesday
B
和C
,B < C
,today =
Monday
或Wednesday
“a”中的测试用例列表满足这四组标准。他们按照我提出的顺序,可能并非巧合。
A
根本不重要,因为任何决定都不会使用A
。
回到第二个B < C
:B
必须小于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