August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
我们如何知道应该什么时候停止调试呢?不错,在找到所有错误前,我们应该继续调试,或者尽力去做。我们如何知道已经找到了最后一个错误了呢?答案是没有办法。“最后一个错误”是程序员之间的笑话:这种东西是不存在的。对一个大程序来说,我们永远不会找到“最后一个错误”。因为在寻找错误的同时,我们还要忙于按照新需求修改程序。
除了调试以外,我们还需要一种系统地查找错误的方法。这被称为测试(test),我们将在7.3节、第10章的习题和第26章中详细介绍相关内容。基本上,测试是把一个巨大的、有系统地选择过的数据集输入给程序,然后把相关的结果与期望值进行比较。基于一组给定输入的一次程序运行被称为一个测试用例(test case)。实际程序可能会需要上百万个测试用例来进行测试。基本上,系统测试不可能靠人手工输入一个个测试用例。在介绍过后续几章内容并掌握了必要的工具后,我们再正式讨论测试。在此期间,我们需要谨记的是找到错误才是好的,这才是进行测试需要秉承的态度。看看下面的内容:
态度1:我比任何程序都聪明!我将击败这些@#$%^代码。
态度2:这部分代码我已经打磨了两周时间了。它是完美的。
你认为谁会找出更多的错误?当然,最好的情况是一个有经验的人带着一点“态度1”,沉着、冷静、耐心地对程序中所有可能出错的地方进行系统地检查。好的测试人员是非常难能可贵的。
我们会尽量系统地选择测试用例,一般会包括正确和不正确的输入数据。7.3节中会给出第一个示例。