白盒测试习题
白盒测试练习题11

白盒测试练习题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.语句覆盖测试:–通过设计测试用例,使得每个语句至少被执行一次。
白盒测试及例题

语句覆盖
为使程序中每个语句 至少执行一次,只需设计 一个能通过路径ace的例 子就可以了,例如选择输 入数据为: A=2,B=0,X=3 就可达到“语句覆盖” 标准。
语句覆盖
语句覆盖
从上例可看出,语句覆盖实际上是很 弱的,如果第一个条件语句中的AND错误 地编写成OR,上面的测试用例是不能发现 这个错误的;又如第三个条件语句中X>1 误写成X>0,这个测试用例也不能暴露它, 此外,沿着路径abd执行时,X的值应该保 持不变,如果这一方面有错误,上述测试 数据也不能发现它们。
1)A>1, B=0 3) A≤1, B=0 B≠0 5) A=2, X>1 7) A≠2, X>1 2) A>1, B≠0 4) A≤1, 6) A=2,X≤1 8) A≠2, X≤1
5)、 6)、 7)、8)四种情况是 第二个 IF语句的条件组合,而X的值 在该语句之前是要经过计算的,所以 还必须根据程序的逻辑推算出在程序 的入口点X的输入值应是什么。
白盒测试的主要目的:
• 保证一个模块中的所有独立路径至少被执 行一次; • 对所有的逻辑值均需要测试真、假两个分 支; • 在上下边界及可操作范围内运行所有循环; • 检查内部数据结构以确保其有效性。
测试覆盖标准
• 白盒法特点:以程序的内部逻辑为基础设计 测试用例,所以又称为逻辑覆盖法。应用白 盒法时,手头必须有程序的规格说明以及程 序清单。
条件组合覆盖
• 针对上述问题又提出了另一种标准——―条 件组合覆盖”。它的含义是:执行足够的 例子,使得每个判定中条件的各种可能组 合都至少出现一次。显然,满足“条件组 合覆盖”的测试用例是一定满足“分支覆 盖”、“条件覆盖”和“分支/条件覆盖” 的。
软件测试补充练习-白盒测试

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