测试模型的意思是:有目的地选择输入值,手算出答案,再和表格显示的结果比较。最重要的数值是在规则边界上的数值,因为结果就在那里切换。
这一课接在设置单位格式之后,属于电子表格建模与图表单元,用到的是分开输入、计算和输出里的布局。
应该测试什么?
对模型里的每个条件,测试三种数值:
- 刚好低于边界。
- 刚好等于边界。
- 刚好高于边界。
另外,在模型会做除法的地方测试空白或零输入,在规则应该拒绝的地方测试无效输入。
一步一步进行测试
- 列出模型里的规则,例如门槛和除法。
- 写一张测试表,包含输入值以及每个值手算出的预期结果。
- 把每个数值输入输入单元格,一次一个。
- 比较表格结果和你的预期结果。
- 修正任何不符,然后重新运行整张测试表,因为修正可能弄坏其他情况。
例题
一家虚构的网店收取 RM8 运费,除非订单总额达到 RM150 或以上。总额在 B2,B3 里是:
=IF(B2>=150,0,8)
| B2 的测试值 | 预期运费 | 表格结果 |
|---|---|---|
| 149.99 | 8 | 8 |
| 150 | 0 | 0 |
| 150.01 | 0 | 0 |
| 0 | 8(或者题目要求时拒绝) | 8 |
每一行都相符,所以规则正确。关键在于测试了 150 本身,因为“RM150 或以上”包括它。
**除法测试:**B6 里的利润率是 =B4/B5,B5 是收入。如果 B5 是 0,表格会显示错误。更安全的写法是 =IF(B5=0,0,B4/B5)。B4 = 156、B5 = 300 时得到 0.52,B5 = 0 时得到 0。
要留意的错误
常见的失误是用错了比较符号,又只测试容易的数值。
错误的公式:=IF(B2>150,0,8)
用 200 和 50 测试,得到 0 和 8,看起来没错。但刚好 150 的订单要付 RM8,违反了规则。
正确的做法是使用 >=,并把边界放进测试表。只测试典型数值,有缺陷的公式也会通过。边界测试才能让它露馅。
自我检测
1. 公式 =IF(A1>=40,“Pass”,“Fail”) 的用意是让 40 分及以上及格。对 39、40 和 41,应该显示什么?
显示答案
**Fail、Pass、Pass。**边界 40 及格,因为规则使用 >=。
2. 一条规则给 18 岁以下的学生折扣,公式是 =IF(B2<18,0.2,0)。18 岁的人得到多少折扣?17 岁和 19 岁呢?
显示答案
18 岁得 0,17 岁得 0.2(20%),19 岁得 0。18 岁不是小于 18,所以边界在折扣之外。
3. 某单元格里是 =B4/B5,而 B5 可能是 0。写出更安全的版本,并写出 B4 = 50、B5 = 0 时的结果。
显示答案
=IF(B5=0,0,B4/B5)。B5 = 0 时返回 0,所以不会出现错误。
接下来学什么
最后一步是检查读者实际收到的内容:检查打印区域和隐藏行。只读 SQL 练习实验室把同样的边界思维用在数据库条件上。
如果测试一直通过,评分者的数值却出错,ICT 线上一对一补习里的老师可以帮你在动手写公式之前先建好测试表。