15. Some Thoughts about Testing

15关于测试的一些想法

15.1个目标

通过测试证明程序是正确的是不可能的。相反,它已被正式证明,通过测试来证明一般程序是不可能的。对于那些希望证明程序是正确的人,理论程序证明或代码的明确检查可以成为可行的选择。测试服务器,因为它基于测试,不能用于认证。它的预期用途是(代价高昂)查找错误。一个成功的测试套件可以揭示一个bug。如果测试套件结果正常,那么我们知道的很少,我们以前不知道。

15.2要测试什么

有多种测试套件。一些专注于在某个界面中调用每个功能或命令(以文档化的方式)。其他一些人也这样做,但使用各种非法参数,并验证服务器处于活动状态并拒绝具有合理错误代码的请求。一些测试套件模拟一个应用程序(通常由一个应用程序的几个模块组成),一些测试套件总体上会做一些棘手的请求,有些测试套件甚至在特定的目标加载模块的帮助下测试内部功能。

另一个有趣的测试套件类别是检查修复的错误不再发生的类别。当引入错误修正时,将编写一个用于检查特定错误的测试用例并将其提交给受影响的测试套件。

旨在寻找错误。写出现在或将来发现错误的概率最高的任何测试。更多地关注关键部分。关键子系统中的错误比其他系统贵得多。

旨在进行功能测试而不是实施细节。实现细节经常发生变化,测试套件将长期存在。不同的平台和版本的实现细节通常有所不同。如果必须测试实现细节,请尝试将它们分解为单独的测试用例。这些测试用例以后可以重写或跳过。

此外,旨在测试一切,一次,不少于,不再。如果每个测试用例都失败,则仅仅因为界面中的一个功能发生了变化而无效。