问题
单项选择题
某C语言子程序如下。
int a:=0;
if (x==0 && y>2)
a:=1/*A语句*/
else
if(x<1 || y==1)
else
a:=2/*B语句*/
其中x,y是两个已定义的整型变量。如表6-2所示给出了可供选择的4组测试数据组,则实现条件覆盖至少应采用的测试数据组是 (54) 。
表6-2 测试数据组表
变 量 | x | y |
测试数据组Ⅰ | 0 | 3 |
测试数据组Ⅱ | 1 | 2 |
测试数据组Ⅲ | -1 | 2 |
测试数据组Ⅳ | 3 | 1 |
A.Ⅰ和Ⅱ组
B.Ⅰ、Ⅱ和Ⅲ组
C.Ⅰ、Ⅱ和Ⅳ组
D.Ⅰ、Ⅲ和Ⅳ组
答案
参考答案:D
解析:[要点解析] 在白盒测试用例设计中,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等常见的覆盖测试策略,这些策略的相关描述及发现错误的能力如表6-10所示。
[*]
条件覆盖测试策略的本质是:构造一组测试用例数据,使被测程序中每一个判定语句的每个逻辑条件的可能取值至少满足次,本试题程序段的程序流程图如图6-12所示。
[*]
对该程序段实施条件覆盖测试,可选择测试数据组Ⅰ(x=0,y=3),以同时满足判断条件(z=0)and(y>2)中x=0和y>2的取值条件:可选择测试数据组Ⅲ(x=-1,y=2),以满足判断条件(x<1)or(y=1)中x<1的取值条件;可选择测试数据组Ⅳ(x=3,y=1),以满足判断条件(x<1)or(y=1)中y=1的取值条件。因此本试题的正确答案是选项D。
对本试题程序段实施语句覆盖至少应采用的测试数据组是Ⅰ和Ⅱ组(即选项A);实现路径覆盖至少应采用的测试数据组是“Ⅰ、Ⅱ和Ⅲ组(即选项B”或“Ⅰ、Ⅱ和Ⅳ组(选项C)”。