2025/04/23
实验项目名称:实验二
一、 实验目的
1、掌握白盒测试的基础知识;
2、掌握白盒测试的检查内容及测试目的;
3、掌握黑盒测试的几种基本测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。
二、 实验内容
1、2.对实验一1、3题使用逻辑覆盖法进行测试用例设计。
3、4.对实验一2、4题使用基本路径法进行测试用例设计。
5.
程序伪代码
注意: 1)参数表中EMPTAB 为职员表,DEPTTAB为部门表;
2 ) ESIZE为职员表长度,DSIZE为部门表长度;
3)ERRCODE为出错码
MAXSALERS = 0;
ERRCODE = 0;
if(ESIZE <= 0 || DSIZE <= 0)
ERRCODE = 1;
else
{
for(i = 1; i < DSIZE ; i++) //选出各部门中最大的销售额值
if(SALES[i] > MAXSALES)
MAXSALES = SALES[i];
for(j = 1; j < DSIZE; j++) //循环找出销售额最大的部门
if(SALES[j] == MAXSALES)
{
FOUND = false;
for(int k = 1; k < ESIZE ; k++) //检查销售额最大部门的所有人员
if(EMPTAB.DEPT(k) == DEPTTAB.DEPT(j))
{
FOUND = true;
if(SALARY(k) >= 15000.00 or JOB(k) = 'M') //满足条件的人员加工资
SALARY(k) = SALARY(k) + 100.00;
else
SALARY(k) = SALARY(k) + 200.00;
}
if(FOUND == false)
ERRCODE == 2;
}
}
采用判定覆盖、条件覆盖对该程序进行用例设计
三、 实验步骤及结果
1.
流程图
语句覆盖
测试用例 |
输入日期 |
预期输出 |
说明 |
用例 1 |
20240229 |
SATURDAY |
闰年二月29日,合法日期 |
分支覆盖
测试用例 |
输入日期 |
预期输出 |
说明 |
用例 2 |
20231301 |
输入日期格式不正确,请输入正确的日期格式。 |
月份无效(13月) |
用例 3 |
20230229 |
输入日期格式不正确,请输入正确的日期格式。 |
非闰年二月29日 |
用例 4 |
20230431 |
输入日期格式不正确,请输入正确的日期格式。 |
四月只有30天,输入31日 |
条件覆盖
测试用例 |
输入日期 |
预期输出 |
说明 |
用例 5 |
20240229 |
SATURDAY |
闰年条件为真 |
条件/分支覆盖
测试用例 |
输入日期 |
预期输出 |
说明 |
用例 7 |
20240229 |
SATURDAY |
闰年条件为真,分支为真 |
用例 8 |
20230229 |
输入日期格式不正确,请输入正确的日期格式。 |
闰年条件为假,分支为假 |
路径覆盖
测试用例 |
输入日期 |
预期输出 |
说明 |
用例 9 |
20240229 |
SATURDAY |
合法日期路径 |
用例 10 |
20231301 |
输入日期格式不正确,请输入正确的日期格式。 |
月份无效路径 |
用例 11 |
20230229 |
输入日期格式不正确,请输入正确的日期格式。 |
非闰年二月29日路径 |
用例 12 |
20230431 |
输入日期格式不正确,请输入正确的日期格式。 |
四月31日路径 |
用例 13 |
20230228 |
MONDAY |
非闰年二月28日路径 |
条件组合覆盖
测试用例 |
输入日期 |
预期输出 |
说明 |
用例 14 |
20000229 |
WEDNESDAY |
闰年(能被400整除) |
用例 15 |
19000229 |
输入日期格式不正确,请输入正确的日期格式。 |
非闰年(能被100整除但不能被400整除) |
用例 16 |
20240229 |
SATURDAY |
闰年(能被4整除但不能被100整除) |
用例 17 |
20230228 |
MONDAY |
非闰年(不能被4整除) |
2.
流程图
语句覆盖
测试用例 |
投币选择 |
饮料选择 |
预期输出 |
用例 1 |
五角 |
橙汁 |
已为您送出橙汁。 |
用例 2 |
一元 |
啤酒 |
已为您送出啤酒,并退回五角硬币。 |
分支覆盖
测试用例 |
投币选择 |
饮料选择 |
预期输出 |
用例 3 |
五角 |
橙汁 |
已为您送出橙汁。 |
用例 4 |
一元 |
啤酒 |
已为您送出啤酒,并退回五角硬币。 |
用例 5 |
未选择 |
橙汁 |
请选择投币金额。 |
条件覆盖
测试用例 |
投币选择 |
饮料选择 |
预期输出 |
用例 6 |
五角 |
橙汁 |
已为您送出橙汁。 |
用例 7 |
一元 |
橙汁 |
已为您送出橙汁,并退回五角硬币。 |
用例 8 |
五角 |
啤酒 |
已为您送出啤酒。 |
用例 9 |
一元 |
啤酒 |
已为您送出啤酒,并退回五角硬币 |
分支/条件覆盖
测试用例 |
投币选择 |
饮料选择 |
预期输出 |
用例 10 |
五角 |
橙汁 |
已为您送出橙汁。 |
用例 11 |
一元 |
啤酒 |
已为您送出啤酒,并退回五角硬币。 |
用例 12 |
未选择 |
橙汁 |
请选择投币金额。 |
路径覆盖
测试用例 |
投币选择 |
饮料选择 |
预期输出 |
用例 13 |
五角 |
橙汁 |
已为您送出橙汁。 |
用例 14 |
五角 |
啤酒 |
已为您送出啤酒。 |
用例 15 |
一元 |
橙汁 |
已为您送出橙汁,并退回五角硬币。 |
用例 16 |
一元 |
啤酒 |
已为您送出啤酒,并退回五角硬币。 |
用例 17 |
未选择 |
橙汁 |
请选择投币金额。 |
用例 18 |
未选择 |
啤酒 |
请选择投币金额。 |
条件组合覆盖
测试用例 |
投币选择 |
饮料选择 |
预期输出 |
用例 19 |
五角 |
橙汁 |
已为您送出橙汁。 |
用例 20 |
五角 |
啤酒 |
已为您送出啤酒。 |
用例 21 |
一元 |
橙汁 |
已为您送出橙汁,并退回五角硬币。 |
用例 22 |
一元 |
啤酒 |
已为您送出啤酒,并退回五角硬币。 |
用例 23 |
未选择 |
橙汁 |
请选择投币金额。 |
用例 24 |
未选择 |
啤酒 |
请选择投币金额。 |
3.
控制流图
圈复杂度V(G)=3
测试用例
测试用例编号 |
输入(R, P) |
预期输出 |
对应路径 |
1 |
R=25, P=50 |
找零组合:50元 0张,10元 2张,5元 1张,1元 0张 |
1-2-4、5-7 |
2 |
R=50, P=50 |
找零组合:50元 0张,10元 0张,5元 0张,1元 0张(找零金额为 0) |
1-2-4、5-7 |
3 |
R=101, P=50 |
输入有误,请检查货品价格和付款金额。 |
1-2-3-7 |
4 |
R=50, P=101 |
输入有误,请检查货品价格和付款金额。 |
1-2-3-7 |
5 |
R="abc", P=50 |
输入有误,请检查货品价格和付款金额。 |
1-6-7 |
6 |
R=50, P="xyz" |
输入有误,请检查货品价格和付款金额。 |
1-6-7 |
4.
控制流图
圈复杂度V(G)=5
测试用例
用例编号 |
路径 |
预期输出 |
1 |
1-2-5-6-8-9-11 |
食物供应: 有 电影播放: 可以 |
2 |
1-2-5-6-8-10-11 |
食物供应: 有 电影播放: 可以 |
3 |
1-2-5-7-8-9-11 |
食物供应: 有 电影播放: 可以 |
4 |
1-2-5-7-8-10-11 |
食物供应: 有 电影播放: 可以 |
5 |
1-3-5-6-8-9-11 |
食物供应: 有 电影播放: 可以 |
6 |
1-3-5-6-8-10-11 |
食物供应: 有 电影播放: 可以 |
7 |
1-3-5-7-8-9-11 |
食物供应: 有 电影播放: 不可以 |
8 |
1-3-5-7-8-10-11 |
食物供应: 有 电影播放: 不可以 |
9 |
1-4-5-6-8-9-11 |
食物供应: 有 电影播放: 不可以 |
10 |
1-4-5-6-8-10-11 |
食物供应: 有 电影播放: 不可以 |
11 |
1-4-5-7-8-9-11 |
食物供应: 有 电影播放: 不可以 |
12 |
1-4-5-7-8-10-11 |
食物供应: 无 电影播放: 不可以 |
判定覆盖测试用例
用例编号 |
输入数据 |
预期输出 |
1 |
ESIZE =0,DSIZE =5,职员表和部门表内容任意 |
ERRCODE=1 |
2 |
ESIZE =5,DSIZE =0,职员表和部门表内容任意 |
ERRCODE=1 |
3 |
ESIZE =3,DSIZE =3,部门表中有部门销售额相同为最大值,职员表中有职员属于该部门,其中一名职员工资 16000 元,职位不是经理;另一名职员工资 14000 元,职位是经理;还有一名职员工资 12000 元,职位是普通员工 |
ERRCODE=0,工资分别为16100元、14100元、12200元 |
4 |
ESIZE =3,DSIZE =3,部门表中最大销售额的部门没有职员,其他数据正常 |
ERRCODE=2 |
条件覆盖测试用例
用例编号 |
输入数据 |
预期输出 |
5 |
ESIZE =1,DSIZE =1,职员表中有一名职员工资低于15000,职位不是经理,且属于部门表中唯一部门 |
ERRCODE=0,工资增加200元 |
6 |
ESIZE =1,DSIZE =2,部门表中一个部门销售额大于另一个,职员属于销售额大的部门,且该职员工资等于15000元,职位不是经理 |
ERRCODE=0,工资增加100元 |
7 |
ESIZE =1,DSIZE =2,部门表中一个部门销售额大于另一个,职员属于销售额大的部门,且该职员职位是经理,工资低于15000元 |
ERRCODE=0,工资增加100元 |
8 |
ESIZE =1,DSIZE =2,部门表中一个部门销售额大于另一个,职员属于销售额小的部门 |
ERRCODE=0,工资不变 |