【答案解析】白盒测试是很重要的一种测试方法,测试人员可以很清楚已经有多少代码被检查过了。而且通过测试结果,可以准确地预测出系统中的程序设计错误的数量规模。
覆盖测试是一种白盒测试方法,通常应用在软件测试的早期,即单元测试阶段。其基本思路是以程序的内部结构为基础来设计测试用例,以覆盖尽可能多的程序内部逻辑结构,发现其中的错误和问题。测试人员必须事先拥有被测程序的规格说明书和程序清单。
在白盒测试用例设计中,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等几种常见的覆盖测试策略,这些策略的相关描述及发现错误的能力如表2所示。从表中可得知,试题中所罗列的6种覆盖测试的策略中路径覆盖是最强的覆盖准则,因此(6)空缺处可填入“路径覆盖”。
[*]
可以先画出图1所给程序段的程序流程图,如图2所示。
[*]
图2 某功能模块的部分程序流程图 结合表2中给出的语句覆盖测试策略的描述,选择足够多的测试用例数据,使被测程序中每条语句都至少执行1次。对于本案例的程序段,可选择测试数据组Ⅰ(x=0,y=3),满足“(x=0) and (y>2)”的判断条件,使A语句被执行1次;可选择测试数据组Ⅱ(x=1,y=2),不满足“(x<1) or (y=1)”的判断条件,使B语句被执行1次。因此(7)空缺处应选择选项A(Ⅰ和Ⅱ组)。
结合表2中给出的判定覆盖测试策略的描述,选择足够多的测试用例数据,使得程序中每个判定都获得1次“真”值和“假”值,或者说使程序中每1个取“真”分支和取“假”分支都至少通过1次。对于本案例的程序段,可选择测试数据组Ⅰ(x=0,y=3),使判断条件“(x=0) and (y>2)”的“真”分支执行1次;可选择测试数据组Ⅱ(x=1,y=2),使判断条件“(x<1) or (y=1)”的“假”分支执行1次;可选择测试数据组Ⅲ(x=-1,y=2)或选择测试数据组Ⅳ(x=3,y=1),使判断条件“(x<1) or (y=1)”的“真”分支执行1次。
条件覆盖测试策略的本质是:构造一组测试用例数据,使被测程序中每一个判定语句的每个逻辑条件的可能取值至少满足1次。对于本案例的程序段要实施条件覆盖测试,可选择测试数据组Ⅰ(x=0,y=3),以同时满足判断条件“(x=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)的取值条件。因此(8)空缺处应选择选项G(Ⅰ、Ⅲ和Ⅳ组)。
结合表2中给出的判定/条件覆盖测试策略的描述,构造一组测试用例数据,使得判定中的每个逻辑条件取得各种可能的值,并且使得每个判定取得各种可能的判定结果。结合以上分析结论,可知对于本案例的程序段,选择测试数据组Ⅰ(x=0,y=3),同时满足判断条件“(x=0)and (y>2)”中(x=0)和(y>2)的取值条件,且使得该判断条件的“真”分支执行1次。
选择测试数据组Ⅱ(x=1,y=2),使判断条件“(x=0) and (y>2)”的“假”分支执行1次;同时不满足“(x<1) or (y=1)”的取值条件,且使判断条件“(x<1) or (y=1)”的“假”分支执行1次。
选择测试数据组Ⅲ(x=-1,y=2),满足判断条件“(x<1) or (y=1)”中(x<1)的取值条件,且使得使该判断条件的“真”分支执行1次,使判断条件“(x=0) and (y>2)”的“假”分支执行1次。
也可选择测试数据组Ⅳ(x=3,y=1),满足判断条件“(x<1) or (y=1)”中(y=1)的取值条件,且使得使该判断条件的“真”分支执行1次,使判断条件“(x=0) and (y>2)”的“假”分支执行1次。
对于条件组合覆盖测试策略,其含义是选择足够多的测试用例数据,使被测程序中每个判定中逻辑条件的各种组合都至少出现1次。对于本案例的程序段,要实现条件组合覆盖测试工作所需的测试用例见表3。
{{B}}表3 条件组合覆盖测试的测试用例{{/B}}
|
| 逻辑条件 |
测试数据组 |
逻辑条件 |
测试数据组 |
| x=0 |
y>2 |
x |
y |
x<1 |
y=1 |
x |
y |
| F |
F |
1 |
1 |
F |
F |
1 |
2 |
| F |
T |
1 |
3 |
F |
T |
3 |
1 |
| T |
F |
0 |
1 |
T |
F |
-1 |
2 |
| T |
T |
0 |
3 |
T |
T |
-1 |
1 |
结合表2中给出的路径覆盖测试策略的描述,选择足够多的测试用例数据,使被测程序中每一条可能的路径至少执行1次。对于本案例的程序段主要有3条路径:①执行判断条件“(x=0) and (y>2)”“真”分支的路径;②执行判断条件“(x=0) and (y>2)”“真”分支的路径;③执行判断条件“(x=0) and (y>2)”“假”分支的路径。
选择测试数据组Ⅰ(x=0,y=3),同时满足判断条件“(x=0) and (y>2)”中(x=0)和(y>2)的取值条件,使得该判断条件的“真”分支路径被执行1次。
选择测试数据组Ⅱ(x=1,y=2),同时不满足判断条件“(x<1) or (y=1)”中(x<1)和(y=1)的取值条件,使得该判断条件的“假”分支路径被执行1次。
选择测试数据组Ⅲ(x=-1,y=2),满足判断条件“(x<1) or (y=1)”中(x<1)的取值条件,或者选择测试数据组Ⅳ(x=3,y=1),满足判断条件“(x<1) or (y=1)”中(y=1)的取值条件,使得使该判断条件的“真”分支路径被执行1次。
由以上分析可知,(9)、(10)空缺处可分别填入选项F(Ⅰ、Ⅱ和Ⅲ组)、选项H(Ⅰ、Ⅱ和Ⅳ组)。