实验三:白盒测试

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
在这里插入图片描述

文末 : 本文是我的一个实验内容,有问题可留言!

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值