Цикл TDD равен test, code, refactor, (repeat) и затем отправляется . TDD подразумевает разработку, основанную на тестировании, в частности это означает понимание требований, а затем написание тестов, прежде чем разрабатывать или писать код.
Мое естественное влечение - философское предубеждение в пользу TDD; Я хотел бы убедиться, что есть другие подходы, которые сейчас работают хорошо или даже лучше, чем TDD, поэтому я задал этот вопрос. Есть и другие вопросы, которые предполагают, что TDD дорог, труден в реализации, создает проблемы ... согласован, но каковы хорошие альтернативы?
Каковы хорошие примеры совершенно приемлемых подходов, которые не используют / не требуют / требуют разработки, управляемой тестами?
Я могу думать о множестве подходов, которые не являются TDD, но могут доставить гораздо больше хлопот, чем того, чего они стоят ... это не моральное суждение, просто они стоят дороже, чем они стоят ... просто примеры вещей, которые могут быть хорошими в качестве учебных упражнений, но подходы, которые я нахожу НЕ приемлемыми в серьезном производстве и НЕ TDD, могут включать:
- Проверка качества вашего продукта - Сосредоточение усилий на развитии навыков тестирования / QA может быть проблематичным, особенно если вы не работаете в первую очередь над требованиями и разработкой ... симптом этого включает в себя сортировку ошибок, когда разработчикам приходится иметь дело с множеством различных ошибок, необходимо использовать форму сортировки - каждый цикл разработки становится все хуже и хуже, программисты работают все больше и больше часов, спят все меньше и меньше, стараются сохранить идти в марше смерти, пока они не будут уничтожены.
- Суеверие ... вера в вещи, которые вы не понимаете - это может включать заимствование кода, который, как вы считаете, был доказан или проверен откуда-то, например. унаследованный код, мастер создания магического кода или проект с открытым исходным кодом, и вы идете вперед, взламывая бурю модификаций, вставляя FaceBook Connect в свой пользовательский интерфейс, изобретая некоторые новые магические функции на лету (например, гибридное приложение с использованием API Twitter). , GoogleMaps API и, возможно, Zappos API), демонстрируя ваш крутой новый «продукт» нескольким людям, а затем записывая простую «спецификацию» и список «тестовых случаев» и передавая их Mechanical Turk для тестирования. (Дополнительные баллы начисляются за уверенность, что ваш продукт будет следующим Facebook, Twitter или YouTube.)