白盒测试用例练习题(1)
实验2-1-答案汇编

白盒测试用例练习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<=5根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示:5、组合覆盖条件组合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、在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中( A )是最强的覆盖准则。
为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试用例组。
若x, y是两个变量,可供选择的测试用例组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组,如表中给出,则实现判定覆盖至少应采取的测试用例组是( B )或( C );实现条件覆盖至少应采取的测试用例组是( D );实现路径覆盖至少应采取的测试用例组是( E )或( F )。
供选择的答案A:① 语句覆盖② 条件覆盖③ 判定覆盖④ 路径覆盖B~F:① Ⅰ和Ⅱ组② Ⅱ和Ⅲ组③ Ⅲ和Ⅳ组④ Ⅰ和Ⅳ组⑤ Ⅰ、Ⅱ、Ⅲ组⑥ Ⅱ、Ⅲ、Ⅳ组⑦ Ⅰ、Ⅲ、Ⅳ组⑧ Ⅰ、Ⅱ、Ⅳ组解答:A. ④ B. ⑤ C. ⑧ D. ④ E. ⑤ F. ⑧2. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到条件覆盖。
( B )int func(int a,b,c){ int k=1;if ( (a>0) || (b<0) || (a+c>0) ) k=k+a;else k=k+b;if (c>0) k=k+c;return k;}A. (a,b,c) = (3,6,1)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)C. (a,b,c) = (6,8,-2)、(1,5,4)D. (a,b,c) = (4,9,-2)、(-4,8,3)3. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定覆盖。
(D )int func(int a,b,c){ int k=1;if ( (a>0) &&(b<0) && (a+c>0) ) k=k+a;else k=k+b;if (c>0) k=k+c;return k;}A. (a,b,c) = (3,6,1)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)C. (a,b,c) = (6,8,-2)、(1,5,4)D. (a,b,c) = (4,-9,-2)、(-4,8,3)4. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定条件覆盖。
白盒测试-基本路径测试习题

