如何通过TDD成为“测试感染者”?

10

我不断地看到一些人被称为“测试感染者”,意思是他们不仅理解了TDD,而且离不开它。他们已经彻底接受了它。那么问题来了,我该如何变得像他们一样呢?

4个回答

16

"测试感染"的重要意义之一在于,您已经使用了足够多的TDD并看到了足够的成功案例,以至于您不想编写没有TDD的代码。一旦您完成了先编写测试、然后编写代码和重构的循环,并且发现您的错误计数减少、代码变得更好,这不仅会像Zxaos所说的那样成为第二天性,而且您很难回到先编写代码的方式。这就是被“测试感染”了。


16

你已经了解了TDD的相关内容;再读下去也不会让你感到兴奋。

相反,你需要一个真正的个人成功故事。

这是如何做到的。从核心模块中获取一些代码,这些代码不依赖于外部系统或太多其他子程序。无论例程是多么复杂或简单都没有关系。

然后开始编写针对它的单元测试。(我假设您的语言有xUnit或类似的工具。)对测试非常苛刻——测试每个边界情况、测试最大整数和最小整数、测试null、测试具有数百万元素的字符串和列表、测试带有韩文、控制字符、从右到左的阿拉伯语、引号、反斜杠、句点和其他容易破坏事物的东西。

你会发现....bug!起初,你可能认为这些错误并不重要——你还没有遇到这些问题,你的代码可能永远不会出现这种情况等等。但我的经验是,如果你继续前进,你会惊讶于这些小问题的数量。最终,你会觉得很难相信没有一个这样的bug会导致问题。

此外,当你完成一项工作时,你会有一种非常好的成就感。我们知道代码永远不完美,很少没有错误,所以当我们耗尽了许多测试时,我们真的会感到自信。自信是一种美好的感觉。

最后,我认为触发爱的最后一个事件将在几周或几个月后发生。也许你正在修复一个错误或添加一个功能或重构一些代码,而你所做的某些事情将破坏一个单元测试。你会说:“嗯?”你甚至不理解新变化与损坏的测试有什么关系。然后你会找到它,并找到启示。因为你真的不知道你正在破坏代码,而测试拯救了你。

哈利路亚!


3

学习测试驱动开发(TDD)并开始将其整合到您的工作流程中。如果您足够使用这些方法,您会发现它们变得自然而然,并且您会开始在该框架内构建所有开发任务。

此外,开始使用您选择的语言的J-Unit(或X-Unit)框架。


1
一个词,实践!使用 TDD 会增加一些开销,克服这个问题的方法是多练习,并确保使用工具辅助整个过程。你需要熟练掌握这些工具。当你学会了与学习过程相匹配的工具后,就能够轻松编写测试代码,然后你将被“测试感染”。
我曾经回答过类似的问题。你可能也想看看。我提到了一些工具并解释了如何学习 TDD。在这些工具中,Resharper 和选择一个好的模拟框架对于进行 TDD 至关重要。我强调学习这些工具以及你所使用的测试框架的匹配程度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接