За последние 24 часа нас посетили 15774 программиста и 1664 робота. Сейчас ищут 867 программистов ...

TDD

Тема в разделе "Прочие вопросы по PHP", создана пользователем bxN5, 21 май 2013.

  1. bxN5

    bxN5 Активный пользователь

    С нами с:
    15 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Помогите понять, я на практике правда не применял, но вот почитал про всякие методологии тестирования, юнит тесты в частности, и не могу понять зачем эту нужно, может кто на конкретном примере обьяснить, что вот когда так то так то, то лучше использвоать юнит тесты потому что..
    по моему обычным var_dump и еще парочкой функций можно спокойно обойтись и без написания целых классов, что гораздо быстрее, и не понятно какой из этого всего профит.
    Я понимаю что вы скажите в больших проектах, где много функционала и т.п, но я прошу на конкретном примере разжевать.
    Спасибо
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну когда ты разок заавтоматизировал, то потом всегда функция должна давать прогнозируемый результат, и ты видишь, если изменения привели к ее забагованности.
     
  3. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Представь - у тебя огромный проект. Написал ты его, а через месяц или год нужно добавить новую функцию, а для этого нужно переписать часть твоего кода, "отрефакторить". Ясно дело, что бы старый функционал не сломался. А может даже и не тебе, а кому-то еще.
    Вот для этого нужны тесты.
    Но с тестами есть проблема - нужно протестировать все, что нужно, ничего не упустить. Иначе баг может пропустить.
    Вот тут пришел TDD. В общих чертах - тут сначала осознается - что мы хотим написать. Потом пишется тест - что подаем на вход, что получаем, что происходит. А потом пишется уже класс или метод, который это реализует. Убиваем сразу двух зайцев - весь код покрыт тестами и разработка изначально менее бажная.
    Расплачиваемся за это увеличением времени разработки в несколько раз.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Если учесть время на изучение чужого кода (или своего но старого), то чем сложнее система, тем выгоднее иметь хорошее покрытие тестами. :)
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    TDD - разработка через тестирование.
    тоесть изначально пишется тест который проверяет все основные особенности поведения объекта(например) который нужно создать, или модуля...
    сам модуль пишется сначала пустым, с заглушками во всех его функциях, так, чтобы все его тесты запускались но выдавали false.
    и всё.
    далее остается только дописать в модуле всю функциональность и добиться чтобы все тесты успешно отрабатывали.
    ну и далее тоже удобно, при добавлении нового функционала, также СНАЧАЛА пишется тест для этой функции, а потом уже реализация.
    при этом прогоняются ВСЕ тесты что были для этого тоже. чтобы быть уверенным что новая функциональность не сломала случайно чегото другое в системе.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям