实验二 软件白盒测试
实验二 软件白盒测试
某工资计算程序功能如下:若雇员月工作小时超过40小时,则超过部分按原小时工资的1.5倍的加班工资来计算。若雇员月工作小时超过50小时,则超过50的部分按原小时工资的3倍的加班工资来计算,而40到50小时的工资仍按照原小时工资的1.5倍的加班工资来计算。程序输入为:雇员月工作时间及小时工资,输出为工资。
运用逻辑覆盖法的六种覆盖标准设计测试用例,并执行测试,撰写实验报告。
实验步骤:
1)使用编程语言完成上述某工资计算程序编写
def calculate_salary(hours, hourly_rate):
if hours <= 40:
salary = hours * hourly_rate
elif hours <= 50:
salary = 40 * hourly_rate + (hours - 40) * hourly_rate * 1.5
else:
salary = 40 * hourly_rate + 10 * hourly_rate * 1.5 + (hours - 50) * hourly_rate * 3
return salary
2)画出程序流程图
3)根据逻辑覆盖法的六种覆盖标准设计测试用例,得到6张测试用例表,并完成测试。
3.1 语句覆盖
测试用例编号 | 输入数据 (hours, hourly_rate) | 预期输出 | 实际输出 | 是否通过 |
1 | (30, 10) | 300 | 300 | 是 |
2 | (45, 10) | 475 | 475 | 是 |
3 | (55, 10) | 625 | 625 | 是 |
3.2 判定覆盖
测试用例编号 | 输入数据 (hours, hourly_rate) | 覆盖判定条件 | 预期输出 | 实际输出 | 是否通过 |
1 | (30, 10) | hours≤40 | 300 | 300 | 是 |
2 | (45, 10) | 40<hours≤50 | 475 | 475 | 是 |
3 | (55, 10) | hours>50 | 625 | 625 | 是 |
3.3 条件覆盖
测试用例编号 | 输入数据 (hours, hourly_rate) | 覆盖条件 (hours≤40, hours≤50) | 预期输出 | 实际输出 | 是否通过 |
1 | (30, 10) | (True, True) | 300 | 300 | 是 |
2 | (45, 10) | (False, True) | 475 | 475 | 是 |
3 | (55, 10) | (False, False) | 625 | 625 | 是 |
3.4 判定/条件覆盖
测试用例编号 | 输入数据 (hours, hourly_rate) | 覆盖判定和条件 | 预期输出 | 实际输出 | 是否通过 |
1 | (30, 10) | hours≤40分支, (True, True) | 300 | 300 | 是 |
2 | (45, 10) | 40<hours≤50分支, (False, True) | 475 | 475 | 是 |
3 | (55, 10) | hours>50分支, (False, False) | 625 | 625 | 是 |
3.5 条件组合覆盖
测试用例编号 | 输入数据(hours, hourly_rate) | 覆盖条件组合 | 预期输出 | 实际输出 | 是否通过 |
1 | (30, 10) | hours≤40=True, hours≤50=True | 300 | 300 | 是 |
2 | (45, 10) | hours≤40=False, hours≤50=True | 475 | 475 | 是 |
3 | (55, 10) | hours≤40=False, hours≤50=False | 625 | 625 | 是 |
3.6 路径覆盖
测试用例编号 | 输入数据(hours, hourly_rate) | 覆盖路径 | 预期输出 | 实际输出 | 是否通过 |
1 | (30, 10) | hours≤40路径 | 300 | 300 | 是 |
2 | (45, 10) | 40<hours≤50路径 | 475 | 475 | 是 |
3 | (55, 10) | hours>50路径 | 625 | 625 | 是 |
4 | (40, 10) | hours=40边界路径 | 400 | 400 | 是 |
5 | (50, 10) | hours=50边界路径 | 550 | 550 | 是 |
测试执行结果
所有测试用例均通过,程序功能正确。通过六种不同的逻辑覆盖方法设计测试用例,确保了程序的各种逻辑路径和条件组合都得到了充分测试。