白盒测试习题
- 格式:doc
- 大小:720.00 KB
- 文档页数:17
白盒测试练习题1、为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
语句覆盖:X=17,y=6; x=1,y=4; x=10,y=-1; 判定覆盖:x=18,y=7; x=3,y=2; x=1,y=-2; x=9,y=9 条件覆盖:对于第一个判定( (x>8)&&y>5) ):条件x>8 取真值记为T1,取假值记为F1条件y>5 取真值记为T2,取假值记为F2对于第二个判定( (x>16)||(y>10) ):条件x>16 取真值记为T3,取假值记为F3条件y>10 取真值记为T4,取假值记为F4 对于第三个判定((x>0)||(y>0):条件x>0 取真值记为T5,取假值记为F5条件y>0 取真值记为T6,取假值记为F6判定/条件覆盖:组合覆盖:1.X>8,Y>5:T1T22.X>8,Y<=5:T1F23.X<=8,Y>5:F1T24.X<=8,Y<=5:F1F25.X>0,Y>0:T5T66.X>0,Y<=0:T5F67.X<=0,Y>0:F5T68.X<=0,Y<=0:F5F69.X>16,Y>10:T3T410.X>16,Y<=10:T3F411.X<=16,Y>10:F3T412.X<=16,Y<=10:F3F42、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
程序如下,请按要求设计测试用例。
要求:画出流程图分别写出满足语句覆盖和判定覆盖的测试用例语句覆盖:c=a;c= ;c=0;c=, 判定覆盖:c=a,;c= ;c=0;c=, 1)画出控制流图;2)分析复杂性;V(G)=53)给出独立路径并设计测试用例;路径1:2-11路径2: 2-3-4-11路径3: 2-3-5-6-11路径4: 2-3-5-7-8-11路径5: 2-3-5-7-9-114)画出N-S图;5)计算要满足覆盖所需要的最少测试用例数;6)设计满足条件覆盖的测试用例。
先看以下代码:/** 白盒测试逻辑覆盖测试范例*/int logicExample(int x, int y){int magic=0;if(x>0 && y>0){magic = x+y+10; // 语句块1}else{magic = x+y-10; // 语句块2}if(magic < 0){magic = 0; // 语句块3}return magic; // 语句块4}解答:一般做白盒测试不会直接根据源代码,而是根据流程图来设计测试用例和编写测试代码,在没有设计文档时,要根据源代码画出流程图:做好了上面的准备工作,接下来就开始讲解六个逻辑覆盖标准:一、语句覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
在本例中,可执行语句是指语句块1到语句块4中的语句。
2、测试用例:{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的。
3、测试的充分性:假设第一个判断语句if(x>0 && y>0)中的“&&”被程序员错误地写成了“||”,即if(x>0 || y>0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误。
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
二、判断覆盖(分支覆盖)1、概念:设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
在本例中共有两个判断if(x>0 && y>0)(记为P1)和if(magic < 0)(记为P2)。
2、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
白盒测试作业请将以下程序绘制程序流图,并分别用语句覆盖/分支覆盖和条件覆盖三种方式编写测试用例.三角形形状判断:输入三条整数边长,判断三角形的形状if (a < b + c && b < a + c && c < a + b) { //条件1// 判断三角形形状if (a == b&&b == c) {System.out.println("这是等边三角形");// 输出三角型形状} else if ((a == b && a != c) || (b == c && b != a) || (c == a && c != b)) {System.out.println("这是等腰三角形");} else if((a*a==b*b+c*c)||(b*b==a*a+c*c)||(c*c==a*a+b*b)){System.out.println("这是直角三角形");}else{System.out.println("普通三角形");}} else {System.out.println("这不是一个三角形");}绘制流程图:[30分]b语句覆盖[30分]分支覆盖[20分]条件覆盖[20分]应该满足的条件:判定1:T1_1(a < b + c )T1_2(b < a + c)T1_3 (c < a + b)判定2:T2_1 (a == b) T2_2(b == c)判定3:T3_1 (a == b && a != c) T3_2(b == c && b != a) T3_3 (c == a && c != b) 判定4:T4_1(a*a==b*b+c*c) T4_2(b*b==a*a+c*c) T4_3(c*c==a*a+b*b)根据语句覆盖测试,错误可能出现在_______TC-005 ,TC-007________________语句。
一选择题1.下面不属于白盒测试能保证的是(D)。
A.模块中所有独立途径至少测试一次B.测试所有逻辑决策真和假两个方面C.在所有循环的边界内部和边界上执行循环体D.不正确或漏掉的功能2.因果图方法是根据(a)之间的因果关系来设计测试用例的。
A.输入与输出B.设计与实现C.条件与结果D.主程序与子程序3.使用白盒测试方法时,确定测试数据应根据(a)和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能4.软件测试中常用的静态分析方法是(a)和接口分析。
A.引用分析B.算法分析C.可靠性分析D.效率分析5.白盒方法中常用的方法是(a)方法。
A.路径测试B.等价类C.因果图D.归纳测试6.在进行单元测试时,常用的方法是(a)。
A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只适用白盒测试D.只适用黑盒测试7.在软件工程中,白盒测试法可以用于测试程序的内部结构。
此方法将程序看做是(a)。
A.路径的集合B.循环的集合C.目标的集合D.地址的集合8. 对下面个人所得税程序中满足语句覆盖测试用例的是(D )If(income < 800) taxrate=0;Else if(income <=1500) taxrate=0.05;Else if(income <2000) taxrate=0.08;Exle taxrate=0.1;A income = (800,1500,2000,2001)B income = (800,801,1999,2000)C income = (799,1499,2000,2001)D income = (799,1500,1999,2000)二简答题1.白盒测试有几种方法?答:白盒测试方法分为两大类:静态测试方法和动态测试方法。
静态测试方法:检查软件的表示和描述是否一致,没有冲突或者没有歧义。
动态测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
要求1:请将下列代码的程序流程图画出来。
要求2:根据案例,请设计出6种白盒测试覆盖的用例。
参考以下代码,要求:(1)画出流程图;(2)请分别设计出满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖及路径覆盖的测试用例。
如,例1:
PROCEDURE M(VAR A,B,X:REAL);
BEGIN
IF (A>1) AND (B=0) THEN X:=X/A;
IF (A=2) OR (X>1) THEN X:=X+1;
END.
语句覆盖
A=2,B=0,X=3
分支覆盖
A=3,B=0,X=1 (沿路径acd执行);A=2,B=1,X=3(沿路径abe执行)
条件覆盖
A=2,B=0,X=4 (沿路径ace执行);A=1,B=1,X=1 (沿路径abd执行)。
分支条件覆盖
A=2,B=0,X=4 (沿ace路) A=1,B=1,X=1 (沿abd路径)
条件组合覆盖
①A=2,B=0,X=4
使1)、5)两种情况出现;
②A=2,B=1,X=1
使2)、6)两种情况出现;
③A=1,B=0,X=2
使3)、7)两种情况出现;
④A=1,B=1,X=1
使4)、8)两种情况出现。
白盒测试覆盖例题白盒测试是软件测试中的一种重要手段,通过对代码内部结构的检查来评估软件的质量。
在白盒测试中,覆盖率是一个重要的指标,它用来衡量测试用例是否充分覆盖了被测代码的各个部分。
在本文中,我们将通过一个例题来探讨白盒测试覆盖问题。
例题描述假设有一个简单的计算器程序,能够实现加、减、乘、除等基本运算。
以下是程序的伪代码:def calculator(operator, num1, num2):if operator =='+':result = num1 + num2elif operator =='-':result = num1 - num2elif operator =='*':result = num1 * num2elif operator =='/':if num2 !=0:result = num1 / num2else:result ='Error: divide by zero'else:result ='Error: invalid operator'return result问题提出针对上述计算器程序,我们将提出以下几个问题,用以讨论在白盒测试中如何进行有效的覆盖:1.设计测试用例,确保覆盖所有的运算符(+、-、*、/)。
2.设计测试用例,验证除法运算中除数为0的情况。
3.设计测试用例,覆盖所有的条件分支路径。
4.如何进行语句覆盖测试?5.如何进行路径覆盖测试?解题思路1.设计测试用例覆盖所有的运算符:–测试用例1:operator=’+’,num1=3,num2=5–测试用例2:operator=’-’,num1=10,num2=2–测试用例3:operator=’*’,num1=4,num2=6–测试用例4:operator=’/’,num1=8,num2=22.验证除法运算中除数为0的情况:–测试用例5:operator=’/’,num1=6,num2=03.覆盖所有的条件分支路径:–测试用例6:operator=’%’(错误的运算符)–测试用例7:operator=’/’,num1=8,num2=04.语句覆盖测试:–通过设计测试用例,使得每个语句至少被执行一次。
软件测试补充练习白盒测试练习1、本流程图描述了某子程序的处理流程,现要求用白盒测试法对子程序进行测试。
根据判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖五种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组(用①-⑩表示)。
供选择的答案:①a=5 b=1②a=5 b=-1③a=5 b=1 a=-5 b=-1④a=5 b=1 a=0 b=-1⑤a=5 b=-1 a=-5 b=1 a=-5 b=-1⑥a=5 b=1 a=0 b=0 a=-5 b=-1⑦a=5 b=1 a=0 b=1 a=0 b=-1 a=-5 b=1⑧a=5 b=1 a=0 b=-1 a=-5 b=1 a=-5 b=-1⑨a=5 b=1 a=0 b=-1 a=0 b=1 a=-5 b=1a=-5 b=-1⑩a=5 b=1 a=5 b=0 a=5 b=-1 a=0 b=1 a=0 b=0 a=0 b=-1 a=-5 b=1 a=-5 b=0判定覆盖:________________条件覆盖:________________判定/条件:______________条件组合:________________路径覆盖:________________2、本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。
根据判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖等 5 种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组(用①-⑩表示)。
供选择的答案:①x=90,y=90②x=50,y=50③x=90,y=90x=50,y=50④x=90,y=70x=40,y=90⑤x=90,y=90x=50,y=50x=90,y=70⑥x=90,y=70x=70,y=90x=50,y=50⑦x=90,y=90x=50,y=50x=90,y=70x=70,y=90⑧x=90,y=90x=50,y=50x=90,y=50x=80,y=80⑨x=90,y=90x=90,y=70x=70,y=90x=30,y=90x=70,y=70x=50,y=50⑩x=90,y=90x=80,y=80x=90,y=70x=90,y=30x=70,y=90x=30,y=90x=70,y=70x=50,y=50判定覆盖:________________条件覆盖:________________判定/条件:______________条件组合:________________路径覆盖:________________3、本流程图描述了某子程序的处理流程,现要求用白盒测试法为该子程序设计测试数据。
白盒测试用例练习题(1)-CAL-FENGHAI.-(YICAI)-Company One1白盒测试用例练习1.为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
void DoWork (int x,int y,int z){int k=0,j=0;if ( (x>3)&&(z<10) ){ k=x*y-1;j=sqrt(k); //语句块1}if ( (x==4)||(y>5) ){j=x*y+10;} //语句块2j=j%3; //语句块3}由这个流程图可以看出,该程序模块有4条不同的路径:P1:(a-c-e) P2:(a-c-d)P3:(a-b-e) P4:(a-b-d)将里面的判定条件和过程记录如下:判定条件M={x>3 and z<10}判定条件N={x=4 or y>5}1、语句覆盖2、判定覆盖也可以让测试用例测试路径P2和P3。
相应的两组输入数据如下:3、条件覆盖对于M:x>3取真时T1,取假时F1;z<10取真时T2,取假时F2;对于N:x=4取真时T3,取假时F3;y>5取真时T4,取假时F4。
条件:x>3,z<10,x=4,y>5条件:x<=3,z>=10,x!=4,y<=55条件组合1)x>3,z<10 2)x>3,z>=103) x<=3,z<10 4)x<=3,z>=105)x=4,y>5 6)x=4,y<=56。
白盒测试用例练习白盒測試用例練習 1.為以下所示の程序段設計一組測試用例,要求分別滿足語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋,並畫出相應の程序流程圖。
void DoWork (int x,int y,int z) { int k=0,j=0; if ( (x3) } //語句塊 2 j=j%3; //語句塊 3 } a Y c N b e Y N d x3 and z5 j=j%3 j=x*y+10 k=x*y-1 j=sqrt(k) k=0 j=0 由這個流程圖可以看出,該程序模塊有 4 條不同の路徑:P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d) 將裏面の判定條件和過程記錄如下:判定條件 M= {x3 and z5} 1、語句覆蓋測試用例輸入輸出判定 M の取值判定 N の取值覆蓋路徑x=4,z=5,y=8 k=31,j=0 T T P1(a-c-e) 2、判定覆蓋 p1 和p4 可以作為測試用例,其中 p1 作為取真の路徑, p4 作為取反の路徑。
測試用例輸入輸出判定 M の取值判定 N の取值覆蓋路徑 x=4,z=5,y=8 k=31,j=0 T T P1(a-c-e) x=2,z=11,y=5k=0,j=0 F F P4(a-b-d) 也可以讓測試用例測試路徑 P2 和P3。
相應の兩組輸入數據如下:測試用例輸入輸出判定 Mの取值判定 N の取值覆蓋路徑 x=5,z=5,y=4 k=19,j=sqrt(19)%3 T F P2(a-c-d)x=4,z=11,y=6 k=0,j=1 F T P3(a-b-e) 3、條件覆蓋對於M:x3 取真時 T1,取假時 F1; z5 取真時 T4,取假時 F4。
條件:x3,z5 條件:x=10,x!=4,y3,z5 P1(a-c-e) x=3,z=11,y=5 k=0, j=0F1, F2, F3, F4 x=10,x!=4,y3,z5 P1(a-c-e)x=3,z=11,y=5 k=0, j=0 F1, F2, F3, F4x=10,x!=4,y3,z3,z=10 3) x=10 5)x=4,y5 6)x=4,y58)x!=4,y c) if((a == b) || (b == c) || (a == c)) // 判斷為等腰三角形 return 2; else // 判斷為普通三角形return 1; } else { // 為非三角形 return 0; } } } 二、程序流程圖开始输入数据a + b c int leap=0;if( (year%4==0 if(year31)return 0;break; case 4:case 6:case 9:case 11:if(day30) return 0; break; case 2:if(leap==1} if(leap==0} break; default:return0;break; } return pass; } void fun(){ intyear,month,day,sumday; sumday=0; printf(“input year,month,day:\n“); scanf(“%d%d%d“,if(check(year,month,day)==0){printf(“輸入の日期無效“);return;} if(month==1||month==2) { month+=12; year--; } sumday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7; if(month==13||month==14){ month-=12; year++;} switch(sumday) {case0:printf(“%d-%d-%d isMonday\n“,year,month,day);break; case 1:printf(“%d-%d-%d is Tuesday\n“,year,month,day);break; case2:printf(“%d-%d-%d isWednesday\n“,year,month,day);break; case3:printf(“%d-%d-%d isThurday\n“,year,month,day);break; case 4:printf(“%d-%d-%d is Friday\n“,year,month,day);break; case5:printf(“%d-%d-%d isSaturday\n“,year,month,day);break; case6:printf(“%d-%d-%d isSunday\n“,year,month,day);break;default:printf(“date error“);break; } } main(){ for(int i=0;i31 day30 return 0 no yes return 0 yesleap==1 i list.n-1; i++ ) { int k = i; //在list.V[i].key到 list.V[n-1].key中找具有最小關鍵碼の對象 for ( int j = i+1; j list.n; j++) if( list.V[j].getKey ( ) list.V[k].getKey ( ) ) k = j;//當前具最小關鍵碼の對象 if ( k != i ) Swap( list.V[i], list.V[k] ); //交換 } } ( 1)試計算此程序段の McCabe 複雜性;( 2)用基本路徑覆蓋法給出測試路徑;( 3)為各測試路徑設計測試用例。
白盒测试复习题一、名词解释:1、白盒测试(也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。
它根据程序的控制结构设计测试用例,主要用于软件或程序验证。
白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。
但即使每条路径都测试过了,仍然可能存在错误。
因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。
穷举路径测试不可能查出程序因为遗漏路径而出错。
穷举路径测试发现不了一些与数据相关的错误。
2、语句覆盖(选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。
3、判定覆盖(通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,也称为“分支覆盖”。
4、条件覆盖(设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。
5、判定/条件覆盖(设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。
6、组合覆盖(通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。
——满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。
)7、路径覆盖(设计足够多的测试用例,要求覆盖程序中所有可能的路径。
)二、简答题基本路径测试方法包括哪些步骤?路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。
从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。
完成路径测试的理想情况是做到路径覆盖,但对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。
在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。
习题01 0401 逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语旬覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是( )。 语句段: if(A&&(B||C)) x=1; else x=0; 用例表:
用例1 用例2
A TRUE FALSE B ①true FALSE C TRUE ②true
A&&(B||C) ③true FALSE
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; }
输入数据 条件 预期结果 A=TRUE,B=TRUE,C=TRUE T T x=1 A=F,B=F,C=F F T x=0
输入数据 条件 预期结果 A=-8,B=20,C=30 T T C=0,B=30 A=-20,B=0,C=30 T T C=0,B=30 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; } A.2 B.3 C.4 D.5 输入数据 条件 预期结果 Value=0 T F F F other=30 Value=1 F T F F other=50 Value=3 F F T F other=100 Value=4 F F F T other= other/4
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) D.income = (799, 1500, 1999, 2000) 输入数据 条件 预期结果 Income=799 TFFF tarrate = 0 Income=1500 FTFF tarrate =0.05 Income=1999 FFTF tarrate =0.08 Income=2000 FFFT tarrate =0.1
0406 阅读下列流程图:
输入数据 条件 预期结果 x=17,y=11 T T T S1 x=7,y=4 F F T S2 x=-7,y=4 F F F S3 当用判定覆盖法进行测试时,至少需要设计 ( ) 个测试用例。 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 数据输入 条件 预期结果 b=0,a=0 TT result=0 b=0,a=-2 TF result=-1 b=1,a=1 FTT result=-1 b=1,a=-2 FTF result=1 b=0,a=0 FFT result=1 b=0,a=-2 FFF result=-1
0408 针对下列C语言程序段,对于(MaxNum,Type),至少需要( )个测试用例能够满足判定覆盖的要求。 while(MaxNum-->0) { if(10==Type) x=y*2; else if(100==Type) x=y+10; else x=y-20; } A. 5 B.4 C.3 D.2 数据输入 条件 预期结果 type=10 TFF x=y*2 type=100 FTF x=y+10 type!=10&&type!=100 FFT 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)的取值,以下( )组测 试用例能够满足判定覆盖的要求。
输入数据 条件 预期结果 x=17,y=11 T T T S1 x=7,y=4 F F T S2 x=-7,y=4 F F F S3 A. (30,15) (40,10) B. (3,0) (30,30) C. (5,25) (10,20) D. (20,10) (1,100) 输入数据 条件 预期结果 x=11,y=19 T w=w/a x=9,y=21 F 无
0411 假设 A, B 为布尔变量,对于逻辑表达式(A&&B||C),需要( )个测试用例才能完成判定覆盖(DC) 。 A.2 B.3 C.4 D.5 输入数据 条件 预期结果 A=T,B=T,C=T T A=T,B=F,C=T F A=T,B=F,C=F F
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; } A. 3 B.4 C.6 D.7 输入数据 条件 预期结果 year=400 TTT leap=1 year=100 TTF leap=0 year=16 TFF leap=1 year=6 FFF leap=0
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 输入数据 条件 预期结果 x=0 0 x=33 0 x=11 1
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(maxmax=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. ③④ C. ①④ D. ②④ 输入数据 条件 预期结果 A=41,B=-11 FFFT NO A=30,B=30 TTTF C=0,B=30