public static void getArray2(int[] arr){ System.out.print("冒泡排序后数组大小排列为:"); for(int i = 0;i < arr.length; i++){ System.out.print(arr[i]+" , "); } System.out.println();
(13)
return;
(14)
}
(15)
}
(16) }
1.程序流程图:
2.1
2.2.1 (--i>0
2.2.2
4.1 4.2
5 6.7.8.9 10
15
3 3
3.1 12 13
4.3
16
流图:
2.1
2.2.1
3
2.2.2
3
4.1
3.1
4.2
12
13 5
4.3
6,7,8,9
10
15
16
2.计算环形复杂度: CC(G)= 6 个区域 CC(G)= 18 条边 – 14 个节点 + 2 = 6 CC(G)= 5 个判定节点 + 1 = 6
4.测试用例 路径 1 测试用例:
输入条件:将数组设为 int[0],输入空值 期望结果:null 实际运行结果:
路径 2 测试用例: 输入条件:将数组设为 int[1],输入 5 期望结果:原数组大小排列为:5 冒泡排序后数组大小排列为:5 实际结果:
路径 3 测试用例: 输入条件:将数组设为 int[5],输入 1,3,5,7,9 期望结果:原数组大小排列为:1,3,5,7,9 冒泡排序后数组大小排列为:1,3,5,7,9 实际运行结果:
白盒测试 逻辑覆盖习题

T1,T2,F3
AE
a=-2,B=1
ABD
F1,f2,T3
BD
a=2,b=1
AE
T1,F2,F3
AE
A=-2,b=-1
F1,T2,T3
ABD
6、路径覆盖:
可以取语句覆盖的用例,只要覆盖所有路径即可
流程图:
1、语句覆盖:
测试用例:{a=2、b=1};{a=0,b=1};{a=-2,b=1};
2、判定覆盖(分支覆盖):
测试用例:{a=2、b=1};{a=0,b=1};{a=-2,b=1};
3、条件覆盖:
对于第一个判定:a>1取真时为T1,取假时为F1;
b<0取真时为T2,取假时为F2;
对于第二个判定:a<=-1取真时为T3,取假时为F3;
测试用例设计:
测试用例
通过路径
条件取值
覆盖分支
a=2,b=-1
AE
T1,T2,F3
AE
a=-2,B=1
ABD
F1,f2,T3
BD
4、判定条件覆盖
测试用例
通过路径
条件取值
覆盖分支
a=2,b=-1
AE
T1,T2,F3
AE
a=-2,B=1
ABD
F1,f2,T3
BD
a=0,b=1
ABC
F1,F2,F3
BC
5、
编号
条件组合
组合标记
判定情况
1
a>1,b<0
T1,T2
第一判定取真分支
2
a>1.b>=0
T1,F2
第一判定取真分支
3
a<支
白盒测试-基本路径测试习题

int i,max=0; int arr[]=new int[5];//设数组大小为5 System.out.println("请输入数组元素:"); for(i=0;i<=arr.length-1;i++) {
(1)void bubbleSort(int a[]){
(2)
for (int i = a.length; --i>=0; ) { //2.1 int i = a.length
(3)
boolean flipped = false; //2.2.1 –-i=0
(4)
for (int j = 0; j<i; j++) { //2.2.2 –-i>0
3.独立路径集 路径 1:2.1-2.2.1-2.2.2-15-16 路径 2:2.1-2.2.1-3-3.1-4.1-4.2-12-13-16 路径 3:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-10-4.3-4.2-12-13-16 路径 4:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-10-4.3-4.2-12-13-2.2.1-2.2.2-15-16 路径 5:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-6,7,8,9-10-4.3-4.2-12-13-2.2.1-2.2.2-15-16 路径 6:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-6,7,8,9-10-4.3-4.2-12-13-16
for (int j = 0; j<i; j++) { if (a[j] > a[j+1]) {
白盒测试例题

例题2:应用白盒测试法的具体步骤:1.按照某种覆盖标准,选择一组需要覆盖的路径;2.确定上述路径所需的输入数据;3.计算与输入数据相应的输出。
下面以工资管理程序为例说明白盒测试方法的运用过程。
(白盒测试方法有6种)工资管理程序BONUS的输入数据是职员表(Employee Table)和部门销售表(Department Table)(图1)。
职员表由姓名(Name)、职务(Job)、部门(Dept.)和工资(Salary)四个属性组成。
部门销售表由部门(Dept)和销售量(Sales)组成。
程序的功能是:“为销售量最大的部门中每一个职工增加200元工资,但是,如果某个职员的原有工资已达15000元,或者他的职务是经理,则只给他增加100元。
如果程序能正常地完成,则输出出错码0;如果两表格中没有任何条目,则输出出错码1;如果没有职员在部门销售表中销售量最大的部门中工作,则输出出错码2;”工资管理程序BONUS的两个表如下:工资管理程序BONUS的源程序:参数表中EMPTAB、DEPTTAB分别是职员表和部门表,ESIZE、DSIZE分别是两个表的长度,ERRCODE是出错码。
这里略去了说明部分和注释。
Procedure Bonus(EMPTAB,DEPTTAB:TABLE; ESIZE,DSIZE,ERRCODE:INTEGER);/*最大销量和出错码初始化*/1. Begin MAXSALES:=0; ERRCODE:=0;/*判断表是否为空,空输出1,并退出程序,否则继续执行*/2. IF (ESIZE<=0) or (DSIZE<=0)3. THEN ERRCODE:=1;4. ELSE/*获得最大销量*/5. For i=1 to DSIZE6. If Sales(i)> MAXSALES7. then MAXSALES = Sales(i);/*找到销量最大的每一个部门,并做进一步处理*/8. For j=1 to DSIZE9. If Sales(j)= MAXSALES10. Then11. Begin Found:=False;/*找销量最大的职员所属部门对应的职员表中的职员并处理*/12. For k:=1 to ESIZE13. If (EMPTAB.DEPT(k)= DEPTTAB. DEPT(J))14. Then15. Begin Found:=True;/*如果该职员工资超过15000或职务是经理则加100工资,否则加200工资*/16. If (SALARY(k)>=15000.0) or (JOB(k)=”M”)17. Then18. SALARY(k):= SALARY(k)+100.0;19. Else20. SALARY(k):= SALARY(k)+200.0;21. End;/*如果找不到对应职员,则输出出错码2,否则出错码默认0*/22. If (!Found ) then ERRORCODE:=2;23. End24. End25. End用白盒测试方法设计测试用例。
白盒测试用例练习题(1)

白盒测试用例练习题(1)白盒测试用例练习1.为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
voiddowork(intx,inty,intz){intk=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}k=0j=0aycx>3andz<10k=x*y-1j=sqrt(k)nbx=4eoryy>5j=x*y+10ndj=j%3由这个流程图可以窥见,该程序模块存有4条相同的路径:p1:(a-c-e)p2:(a-c-d)p3:(a-b-e)p4:(a-b-d)将里面的判定条件和过程记录如下:判定条件m={x>3andz<10}判定条件n={x=4ory>5}1、语句覆盖测试用例输出x=4,z=5,y=82、判定覆盖p1和p4可以做为测试用例,其中p1做为挑真的路径,p4做为row的路径。
测试用例输出x=4,z=5,y=8x=2,z=11,y=5输入k=31,j=0k=0,j=0认定m的值域认定n的值域tftf 全面覆盖路径p1(a-c-e)p4(a-b-d)输入k=31,j=0认定m的值域认定n的值域tt全面覆盖路径p1(a-c-e)也可以使测试用例测试路径p2和p3。
适当的两组输出数据如下:测试用例输出x=5,z=5,y=4x=4,z=11,y=63、条件覆盖对于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<=5根据条件全面覆盖的基本思路,和这8个条件值域,女团测试用例例如表中右图:测试用例输出x=4,z=5,y=8x=3,z=11,y=5输入k=31,j=0k=0,j=0值域条件具体内容值域条件全面覆盖路径p1(a-c-e)t1,t2,t3,t4x>3,z<10,x=4,y>5输入k=19,j=sqrt(19)%3k=0,j=1认定m的值域认定n的值域tfft全面覆盖路径p2(a-c-d)p3(a-b-e)f1,f2,f3,f4x<=3,z>=10,x!=4,y<=5p4(a-b-d)4、认定/条件全面覆盖测试用例输出x=4,z=5,y=8x=3,z=11,y=5输入k=31,j=0k=0,j=0值域条件具体内容值域条件全面覆盖路径p1(a-c-e)t1,t2,t3,t4x>3,z<10,x=4,y>5f1,f2,f3,f4x<=3,z>=10,x!=4,y<=5p4(a-b-d)5、女团全面覆盖条件组合1)x>3,z<102)x>3,z>=103)x<=3,z<104)x<=3,z>=105)x=4,y>56)x=4,y<=57)x!=4,y>58)x!= 4,y<=5测试用例输出x=4,z=5,y=6x=4,z=10,y=5x=3,z=5,y=6z=3,z=10,y=56、路径全面覆盖测试用例输出x=4,z=5,y=8x=5,z=5,y=4x=4,z=11,y=6x=2,z=11,y=5输出k=31,j=0k=0,j=1k=0,j=0覆盖条件取值覆盖条件组合1,51,82,54,8覆盖路径p1(a-c-e)p2(a-c-d)p3(a-b-e)p4(a-b-d)输出k=23,j=1k=0,j=0k=14j=1k=0,j=2覆盖条件取值t1,t2,t3,t4t1,f2,t3,f4f1,t2,f3,t4f1,f2,f3,f4覆盖条件组合1,52,63,74,8覆盖路径p1(a-c-e)p2(a-c-d)p3(a-b-e)p4(a-b-d)t1,t2,t3,t4t1,f2,t3,t4f1,f2,f3,f4k=19,j=sqrt(19)%3t1,t2,f3,f4。
白盒测试试题答案[1]
![白盒测试试题答案[1]](https://img.taocdn.com/s3/m/1c266aedfbb069dc5022aaea998fcc22bcd1430e.png)
先看以下代码:/** 白盒测试逻辑覆盖测试范例*/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、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
白盒测试用例练习
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;
} //语句块2
j=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<=5
5、组合覆盖
条件组合
1)x>3,z<10 2)x>3,z>=10
3) x<=3,z<10 4)x<=3,z>=10
5)x=4,y>5 6)x=4,y<=5
6。