Monday, February 1, 2016

Разработка через тестирование. Нужно ли это.

Я попробую тезисно ответить на вопросы

Нужно ли TDD?
Когда его стоит внедрять?
Замедляет ли работу написание тестов?
Какие подводные камни вы можете встретить?

Нужно ли TDD. 


Очень трудно ответить на этот вопрос, для начала нужно внести ясность. 

TDD - это методология, достаточно не сложная, но из-за этого очень трудно понять важность всех мелочей которые в ней пропагандируются. 

Написание тестов - всего лишь написание тестов. Простой пример, если вы научились писать тесты, они вам помогают в работе, вы оценили всю мощь такого подхода, работаете ли вы по TDD? Может быть да, может быть нет. Если вы не проводите рефакторинг после каждого успешного теста - то это уже не TDD ( я могу ошибаться, но к понимаю важности этого момента я шел очень долгое время), более того, если вы не проводите рефакторинг тестов, это тоже не TDD. 

Еще сложный технический момент, само по себе написание тестов не такая простая задача, если вы учитесь писать тесты, то по сути вы учитесь заново программировать ( при условии что вы все делаете правильно) 

Или например вы пишите тесты, но высокого уровня. Например тесты на views для django. Или любые другие высокоуровневые или приемочные тесты  и только их. Это уже не TDD. Вы покрываете систему требованиями, но не контролируете архитектуру. Это разработка через приемочные тесты. 

Вот эта тонкая грань между псевдо-TDD и TDD сильно размыта и большая часть негатива или непонимания TDD идут именно из-за нее. 

Ну и финальный ответ на поставленный вопрос - прост. Обладая опытом разработки через TDD уже после пары проектов вы начнете видеть нужно ли TDD для каждой конкретной задачи. Поэтому как "идеальный программист" вы должны освоить эту методологию. 

Когда его стоит внедрять?

 
Каталог сайтов, Добавить сайт