Помогите понять, я на практике правда не применял, но вот почитал про всякие методологии тестирования, юнит тесты в частности, и не могу понять зачем эту нужно, может кто на конкретном примере обьяснить, что вот когда так то так то, то лучше использвоать юнит тесты потому что.. по моему обычным var_dump и еще парочкой функций можно спокойно обойтись и без написания целых классов, что гораздо быстрее, и не понятно какой из этого всего профит. Я понимаю что вы скажите в больших проектах, где много функционала и т.п, но я прошу на конкретном примере разжевать. Спасибо
ну когда ты разок заавтоматизировал, то потом всегда функция должна давать прогнозируемый результат, и ты видишь, если изменения привели к ее забагованности.
Представь - у тебя огромный проект. Написал ты его, а через месяц или год нужно добавить новую функцию, а для этого нужно переписать часть твоего кода, "отрефакторить". Ясно дело, что бы старый функционал не сломался. А может даже и не тебе, а кому-то еще. Вот для этого нужны тесты. Но с тестами есть проблема - нужно протестировать все, что нужно, ничего не упустить. Иначе баг может пропустить. Вот тут пришел TDD. В общих чертах - тут сначала осознается - что мы хотим написать. Потом пишется тест - что подаем на вход, что получаем, что происходит. А потом пишется уже класс или метод, который это реализует. Убиваем сразу двух зайцев - весь код покрыт тестами и разработка изначально менее бажная. Расплачиваемся за это увеличением времени разработки в несколько раз.
Если учесть время на изучение чужого кода (или своего но старого), то чем сложнее система, тем выгоднее иметь хорошее покрытие тестами.
TDD - разработка через тестирование. тоесть изначально пишется тест который проверяет все основные особенности поведения объекта(например) который нужно создать, или модуля... сам модуль пишется сначала пустым, с заглушками во всех его функциях, так, чтобы все его тесты запускались но выдавали false. и всё. далее остается только дописать в модуле всю функциональность и добиться чтобы все тесты успешно отрабатывали. ну и далее тоже удобно, при добавлении нового функционала, также СНАЧАЛА пишется тест для этой функции, а потом уже реализация. при этом прогоняются ВСЕ тесты что были для этого тоже. чтобы быть уверенным что новая функциональность не сломала случайно чегото другое в системе.