大多数软件开发人员都同意的几件事之一是,除非您对其进行测试,否则您不应依赖于代码才能正常工作。如果您不对其进行测试,则可能包含隐藏的错误,这些错误只会导致您日后要做更多的工作。
我知道如何测试我的普通代码,但是我应该如何测试我的测试代码,以确保它们可以有效地发现并报告出现的错误?我个人非常愚蠢,无法编写本应通过的错误测试用例,因此一开始就破坏了我编写测试的目的。幸运的是,我及时发现并修复了错误,但是根据测试的口头禅,如果没有一套自己的测试来确保它能够正常工作,似乎没有一套完整的测试套件。
在我看来,执行此操作的最佳方法是确保错误代码的测试失败。*如果我花2分钟的时间交替向代码中添加错误并确保失败,那么我应该有一个可以接受的信心,即测试“工作”。这使我想到第二个问题:有什么好的方法可以引入bug以确保它们被测试用例捕获?我是否应该随机注释掉语句,if-else
否定条件来确保运行错误的分支,并更改带有副作用的代码的执行顺序等,直到我满意我的测试将抓住大多数常见的错误?专业开发人员如何验证他们的测试确实按照他们的预期去做?他们只是假设测试有效,还是花时间测试它们?如果是这样,他们如何测试测试?
我并不是在建议人们花太多时间测试他们的测试,然后再测试他们的测试,以至于他们从来没有真正编写过真正的代码,但是我做的愚蠢的事情让我觉得我可以从中受益进行“元测试”,并且对实现此目标的最佳方法感到好奇。:D
*我可以检查在测试“无错误”代码时测试是否通过,但是使用代码作为测试规范似乎倒退了……