Re: TDD
От: fmiracle  
Дата: 08.11.24 09:44
Оценка: +1
Здравствуйте, Nnova, Вы писали:

N>ни в одном TDD на реальных проектах не применялась по очевидным причинам — для них надо иметь уже проработанные интерфейсы, а их конечно же нет т.к. они "затвердевают" только в процессе самой разработки

N>Есть тут те, кто реально юзает TDD на коммерческих проектах? Каким образом смогли ее внедрить?

Ты же имеешь в виду интерфейсы тестируемых классов?

Я не практикую TDD полностью, чтобы всегда вот писать тесты до реализации функционала. Пишу как удобно — бывает пишу до, бывает после, бывает вообще не пишу юнит-тесты.

Тем не менее часто — да, начинаю писать тесты в начале, еще до реализации функционала. И тогда процесс такой:

1. Прикидываю в уме общий план как будет выглядеть решение, и примерные интерфейсы классов которые нужны при этом.
2. Накидываю интерфейсы классов
3. Пишу тесты, какие придумаю на этот момент
4. В процессе написания тестов, уже часто приходят мысли что "а вот неудобно же такое взаимодействие", и уточняю интерфейсы классов, дополняю тесты.
5. После нескольких итераций пунктов 3-4 интерфейсы исходного решения иногда заметно отличаются от исходных — а я еще и функционал фактически не писал
6. Начинаю делать функционал, в процессе иногда приходят мысли что надо добавить или исправить в тестах, повторяю с пункта 3.
7. А иногда и выясняется, что начальная структура была проблемной для реализации и приходится менять интерфейсы, взаимодействия классов и тесты. Ну бывает, не повезло.

то есть, если пишу тесты "до", то это не значит что весь их набор будет сразу. Часть дописывается и во время реализации и после.

Большой бонус — если у тебя есть уже хоть какие-то тесты к началу реализации функционала, то у тебя сразу есть средство для быстрого запуска отладки сразу твоего реализуемого функционала, без запуска всей системы целиком (что может быть очень трудоемко, а иногда вообще невозможно локально).
Отредактировано 08.11.2024 9:55 fmiracle . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.