На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
  
> TDD и ПО, оперирующее данными
    Всем привет!

    Не раз на работе пытались внедрить TDD. Но всё время не выходило.
    У меня есть мнение, что по простой причине: весь наш софт в 80% случаев занимается вводом, обработкой и сохранением разнообразных данных в БД, с большим количеством ассоциаций. Чтобы написать простой тест, необходимо сгенерировать ДОФИГА тестовых данных (либо подсунуть тестовую БД, но это бред).

    Прав ли я и TDD при таком подходе применить без шансов? Или все-таки кто-то знает подход? :)
      Цитата deil @
      Не раз на работе пытались внедрить TDD. Но всё время не выходило.
      У нас, похоже, такая же ситуация.

      Добавлено
      Комбинаторика, понимаешь. Больше случаев - больше комбинаций.
        Добрый всем день!

        Понимаю ваши затруднения. Тема большая, попробую помочь "быстро":

        1. Как правило, БД - это один из крайних сервисов. Если представить приложение как слоеный пирог, то сверху GUI (Swing например), посередине ваш код, снизу - БД, работа с IO. Это все знают. TDD особенно прекрасен, когда все происходит касательно среднего слоя - кода.

        Когда вы тестируете несколько слоев сразу (код и БД или с ГУИ до IO) подход "тесты сначала" необязателен, точнее в этом вопросе существует много мнений. Некоторые ребята с гугла пишут такие большие (функциональные) тесты после того как все собрано (фактически, это уже test-after). Другие, как автор "Growning OO Software" всегда начинают с функциональных тестов.

        2. Многие вообще игнорируют написание функциональных тестов, соответственно, если в вашем среднем слое логики никакой нет (передаете из формы в Базу и обратно), то и тестировать нечего.
          Вот я поэтому и переживаю - обычно такое ПО у меня как в пункте 2, нечего тестировать. Но при этом вероятность возникновения ошибок всё-равно высока..
            deil, сновная проблема внедрения TDD в том что пытаетесь скорее всего тестировать логику в целом и как заметил blackliteon тест проходит через все слои приложения. Из опята нашего внедрения скажу следующее. С самого начала мы применяли mock'и, что давало возможность изолирования тестируемого кода от остальных слоев приложение, но облегчало это задачу не сильно. Писались дико огромные тесты покрывающие логику затрагивающию чуть ли не всю логику слоя. Сами понимаете повторной правке такие тесты не поддавались, но со временем когда научились дробить логику и тестировать отдельные небольшие куски объектов и логики, когда тесты стали умещаться менее чем в десяток строк то все стало на свои места. Причем тесты желательно начинать писать до того как вы написали логику тестируемого объекта, меньше переписывать будет :).
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0227 ]   [ 14 queries used ]   [ Generated: 18.05.24, 19:17 GMT ]