4.1 · 设计测试数据
目标: 设计能抓到真 bug 的测试用例。
测试数据三类
| 类别 | 目的 | 例子(有效年龄 0–150) |
|---|---|---|
| Normal 正常 | 典型有效输入 | 17、25、60 |
| Boundary 边界 | 有效范围边缘 | 0、150 |
| Erroneous 错误(无效) | 超范围或类型错 | -1、151、"abc"、空 |
每个输入字段都三类全覆盖。bug 大都藏在边界。
实例 · 折扣资格
规则:会员若年龄 ≥ 60 或 消费超过 $1000 享折扣。
测试用例
| # | 类型 | age | spent | 期望 |
|---|---|---|---|---|
| 1 | Normal | 17 | 200 | False |
| 2 | Normal | 65 | 200 | True |
| 3 | Normal | 17 | 1500 | True |
| 4 | Boundary | 60 | 0 | True |
| 5 | Boundary | 59 | 0 | False |
| 6 | Boundary | 0 | 1000 | False(严格 > 1000) |
| 7 | Boundary | 0 | 1001 | True |
| 8 | Erroneous | -5 | 200 | 拒绝输入 |
| 9 | Erroneous | 60 | -100 | 拒绝输入 |
注意边界(60 vs 59、1000 vs 1001)揭示精确阈值。
测试计划模板
| # | 输入 | 期望输出 | 实际输出 | 通过 / 失败 | 备注 |
|---|---|---|---|---|---|
| 1 | … | … | … | ✓ / ✗ |
SBA 报告里要留测试计划。
测试驱动心态
即使没正式框架,也养成:
- 先写测试(「我若加
is_palindrome函数,这些输入应回 True/False」)。 - 实现。
- 跑测试。
- 重构。
学生常见错误
- 只测快乐路径(明显能跑的正常输入)。
- 跳过边界值。
- 不测无效输入。
- 手动测但不记录测试数据。
考试式题目
题(4 分): 程序接受百分制分数 (0–100)。建议三个边界测试用例与两个错误输入测试用例。
参考答案:
边界用例:
0—— 最低有效分。100—— 最高有效分。50—— 正好及格分(条件逻辑边界)。
错误用例:
-5—— 范围以下。"abc"—— 类型错(文字而非数字)。
关键要点
- 三类:正常、边界、错误。
- 边界藏 bug 最多。
- 记录测试用例。
➡️ 下一节:4.2 错误类型