我不断地看到一些人被称为“测试感染者”,意思是他们不仅理解了TDD,而且离不开它。他们已经彻底接受了它。那么问题来了,我该如何变得像他们一样呢?
我不断地看到一些人被称为“测试感染者”,意思是他们不仅理解了TDD,而且离不开它。他们已经彻底接受了它。那么问题来了,我该如何变得像他们一样呢?
"测试感染"的重要意义之一在于,您已经使用了足够多的TDD并看到了足够的成功案例,以至于您不想编写没有TDD的代码。一旦您完成了先编写测试、然后编写代码和重构的循环,并且发现您的错误计数减少、代码变得更好,这不仅会像Zxaos所说的那样成为第二天性,而且您很难回到先编写代码的方式。这就是被“测试感染”了。
你已经了解了TDD的相关内容;再读下去也不会让你感到兴奋。
相反,你需要一个真正的个人成功故事。
这是如何做到的。从核心模块中获取一些代码,这些代码不依赖于外部系统或太多其他子程序。无论例程是多么复杂或简单都没有关系。
然后开始编写针对它的单元测试。(我假设您的语言有xUnit或类似的工具。)对测试非常苛刻——测试每个边界情况、测试最大整数和最小整数、测试null、测试具有数百万元素的字符串和列表、测试带有韩文、控制字符、从右到左的阿拉伯语、引号、反斜杠、句点和其他容易破坏事物的东西。
你会发现....bug!起初,你可能认为这些错误并不重要——你还没有遇到这些问题,你的代码可能永远不会出现这种情况等等。但我的经验是,如果你继续前进,你会惊讶于这些小问题的数量。最终,你会觉得很难相信没有一个这样的bug会导致问题。
此外,当你完成一项工作时,你会有一种非常好的成就感。我们知道代码永远不完美,很少没有错误,所以当我们耗尽了许多测试时,我们真的会感到自信。自信是一种美好的感觉。
最后,我认为触发爱的最后一个事件将在几周或几个月后发生。也许你正在修复一个错误或添加一个功能或重构一些代码,而你所做的某些事情将破坏一个单元测试。你会说:“嗯?”你甚至不理解新变化与损坏的测试有什么关系。然后你会找到它,并找到启示。因为你真的不知道你正在破坏代码,而测试拯救了你。
哈利路亚!
学习测试驱动开发(TDD)并开始将其整合到您的工作流程中。如果您足够使用这些方法,您会发现它们变得自然而然,并且您会开始在该框架内构建所有开发任务。
此外,开始使用您选择的语言的J-Unit(或X-Unit)框架。