测试越晚,编写测试的成本就越高。
错误的生存时间越长,修复的成本就越高。
收益递减法则确保您可以尝试消除遗漏,以确保没有错误。
佛陀教导了中间道路的智慧。测试很好。好东西太多了。关键是能够分辨出您何时失衡。
与在编写代码之前编写测试的情况相比,在没有测试的情况下编写的每一行代码都会花费更大的成本来添加测试。
没有测试的每一行代码将更加难以调试或重写。
您编写的每个测试都需要时间。
每个错误都需要时间来修复。
忠实的人会告诉您在没有首先编写失败的测试之前不要编写一行代码。该测试可确保您得到预期的行为。由于测试证明行为相同,因此它使您可以快速更改代码,而不必担心会影响系统的其余部分。
您必须权衡所有这些与测试未添加功能的事实。生产代码添加了功能。功能是付账的。
务实地说,我添加了所有可以摆脱的测试。我无视观看测试的评论。我什至不相信代码会按照我的想法去做。我相信测试。但据我所知,偶尔扔冰雹玛丽会很幸运。
但是,许多成功的编码人员都不会进行TDD。那并不意味着他们不测试。他们只是不执着地坚持每行代码都有针对它的自动化测试。甚至Bob叔叔也承认他不测试自己的UI。他还坚持要求您将所有逻辑移出UI。
作为橄榄球的隐喻(即美式橄榄球),TDD是一项很好的地面比赛。仅在您编写一堆代码并希望它能正常工作的地方进行手动测试是一个成功的游戏。您都可以擅长。除非你们俩都能做到,否则您的职业生涯不会进入季后赛。除非您学习何时挑选每个,否则它不会成为超级碗。但是,如果您需要朝某个特定方向轻推,那么当我过世时,官员的电话经常会反驳我。
如果您想尝试一下TDD,我强烈建议您练习之前尝试练习。TDD半途而废,全心全意,半途而废是一个不尊重它的重要原因。这就像将一杯水倒入另一杯中。如果您不承诺而快速彻底地做到这一点,那末您到处都是运球的水。