Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.214.69] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Не раз на работе пытались внедрить TDD. Но всё время не выходило. У меня есть мнение, что по простой причине: весь наш софт в 80% случаев занимается вводом, обработкой и сохранением разнообразных данных в БД, с большим количеством ассоциаций. Чтобы написать простой тест, необходимо сгенерировать ДОФИГА тестовых данных (либо подсунуть тестовую БД, но это бред). Прав ли я и TDD при таком подходе применить без шансов? Или все-таки кто-то знает подход? |
Сообщ.
#2
,
|
|
|
Цитата deil @ У нас, похоже, такая же ситуация. Не раз на работе пытались внедрить TDD. Но всё время не выходило. Добавлено Комбинаторика, понимаешь. Больше случаев - больше комбинаций. |
Сообщ.
#3
,
|
|
|
Добрый всем день!
Понимаю ваши затруднения. Тема большая, попробую помочь "быстро": 1. Как правило, БД - это один из крайних сервисов. Если представить приложение как слоеный пирог, то сверху GUI (Swing например), посередине ваш код, снизу - БД, работа с IO. Это все знают. TDD особенно прекрасен, когда все происходит касательно среднего слоя - кода. Когда вы тестируете несколько слоев сразу (код и БД или с ГУИ до IO) подход "тесты сначала" необязателен, точнее в этом вопросе существует много мнений. Некоторые ребята с гугла пишут такие большие (функциональные) тесты после того как все собрано (фактически, это уже test-after). Другие, как автор "Growning OO Software" всегда начинают с функциональных тестов. 2. Многие вообще игнорируют написание функциональных тестов, соответственно, если в вашем среднем слое логики никакой нет (передаете из формы в Базу и обратно), то и тестировать нечего. |
Сообщ.
#4
,
|
|
|
Вот я поэтому и переживаю - обычно такое ПО у меня как в пункте 2, нечего тестировать. Но при этом вероятность возникновения ошибок всё-равно высока..
|
Сообщ.
#5
,
|
|
|
deil, сновная проблема внедрения TDD в том что пытаетесь скорее всего тестировать логику в целом и как заметил blackliteon тест проходит через все слои приложения. Из опята нашего внедрения скажу следующее. С самого начала мы применяли mock'и, что давало возможность изолирования тестируемого кода от остальных слоев приложение, но облегчало это задачу не сильно. Писались дико огромные тесты покрывающие логику затрагивающию чуть ли не всю логику слоя. Сами понимаете повторной правке такие тесты не поддавались, но со временем когда научились дробить логику и тестировать отдельные небольшие куски объектов и логики, когда тесты стали умещаться менее чем в десяток строк то все стало на свои места. Причем тесты желательно начинать писать до того как вы написали логику тестируемого объекта, меньше переписывать будет .
|