Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: TDD долгий путь к инфицированию
Форумы портала PHP.SU » Разное » Тестирование » TDD долгий путь к инфицированию

Страниц (1): [1]
 

1. RomAndry - 21 Марта, 2011 - 11:46:48 - перейти к сообщению
Инфицированием назвать трудно — скорее легкое недомогание.

Собственно - это легкое недомогание открыло глаза на необходимость юнит-тестов при разработке проектов.
Как и многие, я никогда не понимал TDD, читал, пробовал, удалял.
Делал множество подходов но так и не понимал, зачем тратить время на разработку тестов.
Конечно, я понимал что нужно и глубоко в душе знал о пользе тестов в проекте, но реальность не давала начать (время, проект уже был в работе — а TDD необходимо внедрять на уровне проектирования).

Хочу поведать свою историю, которая, надеюсь, поможет многим осознать полезность и начать инфицироваться уже сейчас притом на готовом уже проекте.
Да-да, на готовом и работающем движке. Многие скажут это глупость и это не правильно, я не спорю, я только начал глубокое изучение и моя карма приняла в душу TDD.

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

Почитав умных людей еще раз о пользе TDD я решил писать с нуля прямо в новые модули и быстро остыл, потому как понял, что тест для обычного сохранения из формы в базу и отображение данных не произвело на меня никакого эффекта — я опять понимал, что тесты — это зря потраченное время.

Погулив еще и уже почти разочаровавшись в который раз, я нашел пару слов, которые перевернули мой взгляд на эту тему. И я решил попробовать написать пару тестов для библиотек и классов ядра, а не модулей, которые передают ему действия.

И вот взяв первые методы основного класса я вскрикнул «Эврика» — вызовы в тесте методов и сравнение результатов, навели на мысль, что теперь НЕ страшно трогать ядро, что «обложив» тестами метод, я спокойно могу вносить правки в ядро!
Сделав несколько десятков тестов для нескольких методов я начал править ядро и вот она прелесть — изменив логику я спокойно нажимаю Run Test и наслаждаюсь ошибками и удачными прохождением тестов!

В итоге за несколько дней я перебрал все ядро, нашел недочеты и ошибки, исправил.
Сменил давно устаревшую абстракцию форм HTML, внес множество удобств.

И когда все эти тесты прошли успешно, я решил протестировать уже старым дедовским способом все изменения — все работает как часы.

Я очень рад, что смог понять для себя что TDD это реально хорошо, я вычистил ядро своей CMS и теперь не боюсь правок.

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

Итог:
1. Осознал для себя TDD
2. «Обложил» тестами ядро CMS
3. Тесты — теперь хорошая документация по использованию методов и абстракций.

Надеюсь, что моя статья поможет Вам по началу «простыть» а затем стать TDD infected.
2. DlTA - 27 Апреля, 2011 - 00:53:20 - перейти к сообщению
извиняюсь за offTop
RomAndry, если есть возможность, описать, общими фразами с маленькими примерами о
RomAndry пишет:
CMS содержит ядро, которое содержит основные классы, абстракции (база, формы) и модули, в которых логика и шаблоны.

интересно с точки зрения проектирования, какой функционал ложится на основные классы, как они друг с другом взаимодействуют, абстракции - что и как, тоже с логикой и шаблонами. + интересует ядро как таковое выделено или как.

в общем такой себе репортаж))
3. RomAndry - 27 Апреля, 2011 - 08:53:20 - перейти к сообщению
ну в 2-х словах так и не расскажешь, а на большее пока времени нету =(

 

Powered by ExBB FM 1.0 RC1