我正在改进我们团队的开发流程,考虑最佳实践在测试驱动开发中如何实现设计契约。两种技术似乎有很大的重叠,我想知道以下相关问题的一些见解:
- 如果没有使用某种代码生成器根据契约生成单元测试,TDD和DbC是否违反了DRY原则?否则,您必须在两个位置(测试和契约本身)维护契约,或者我错过了什么?
- TDD在多大程度上使DbC变得多余?如果我编写得足够好的测试,它们是否等同于编写契约?只有将契约在运行时以及通过测试进行强制执行,才会获得额外的好处吗?
- 仅使用TDD比同时使用TDD和DbC更容易/更灵活吗?
这些问题的主要点是这个更一般的问题:如果我们已经适当地执行TDD,那么如果我们也使用DbC,我们会获得显着的效益吗?
尽管我认为问题基本上与语言无关,但还有一些细节:
- 我们的团队非常小,少于10名程序员。
- 我们主要使用Perl。