我最近问了一个有关游戏开发中测试的问题 -顺便说一句,我是如何知道这一点的。那里的答案指出了一些奇怪的特定缺点:
- 当您的代码应高度耦合时,这样做的成本很高。
- 当您必须了解各种硬件平台,应该分析向用户的输出并且代码结果仅在更广泛的上下文中才有意义时,这很难做到。
- UI和UX测试非常困难。
- 尤其值得注意的是,自动化测试可能比一堆非常便宜(或免费)的beta测试器更昂贵,更不有效。
第四点使我想起了我的一些经验。我在一家非常精简,面向XP的Scrum管理的公司工作,强烈建议进行单元测试。但是,在迈向更简洁,更少官僚主义的道路上,该公司只是忽略了质量检查团队的建设-我们没有测试人员。因此,即使测试覆盖率超过95%,客户也经常在某些系统上发现琐碎的错误。所以我要补充一点:
另外,我当时正在思考有关文档的问题,并提出了一个假设(对于较小的范围而言)可以有效地测试两个假设。我只是觉得代码发展如此之快,以至于很难使文档以这种速度发展,因此花时间使代码具有可读性比编写沉重而容易过时的文档更有价值。(当然,这不适用于API,而仅适用于内部实现。)该测试还存在相同的问题:与被测试的代码相比,编写可能会太慢。OTOH,这是一个较小的问题,因为测试警告它们已经过时,而您的文档将保持沉默,只要您不非常非常仔细地阅读它。
最后,我有时发现一个问题:自动化测试可能取决于工具,而这些工具的编写可能不正确。我前一段时间使用XUL开始了一个项目,伙计,为这种平台编写单元测试非常痛苦。我使用Objective-C,Cocoa和Xcode 3启动了另一个应用程序,并且在其上的测试模型基本上是一堆解决方法。
关于自动测试的缺点,我还有其他经验,但大多数经验都在其他答案中列出。尽管如此,我还是自动化测试的坚定拥护者。这省去了很多工作和头痛,我默认情况下始终建议这样做。与自动测试的好处相比,我认为这些缺点仅仅是细节。(重要的是在发表异端评论后,始终要表达自己的信念,以免出现自动辩护。)