1、实验类型:综合性
2、学时:2
3、实验内容:
(1)采用语句覆盖、条件覆盖和判定覆盖设计测试用例。
(2)采用路径分析法设计测试用例
4、实验目的和要求:
实验目的:
(1)理解白盒测试的含义以及基本的测试方法
(2)理解路径分析方法
实验要求:
(1)采用语句覆盖、条件覆盖和判定覆盖设计测试用例并画出流程图
(2)采用路径分析法设计测试用例
5、实验步骤
(1)被测试的程序段如下:
begin
s1;
if (x=0) and (y> 2)
then s2;
if (x<1) or (y= 1)
then s3;
s4;
end
画出程序流程图采用语句覆盖、条件覆盖和判定覆盖设计测试用例。
答:
语句覆盖:x=0,y=3
条件覆盖:x=0,y=3 && x=3,y=1
判定覆盖:x=0,y=3 && x=1,y=2
2、程序流程图如图2.2所示,本程序最多输入50个值(以一1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。
(1)使用路径分析法的设计测试用例
答:①导出过程流图
②确定环形复杂性度量V(G):
1)V(G)= 6 (个区域)
2)V(G)=E-N+2=16- 12+2=6
其中E为流图中的边数,N为结点数;
3)V(G)=P+1=5+1=6
其中P为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。
③确定基本路径集合(即独立路径集合)。于是可确定6条独立的路径:
路径 1: 1-2-9-10-12
路径 2: 1-2-9-11-12
路径 3: 1-2-3-9-10-12
路径4: 1-2-3-4-5-8-2,・・
路径 5: 1 -2-3-4-5-6-8-2…
路径 6: 1-2-3-4-5-6-7-8-2…
④为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少一次。
1)路径1(1-2-9-10-12)的测试用例:
score[k]=有效分数值,当k< i ;
score[i]= -1, 2≤i≤50;
期望结果:根据输入的有效分数算出正确的分数个数nl、总分sum和平均分 average。
2)路径2(1-2-9-11-12)的测试用例:
score[ 1 ]= - 1 ;
期望的结果:average = - 1 ,其他量保持初值。
3)路径3(1-2-3-9-10-12)的测试用例:
输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;
期望结果:nl=50,旦算出正确的总分和平均分。
4)路径4 (1-2-3-4-5-8-2…)的测试用例:
score[i]=有效分数,当i<50;
score[k]<0, k< i ;
期望结果:根据输入的有效分数算出正确的分数个数nl、总分sum和平均分 average。
(2)通过运行测试用例找出下列代码的错误
import java.util.Scanner;
public class score {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int i = 1, n1 = 0, n2 = 0, k = 0;
float sum = 0;
float average;
float score[] = new float[100];
float temp = 0;
// ----------------成绩录入部分不考虑到程序流程图中--------------------------
while (true) {
System.out.println("请输入第" + (k + 1) + "个学生成绩,输入-1结束输入");
try {
temp = s.nextFloat();
} catch (Exception e) {
System.out.println("输入有误");
System.exit(0);
}
if (temp == -1) {
score[k] = temp;
break;
}
score[k] = temp;
k++;
}
// ----------------成绩录入部分不考虑到程序流程图中--------------------------
while (score[i] != -1 && n2 < 50) {
n2 = n2 + 1;//录入的所有成绩包括无效成绩
if (score[i] > 0 && score[i] < 100) {
n1 = n1 + 1;//录入的有效成绩数
sum = sum + score[i];
}
i++;
}
if (n1 > 0)
average = sum / n1;
else
average = -1;
System.out.println("有效成绩=" + n1 + ",sum=" + sum + ",average=" + average);
}
}
答:由图可得,第一个学生成绩未录入
更改:int i = 1 -> int i = 0
文末 : 本文是我的一个实验内容,有问题可留言!