【发布时间】:2010-06-29 20:40:15
【问题描述】:
重复极短的开发周期如何帮助您消除软件中的错误?如果正确实施,TDD 最能有效地捕捉哪些错误?为什么?
提前致谢!
【问题讨论】:
重复极短的开发周期如何帮助您消除软件中的错误?如果正确实施,TDD 最能有效地捕捉哪些错误?为什么?
提前致谢!
【问题讨论】:
TDD 迫使您从“消费”您将要编写的代码的角度进行思考。这种观点有助于将您(开发人员)置于需要考虑如何构建 API 以及如何验证实现要求的位置。
TDD 有助于识别以下领域的缺陷:
TDD 还有助于提高测试的覆盖率,因为它将测试带到了前台,而不是使其成为“事后”活动。当测试最后进行时,由于时间和预算限制,或者由于开发人员的热情和动力自然下降,它最容易被忽略或忽视。
【讨论】:
设计“错误”:如果您通常进行 TDD,那么您自然会得到可测试的设计。反过来,这倾向于减少耦合等 - 导致代码库更容易使用。
另外,我发现 TDD 可以在某些情况下更容易考虑极端情况 - 但设计优势更重要,IMO。
【讨论】:
对我来说,空值或零值参数的情况是 TDD 最容易发现的错误。在这种情况下,我倾向于先编写我的测试,作为一种清除 API 的方式,而不考虑值:“哦,只是在里面扔一个空值;我们将在下一个测试中输入一个真正的值。”所以我的方法最初是为了处理特定的边缘情况而编写的,并在整个红绿重构过程中重复运行该测试(以及所有其他测试)以保持该边缘情况正常工作。在使用 TDD 之前,我会经常忘记 null 或零参数。现在,在没有真正尝试的情况下,它们被作为我应用 TDD 方式的自然结果来处理。
【讨论】:
Null Object 模式?