问题 单项选择题

给定C语言程序:

int foo(intx,int y,int d)

{

if(x!=0){

if(y==0)d=d/x;

else d=d/(x*y);

}else{

if(y==0)d=0;

else d=d/y;

}

returnd;

}

当用路径覆盖法进行测试时,至少需要设计()个测试用例。

A.3

B.4

C.5

D.8

答案

参考答案:B

解析:

[分析]:

路径覆盖法是白盒测试的作用方法,要求设计足够多的测试用例,覆荒程序中所有可能的路径。给定程序的流程图如下图所示。

从图中可以看出,程序中共存在四条路径,分别记为abdh、abeh、acfh、acgh。当用路径覆盖法设计测试案例时,必须为每条路径至少设计一个用例。下面给出一组可覆盖全部路径的测试用例。

测试用例1:[(2,0,8),4],覆盖路径abdh

测试用例2:[(2,2,8),2],覆盖路径abeh

测试用例3:[(0,0,8),0],覆盖路径acfh

测试用例4:[(0,2,8),4],覆盖路径acgh

用例采用形式[输入的(x,y,d),返回的d]来描述。

单项选择题 A型题
单项选择题