反对测试

2020-07-07 12:38:53

我真的不喜欢写测试。如果我觉得它们是有益的,我会愿意忍受一定程度的不适,但我也发现它们很少值得这么麻烦。为了有效,需要针对代码未处理的某些条件进行测试。然而,通常情况下,当同一个人编写代码和测试时,覆盖范围会重叠。错误是由意想不到的条件引起的,但由于其意想不到的性质,这些条件也是未经测试的。即使是故意针对边缘条件的测试也有遗漏的倾向。Off by One测试将无法正确检测代码中的Off。测试x<;Limit和y<;Limit将有100%的覆盖率,而不测试x+y<;Limit。测试非常脆弱,由于代码中完全无害的更改而崩溃,因为它们无意中嵌入了非常具体的实现依赖项。测试比赛条件吗?实际上是对调度器的循环算法的测试。每一次测试破坏都需要进行调查,以确定除了声称的测试历史之外,真正在测试的是什么。这与确定代码块实际执行的功能是一样的,不同之处在于所获得的理解对将来的开发没有用处。然后,还有关于依赖于实现的测试是否实际上没有帮助的讨论,因为如果代码的外部用户也开始依赖于这种行为,尽管它没有文档记录。如果它足够重要,可以进行测试,则应该将其记录在案。但后来这个想法被推倒了,因为我们需要保持它的无文件记录,以防我们想要改变。不过,如果不是为了干扰测试,这正是我们想要做的事情。测试也以一种良好的方式依赖于测试平台,但这要求它们也在受影响的平台上运行。如果一个测试只在小的字符顺序系统上运行,那么检查函数是否为字节顺序中立的测试将无法捕获错误。其他测试会过时,因为目标平台已停用,但测试并非如此。与无用的代码相比,删除陈旧测试的压力更小。请注意,Windows XP的解决方法已从代码中删除,但检查它是否仍然有效的测试并未删除。当然,一种方法是只编写没有这些问题的好测试。如果您喜欢编写测试并且非常擅长,您可以继续这样做。

发布时间:2020-07-07 00:36更新时间:07-07 2020 00:36标记:编程思路