白盒测试习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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. ③④