跳到正文
IGCSE·Tuition
计算机科学 · 课程

设计正常、边界和无效测试数据

题目要你写测试数据,你写了三个都能通过的数字,这几乎证明不了程序有什么问题。

本页内容
  1. 怎样建立测试表?
  2. 例题
  3. 要小心的错误
  4. 自我检测
  5. 接下来学什么?

测试数据是你挑选来检查程序是否正常工作的一组输入。好的一组涵盖三种类型:正常、边界(boundary)和无效(invalid)。每个输入你还要根据需求,在程序运行之前写出预期结果。

这一课接在核实与验证之后,属于验证、核实与测试单元。

怎样建立测试表?

以这条需求为例:“接受 13 到 17(含)的整数年龄,其余全部拒绝。”

类型含义测试值预期结果
正常典型、被允许15接受
边界(被接受)正好在界限上13、17接受
边界(被拒绝)紧贴界限之外12、18拒绝
无效类型错误或远超范围“abc”、-5、200拒绝

为什么除了 13 和 17,还要选 12 和 18?因为边界错误就是数值落在界限哪一边的错误,只有两边都测试才能看出来。

例题

一位程序员写了下面的检查,它应该接受 13 到 17(含)的年龄。

INPUT Age
IF Age > 13 AND Age < 17 THEN
  OUTPUT "Accepted"
ELSE
  OUTPUT "Rejected"
ENDIF

**第 1 步,运行正常值。**Age = 15:15 > 13 为 TRUE,15 < 17 为 TRUE,输出 “Accepted”。预期:Accepted。通过。

第 2 步,运行被接受的边界值。

AgeAge > 13Age < 17输出预期结果
13FALSETRUERejectedAccepted失败
17TRUEFALSERejectedAccepted失败

**第 3 步,运行被拒绝的边界值。**Age = 12:12 > 13 为 FALSE,所以 “Rejected”。Age = 18:18 < 17 为 FALSE,所以 “Rejected”。两者都与预期一致,通过。

**第 4 步,诊断。**正常值通过了,掩盖了错误。只有边界测试 13 和 17 失败。错误在于 > 和 < 应该是 >= 和 <=。

修正后的一行:

IF Age >= 13 AND Age <= 17 THEN

再次运行 13 和 17,现在输出 “Accepted”,与预期一致。

要小心的错误

**错误的测试表:**正常 14、15、16。预期:全部接受。

学生选了三个中间的值,所以没有任何值能暴露边界错误。

三个正常值几乎没有增加任何信息。把其中两个换成 13、17、12 和 18,再加一个像文字这样的无效值。每一行都应该有不同的目的。

自我检测

1. 规则写着:“数量必须是 1 到 10(含)。”请给出两个被接受的边界值,以及两个紧贴界限之外的被拒绝值。

显示答案

被接受的边界值:1 和 10。紧贴界限之外、被拒绝的值:0 和 11。

2. 对同一条规则,各给出一个正常值和一个无效值,并写出预期结果。

显示答案

正常:5,预期接受。无效:“five”(文字),预期拒绝。像 500 这样的值,也是用于测试拒绝的有效测试数据。

3. 代码是 IF Quantity > 1 AND Quantity <= 10 THEN OUTPUT "OK"。哪个测试值能暴露错误?程序会怎样?

显示答案

**1。**预期结果是接受,但 1 > 1 为 FALSE,所以程序不会输出 “OK”。第一个比较应该用 >=。

接下来学什么?

下一课练习在运行代码之前说明预期结果,这个习惯让测试表真正有意义。之后你会找出没有被任何测试执行到的分支。安全 Python 推理沙盒可以让你用表格测试这样的检查,综合练习则把所有内容放在一起测试。

如果你的测试表总是漏掉会暴露错误的值,一对一线上计算机科学补习的老师可以陪你逐行检查每个测试。

常见问题

测试数据有哪三种类型?

正常数据是典型的、应该被接受的数据。边界数据(boundary)位于允许范围的边缘,紧贴界限之外的值应该被拒绝。无效数据(invalid)是类型错误或远超规则的数据,也应该被拒绝。有些试卷把最后一类称为 abnormal 或 erroneous 数据。

年龄范围 13 到 17 的边界数据是什么?

被接受的边界值是 13 和 17,紧贴界限外、应被拒绝的值是 12 和 18。好的测试两组都要用,因为小于与小于等于之间的错误,正好出现在这些位置。

为什么每个测试都要有预期结果?

没有预期结果,就无法说程序是否通过。你先根据需求决定应该发生什么,再运行测试并比较。这也避免你盲目相信程序碰巧输出的内容。

多少个测试值才够?

足够涵盖每种类型和规则的每个边界。对一个范围检查来说,至少要有一个正常值、两个边界值、两个紧贴界限外的值,以及一个像文字这样的无效类型。同一类型再多加几个,帮助不大。

更新于:

下一步

如果你的测试表看起来很完整,却漏掉会让代码出错的值,一对一的老师可以和你一起检查每张表,指出哪一行本来能抓出错误。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生