Информация об изменениях

Сообщение Re: TDD от 08.11.2024 9:44

Изменено 08.11.2024 9:55 fmiracle

Re: TDD
Здравствуйте, Nnova, Вы писали:

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

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

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

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

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

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

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

Большой бонус — если у тебя есть уже хоть какие-то тесты к началу реализации функционала, то у тебя сразу есть средство для быстрого запуска отладки сразу твоего реализуемого функционала, без запуска всей системы целиком (что может быть очень трудоемко, а иногда вообще невозможно локально).
Re: TDD
Здравствуйте, Nnova, Вы писали:

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

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

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

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

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

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

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

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