黑盒测试

167 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

黑盒测试

原则上,黑盒测试是在不查看要测试的代码的情况下构建的。黑盒测试允许测试人员和实现者从不同的群体中抽取。当我们这些教授编程课程的人为我们分配给学生的问题集生成测试用例时,我们正在开发黑盒测试套件。商业软件的开发人员通常拥有在很大程度上独立于开发组的质量保证组。他们也开发了黑盒测试套件。

这种独立性降低了生成与代码错误相关的错误的测试套件的可能性。例如,假设程序的作者做出了隐式但无效的假设,即永远不会用负数调用函数。如果同一个人为程序构建了测试套件,他可能会重复错误,而不是用否定参数测试函数。

黑盒测试的另一个积极特性是,它在实现更改方面是健壮的。由于测试数据是在不了解实现的情况下生成的,因此在更改实现时不需要更改测试。

如前所述,生成黑盒测试数据的一个好方法是通过规范探索路径。

image.png

通过此规范似乎只有两条不同的路径:一条对应于 x = 0,另一条对应于 x >0. 然而,常识告诉我们,虽然有必要测试这两种情况,但几乎是不够的。

还应测试边界条件。查看 list 类型的参数通常意味着查看空列表、只有一个元素的列表、包含不可变元素的列表、包含可变元素的列表以及包含列表的列表。在处理数字时,它通常意味着查看非常小和非常大的值以及“典型”值。例如,对于 sqrt,尝试与 Eigure 8-1 中的值相似的 x 和 epsilon 值可能是有意义的。

image.png

前四行旨在表示典型案例。请注意,x 的值包括一个完美平方、一个小于 1 的数字和一个具有无理平方根的数字。如果这些测试中的任何一个失败,则程序中存在需要修复的错误。

其余行测试 x 和 epsilon 的极大和极小值。如果这些测试中的任何一个失败,则需要修复某些内容。也许代码中存在需要修复的错误,或者可能需要更改规范以便更容易满足。例如,当 epsilon 小得离谱时,期望找到平方根的近似值可能是不合理的。要考虑的另一个重要边界条件是混叠。考虑代码

image.png

它在大多数情况下都有效,但当L1和L2引用同一列表时则不起作用。任何不包含表单副本(L,L)调用的测试套件都不会显示该错误。