白盒测试:覆盖测试及测试用例设计
一、实验目的
1、掌握白盒测试的概念。
2、掌握逻辑覆盖法。
二、实验任务
某工资计算程序功能如下:若雇员月工作小时超过40小时,则超过部分按原小时工资的1.5倍的加班工资来计算。若雇员月工作小时超过50小时,则超过50的部分按原小时工资的3倍的加班工资来计算,而40到50小时的工资仍按照原小时工资的1.5倍的加班工资来计算。程序输入为:雇员月工作时间及小时工资,输出为工资。
运用逻辑覆盖法的六种覆盖标准设计测试用例,并执行测试,撰写实验报告。
实验步骤:
1、画出程序流程图
判定1:hour<=40 && hour>=0
判定2:hour>40 && hour<=50
判定3:hour>50
2、根据逻辑覆盖法的六种覆盖标准设计测试用例,得到6张测试用例表
(1)、语句覆盖:程序需要执行通过的语句有1、3、5、6,由于2、4、7位置没有语句,因此不需要覆盖。
只需一条测试用例即可:
测试用例编号 | hour(小时) | money(元) | 预期输出 | 覆盖语句 |
T1 | 60 | 100 | 8500.00元 | 1、3、5、6 |
(2)、判定覆盖:易知程序流程图中有三个判定
编号 | hour | money | 判定1 | 判定2 | 判定3 | 预期输出 |
T2 | 30 | 50 | 是 | 否 | 否 | 1500.0元 |
T3 | 45 | 60 | 否 | 是 | 否 | 2850.0元 |
T4 | 60 | 70 | 否 | 否 | 是 | 5950.0元 |
(3)、条件覆盖
编号 | hour | money | 判定1 | 判定2 | 判定3 | 预期输出 |
T6 | 30 | 50 | 是 | 否 | 否 | 1500.0元 |
T7 | 45 | 60 | 否 | 是 | 否 | 2850.0元 |
T8 | 60 | 70 | 否 | 否 | 是 | 5950.0元 |
T9 | -10 | 80 | 否 | 否 | 否 | 输入有误 |
(4)、条件/判定覆盖
编号 | hour | money | 判定1 | 判定2 | 判定3 | 预期输出 |
T6 | 30 | 50 | 是 | 否 | 否 | 1500.0元 |
T7 | 45 | 60 | 否 | 是 | 否 | 2850.0元 |
T8 | 60 | 70 | 否 | 否 | 是 | 5950.0元 |
T9 | -10 | 80 | 否 | 否 | 否 | 输入有误 |
(5)、条件组合覆盖
编号 | hour | money | 判定1 | 判定2 | 判定3 | 预期输出 |
T6 | 30 | 50 | 是 | 否 | 否 | 1500.0元 |
T7 | 45 | 60 | 否 | 是 | 否 | 2850.0元 |
T8 | 60 | 70 | 否 | 否 | 是 | 5950.0元 |
T9 | -10 | 80 | 否 | 否 | 否 | 输入有误 |
(6)、修正条件判定覆盖
编号 | hour | money | 判定1 | 判定2 | 判定3 | 预期输出 |
T6 | 30 | 50 | 是 | 否 | 否 | 1500.0元 |
T7 | 45 | 60 | 否 | 是 | 否 | 2850.0元 |
T8 | 60 | 70 | 否 | 否 | 是 | 5950.0元 |
T9 | -10 | 80 | 否 | 否 | 否 | 输入有误 |
3、执行测试,填写软件缺陷报告。
语句覆盖
判定覆盖、条件覆盖和条件/判定覆盖的测试结果
条件组合覆盖、修正条件判定覆盖测试结果
测试缺陷报告:
测试模块: | 工资计算程序 | 开 发 者: | XXX |
测 试 员: | XXX | 测试日期: | 2024.5.8 |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 | ||
BUG3 | 无 | ||
BUG4 | 无 |
三、代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
int hour;
int money;
double sum;
while (true) {
System.out.print("请输入雇员的月工作时间(小时):");
Scanner console = new Scanner(System.in);
hour = console.nextInt();
System.out.print("请输入雇员的时薪(元):");
money = console.nextInt();
if (hour <= 40 && hour >= 0) {
sum = hour * money;
System.out.println("雇员本月的工资为:" + sum + "元");
} else {
if (hour > 40 && hour <= 50) {
sum = 40 * money + (hour - 40) * money * 1.5;
System.out.println("雇员本月的工资为:" + sum + "元");
} else if (hour > 50) {
sum = 40 * money + 10 * money * 1.5 + (hour - 50) * money * 3;
System.out.println("雇员本月的工资为:" + sum + "元");
} else {
System.out.println("输入的月工时有误,请重新输入!");
}
}
}
}
}
记录学习、记录生活,最后,我终将会成为我想成为的人✌✌✌