南京信息工程大学实验报告
实验名称:白盒测试(二) 指导老师:徐旦华 实验时间:2015.5.27 专业:软件工程 年级:2013 班级:2 姓名:学号:
一.实验目的
理解白盒测试的基本方法,掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等代码覆盖测试策略,并能运用相应的方法设计测试用例。
二. 实验时间
2学时
三.实验准备
主流PC 机一套,要求安装windows 操作系统和Office 工具及相应编程软件;
四. 实验内容
1.题目一:使用逻辑覆盖测试方法测试以下程序段
void DoWork (int x,int y,int z) {
1 int k=0, j=0; 2 if ( (x>3)&&(z<10) ) 3 {
4 k=x*y-1; 5 j=sqrt(k); 6 }
7 if((x==4)||(y>5))
8 j=x*y+10; 9 j=j%3;
10 }
说明:程序段中每行开头的数字(1~10)是对每条语句的编号。 (1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。 2.题目二:
请按要求对下面的java 代码进行测试。代码的功能是:用折半查找法在元素呈升序排
列的数组中查找值为key 的元素。 public int binSearch ( int array[], int key ) { 1 int mid, low, high; 2 low = 0;
3 high = array.length-1; 4 while ( low <= high ) { 5 mid = (low +high)/2;
6 if ( key = = array [mid] ) 7 return mid;
8 else if ( key < array [mid] ) 9 high = mid -1; 10 else
11 low = mid + 1 12 }
13 return -1; 14 }
(1) 画出此程序段的控制流图; (2)试计算此程序段的McCabe 复杂性;
(3)用独立路径覆盖法给出测试路径;并为各测试路径设计测试用例。
五.实验步骤及结果 题目一
(1)程序的流程图
开始 输入x,y,z N x>3&&z<10 Y k=x*y-1;j=sqrt(k) (x==4)||(y>5) N j=x*y=10 Y j=j%3 输出j 结束 程序的控制流图
1 2.a 2.b 3 4 5 6 7.a 7.b 8 9 10 (2) 1.语句覆盖测试用例:x=4,y=6,z=8 执行顺序:1—2—3—4—5—6—7—8—9—10 2.判定覆盖测试用例:x=4,y=7,z=8 执行顺序:1—2—3—4—5—6—7—8—9—10 x=3,y=5,z=8 执行顺序:1—2—3—6—7—9 3.条件覆盖测试用例:
设条件x>3真记为T1,假记为F1;条件z<10真记为T2,假记为F2;条件x==4真记为T3,假记为F3;条件y>5记为T4,假记为F4. 测试用例 覆盖条件 x=3,y=8,z=8 x=4,y=6,z=11 4.判定条件覆盖 设条件x>3真记为T1,假记为F1;条件z<10真记为T2,假记为F2;条件x==4真记为T3,假记为F3;条件y>5记为T4,假记为F4. 测试用例 x=3,y=5,z=13 x=4,y=7,z=8 5.条件组合覆盖 覆盖条件 F1,F2,F3,F4 T1,T2,T3,T4 执行路径 1 2 3 6 7 9 10 1 2 3 4 5 6 7 8 9 10 F1,T2,F3,F4 T1,F2,T3,F4 执行路径 1 2 3 6 7 8 9 10 1 2 3 6 7 8 9 10 设条件x>3真记为T1,假记为F1;条件z<10真记为T2,假记为F2;条件x==4真记为T3,假记为F3;条件y>5记为T4,假记为F4. 具体条件取值 覆盖条件 x>3,z<10 x>3,z<=10 x<=3,z<10 x<=3,z<=10 x==4,y>5 x==4,y<=5 x!=4,y>5 x!=4,y<=5 测试用例 测试数据 x=4,y=8,z=8 x=4,y=3,z=13 x=2,y=8,z=8 x=2,y=3,z=13 6.路径覆盖 测试用例编号 1 2 3 4
测试数据 x=4,y=8,z=8 x=4.y=3,z=13 x=6,y=2,z=8 x=2,y=3,z=13 执行路径 1 2 3 4 5 6 7 8 9 10 1 2 3 6 7 8 9 10 1 2 3 4 5 6 7 9 10 1 2 3 6 7 9 10 覆盖条件 T1,T2,T3,T4 T1,F2,T3,F4 F1,T2,F3,T4 F1,F2,F3,F4 执行路径 1 2 3 4 5 6 7 8 9 10 1 2 3 6 7 8 9 10 1 2 3 6 7 8 9 10 1 2 3 6 7 9 10 T1,T2 T1,F2 F1,T2 F1,F2 T3,T4 T3,F4 F3,T4 F3,F4 判定取值 第一个判定:取真分支 第一个判定:取假分支 第一个判定:取假分支 第一个判定:取假分支 第二个判定:取真分支 第二个判定:取假分支 第二个判定:取假分支 第二个判定:取假分支 开始 题目二 (1)程序的流程图 T return mid
F mid=(high+low)/2 T low=0 high=arrry.length-1 low<=high F return -1 Key==array[mid] 结束 key 程序控制流图 R1 9 14 13 1 2 3 4 5 6 R4 8 7 R2 10 R3 11 12 (2)程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数。从程序的环路复杂性可以导出程序基本路径集合中的独立路径条数,可以确保程序中每个可执行语句至少执行一次所必需的最少测试用例数。 方法一:通过控制流图的边数和节点数计算。E为控制流图的边数,N为控制流图节点数。 V(G)=E-N+2 E=16,N=14 V(G)=4 程序的环路复杂性为4 方法二:通过控制流图中判定节点数计算。P为控制流图中判定节点数。 V(G)=P+1 P=3 V(G)=4 程序的环路复杂性为4 方法三:将环路复杂性定义为控制流图中的区域数。该控制流图中有4个区域:R1,R2,R3,R4,因此程序的环路复杂性为4。 (3)通过程序的控制流图导出基本路径数,列出程序的独立路径。 Path1:1 2 3 4 13 14 Path2:1 2 3 4 5 6 7 12 4 13 14 Path3:1 2 3 4 5 6 8 9 12 4 13 14 Path4:1 2 3 4 5 6 8 10 11 12 4 13 14 根据程序结构和程序环路复杂性设计用例输入数据和预期结果,确保基本路径集中的每一条路径的执行。 用例编号 1 2 3 4 路径 1 2 3 4 13 14 1 2 3 4 5 6 7 12 4 13 14 输入数据 Array[0]={};key=1 array[3]={2,4,6}; key=4 0 2 预期结果 -1 1 1 2 3 4 5 6 8 9 12 4 13 array[4]={2,4,6,8} 14 key=2 1 2 3 4 5 6 8 10 11 12 4 13 14 array[4]={2,4,6,8} key=6 六. 实验心得 通过本次实验,理解了白盒测试的基本方法。掌握了语句覆盖、判定覆盖、条件覆 盖、判定/条件覆盖、条件组合覆盖和路径覆盖等代码覆盖测试策略,学会了运用相应的方法设计测试用例。