白盒测试习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题01

0401 逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语旬覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是( )。

语句段:

if(A&&(B||C)) x=1;

else x=0;

用例表:

A. ①TRUE ②FALSE ③TRUE

B. ①TRUE ②FALSE ③FALSE

C. ①FALSE ②FALSE ③TRUE

D. ①TRUE ②TRUE ③FALSE

0402 针对以下程序段,对于(A,B,C)的取值,以下( )测试用例能够满足语句覆盖的要求。

IF((A+10)=2 OR (B-20)<3) THEN C=0

IF((A+30)>10 AND (C-30)<0) THEN B=30

A. (2,30,1)

B.(-20,0,30)

C. (-30,20,30)

D. (2,20,3)

0403 为以下程序段,设计足够的测试用例满足语句覆盖。

if (x>8&&y>5) {

if(x>16||y>10) s1;

}

else {

if (x>0||y>0) s2;

else s3;

0404 针对下列程序段,需要()个测试用例才可以满足语句覆盖的要求。

switch ( value )

{

case 0: other = 30; break;

case 1: other = 50; break;

case 2: other = 300;

case 3: other = other / value; break;

default: other = other * value;

}

0405 对下面的个人所得税程序中,满足语句覆盖测试用例的是( ) 。

if (income < 800) tarrate = 0

else if (income <= 1500) tarrate = 0.05

else if (income < 2000) tarrate = 0.08

else tarrate = 0.1

A.income = (800, 1500, 2000, 2001)

B.income = (800, 801, 1999, 2000)

C.income = (799, 1499, 2000, 2001)

0406 阅读下列流程图:

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

A.2 B.4 C.6 D.8

输入数据条件预期结果x=0,y=0,d=0 FT d=0

X=0,y=2, FF d=d/2

x=2,y=0 TT d=d/2

x=1,y=2 TF d=d/(1*2) 0407

0408 针对下列C语言程序段,对于(MaxNum,Type),至少需要()个测试用例能够满足判定覆盖的要求。

while(MaxNum-->0)

{

if(10==Type)

x=y*2;

else

if(100==Type)

x=y+10;

else

x=y-20;

}

0409 为以下程序段,设计足够的测试用例满足判定覆盖。

if (x>8&&y>5) {

if(x>16||y>10) s1;

}

else {

if (x>0||y>0) s2;

else s3;

0410 针对程序段:IF((X>10) AND (Y<20))

THEN W=W/A , 对于(X,Y)的取值,以下( )组测

试用例能够满足判定覆盖的要求。

A. (30,15) (40,10)

B. (3,0) (30,30)

0411 假设A, B 为布尔变量,对于逻辑表达式(A&&B||C),需要()个测试用例才能完成判定覆盖(DC) 。

0412 针对下列程序段,需要()个测试用例可以满足分支覆盖的要求。

int IsLeap(int year) {

if ( year % 4 == 0 ) {

if ( year % 100 == 0 ) {

if ( year % 400 == 0 ) leap = 1;

else leap = 0; } else leap = 1; }

else leap = 0;

return leap; }

0413 针对以下C 语言程序段,假设sta[10]= -1,对于x 的取值,需要( )个测试用例能够满足分支覆盖的要求。

int MathMine(int x) {

int m=0;

int i;

for(i=x-1;i<=x+1;i++) {

if(i<0) continue;

if(i >31) break;

if(sta[i]==-1) m++;

}

return m;

}

A.3

B.4

C.5

D.6

0414 以下代码由C语言书写,在输入三个整数后,能够输出最大数和最小数。

int main(void) {

int a,b,c,max,min;

printf(“input three number: ”);

scanf(“%d%d%d”,&a,&b,&c);

if(a>b) /*判断1*/

{ max=a; min=b; }

else

{ max=b; min=a; }

if(max

max=c;

else if(min>c) /*判断3*/

min=c;

printf(“max=%d\nmin=%d\n ”,max,min);

return 0; }

问题1:请画出该程序的控制流图,并分析该控制流图中有多少(4)条线性独立路径(V(G)的值)。

问题2:为了用分支(判定)覆盖方法测试该程序,需要设计测试用例,使其能对该程序中的每个判断语句的各种分支情况全部进行过测试。对两组输入数据(1) a=3,b=5,c=7; (2) a=4,b=6,c=5,请分别写出程序中各个判断语句的执行结果(以T表示真,以F表示假),填入答题纸的相应栏中。

问题3:上述两组测试数据是否实现该程序的分支(判定)覆盖?如果能,请说明理由。如果不能,请再增设一组输入数据,使其能实现分支(判定)覆盖。

0415 针对以下程序段,对于(A,B)的取值,以下( )测试用例能够满足条件覆盖的要求。

IF((A-10)=20 OR (B+20)>10) THEN C=0

IF((A-30)<10 AND (B-30)<0) THEN B=30

① A=50 B=-10 ② A=40 B=40

③ A=30 B=-10 ④ A=30 B=30

A. ①②

B. ③④

相关文档
最新文档