Я работаю над улучшением процесса разработки нашей группы, и я рассматриваю, как лучше всего реализовать проект по контракту с тестовым развитием. Кажется, что у двух методов много перекрытий, и мне было интересно, есть ли у кого-нибудь представление о следующих (связанных) вопросах:
- Разве это не против принципа DRY иметь TDD и DbC, если вы не используете какой-то генератор кода для генерации модульных тестов на основе контрактов? В противном случае вы должны поддерживать контракт в двух местах (тест и сам контракт), или я что-то упускаю?
- В какой степени TDD делает DbC избыточным? Если я достаточно хорошо пишу тесты, они не эквивалентны написанию контракта? Получаю ли я только дополнительную выгоду, если я выполняю контракт во время выполнения, а также через тесты?
- Значительно проще/гибче использовать TDD, а не TDD с DbC?
Основным вопросом этих вопросов является этот более общий вопрос: Если мы уже делаем TDD должным образом, получим ли мы существенную выгоду для накладных расходов, если мы также используем DbC?
Несколько деталей, хотя я думаю, что вопрос в основном зависит от языка:
- Наша команда очень маленькая, и 10 программистов.
- В основном мы используем Perl.