软件测试学习:三角形、nextday、佣金问题黑盒测试

这篇博客详细介绍了软件测试中的黑盒测试方法,通过实例展示了如何设计测试用例,包括三角形合法性判断、NextDay日期计算和佣金计算问题。测试覆盖了语句、判定、条件和路径等多个方面,确保了程序各部分的全面测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三角形、nextday、佣金问题黑盒测试

1.设计三角形的路径覆盖测试用例,如语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖等
伪代码程序如下:
① Input(a,b,c)
② if(a>200||a<1||b>200||b<1||c>200||c<1) then
③ X="请输入一个1~200的数值”
④ End if
⑤ If((a+b>c)&&(a+c)>b&&(b+c)>a) then
⑥ If(ab&&bc) then
⑦ X=“等边三角形”
⑧ END if
⑨ if(ab||bc||a==c)
⑩ X=“等腰三角形”
⑪ else
⑫ X=“一般三角形”
⑬ End if
⑭ else
⑮ X=“这不是一个三角形”
⑯ ENd if
⑰ Output(X)

在这里插入图片描述

1)语句覆盖测试:使程序每一条语句都被执行一次。
测试用例如下:

序号 输入 预期输出 实际输出 测试结果 覆盖路径
A B C
1 5 6 7 一般三角形 一般三角形 Passed 1-2-4-5-
6-9-11-12-13-16-17
2 6 6 7 等腰三角形 等腰三角形 Passed 1-2-4-5-
9-10-13-17
3 6 6 6 等边三角形 等边三角形 Passed 1-2-4-5-
6-7-8-17
4 3 3 6 不是三角形 不是三角形 Passed 1-2-4-5-
14-15-16-17
5 200 -20 -1 请输入一个1~200的数值 请输入一个1~200的数值 Passed 1-2-3-17

2)判定覆盖测试:使程序中每一个判定至少获得一次”真”值和”假”值。
测试用例如下:
序号 输入 a>200||a<1||b>200||b<1||c>200||c<1 (a+b>c)&&(a+c)>b&&(b+c)>a ab&&bc ab||bc||a==c 测试结果
A B C
1 3 4 5 真 真 假 假 Passed
2 3 3 4 真 真 假 真 Passed
3 5 5 5 真 真 真 - Passed
4 2 2 6 真 假 - - Passed
5 200 201 -1 假 - - - Passed

3)条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。
对于第一个判定(a>200||a<1||b>200||b<1||c>200||c<1)
条件0<a<201 取真值记为T1,取假值记为-T1
条件0<b<201 取真值记为T2,取假值记为-T2
条件0<c<201 取真值记为T3,取假值记为-T3
对于第二个判定((a+b>c)&&(a+c)>b&&(b+c)>a)
条件a+b>c 取真值记为T4,取假值记为-T4
条件a+c>b 取真值记为T5,取假值记为-T5
条件b+c>a 取真值记为T6,取假值记为-T

### 白盒测试概述 白盒测试是一种软件测试方法,旨在验证程序内部结构和逻辑路径。此过程涉及检查代码中的所有分支、循环和其他条件语句,以确保其按预期工作[^1]。 对于`NextDay`函数或模块,在开发过程中实施有效的白盒测试策略至关重要。这不仅有助于识别潜在错误,还能提高整体代码质量并增强系统的可靠性。 ### 测试案例设计 为了全面覆盖`NextDay`功能的不同方面,建议创建一系列精心设计的单元测试用例: #### 边界情况处理 ```python def test_next_day_boundary(): from datetime import date # Test leap year transition assert next_day(date(2024, 2, 28)) == date(2024, 2, 29), "Leap Year Transition Failed" # End of month non-leap year assert next_day(date(2023, 2, 28)) == date(2023, 3, 1), "End Of Month Non-Leap Year Failed" # Last day of December assert next_day(date(2023, 12, 31)) == date(2024, 1, 1), "Year Changeover Failed" ``` #### 正常流程检验 ```python def test_next_day_normal_flow(): from datetime import timedelta today = date.today() tomorrow = today + timedelta(days=1) result = next_day(today) assert result == tomorrow, f"Normal Day Increment Failed Expected {tomorrow} but got {result}" ``` #### 错误输入检测 ```python def test_invalid_input_handling(): try: invalid_date = 'NotADate' next_day(invalid_date) raise AssertionError("Invalid Input Handling Failed") except TypeError as e: pass # Correctly handled exception ``` 通过上述方式可以有效评估`NextDay`实现的质量,并帮助发现可能存在的缺陷或异常行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值