Частый посетитель
Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008
Помог: 6 раз(а)
|
Инфицированием назвать трудно — скорее легкое недомогание.
Собственно - это легкое недомогание открыло глаза на необходимость юнит-тестов при разработке проектов.
Как и многие, я никогда не понимал TDD, читал, пробовал, удалял.
Делал множество подходов но так и не понимал, зачем тратить время на разработку тестов.
Конечно, я понимал что нужно и глубоко в душе знал о пользе тестов в проекте, но реальность не давала начать (время, проект уже был в работе — а TDD необходимо внедрять на уровне проектирования).
Хочу поведать свою историю, которая, надеюсь, поможет многим осознать полезность и начать инфицироваться уже сейчас притом на готовом уже проекте.
Да-да, на готовом и работающем движке. Многие скажут это глупость и это не правильно, я не спорю, я только начал глубокое изучение и моя карма приняла в душу TDD.
Итак, работая над новым проектом, я решил пересмотреть свой движок, добавив функциональности, исправив многие погрешности до которых не доходили руки, а были отмечены в TODO.
И вот в один из вечеров я, вспомнив, что не плохо опять попробовать TDD — а вдруг проникнусь.
Моя CMS содержит ядро, которое содержит основные классы, абстракции (база, формы) и модули, в которых логика и шаблоны.
Почитав умных людей еще раз о пользе TDD я решил писать с нуля прямо в новые модули и быстро остыл, потому как понял, что тест для обычного сохранения из формы в базу и отображение данных не произвело на меня никакого эффекта — я опять понимал, что тесты — это зря потраченное время.
Погулив еще и уже почти разочаровавшись в который раз, я нашел пару слов, которые перевернули мой взгляд на эту тему. И я решил попробовать написать пару тестов для библиотек и классов ядра, а не модулей, которые передают ему действия.
И вот взяв первые методы основного класса я вскрикнул «Эврика» — вызовы в тесте методов и сравнение результатов, навели на мысль, что теперь НЕ страшно трогать ядро, что «обложив» тестами метод, я спокойно могу вносить правки в ядро!
Сделав несколько десятков тестов для нескольких методов я начал править ядро и вот она прелесть — изменив логику я спокойно нажимаю Run Test и наслаждаюсь ошибками и удачными прохождением тестов!
В итоге за несколько дней я перебрал все ядро, нашел недочеты и ошибки, исправил.
Сменил давно устаревшую абстракцию форм HTML, внес множество удобств.
И когда все эти тесты прошли успешно, я решил протестировать уже старым дедовским способом все изменения — все работает как часы.
Я очень рад, что смог понять для себя что TDD это реально хорошо, я вычистил ядро своей CMS и теперь не боюсь правок.
Согласен, что это только первый маленький шаг (нет еще понимания Mock объектов и прочее), но шаг сделан. Своим примером хочу показать, что это не страшно, что это полезно и что не обязательно нужно начинать с чистого листа. С последним пунктом спорно — но зная как работает метод я писал тесты, несколько что бы инициировать разные варианты поведения.
Итог:
1. Осознал для себя TDD
2. «Обложил» тестами ядро CMS
3. Тесты — теперь хорошая документация по использованию методов и абстракций.
Надеюсь, что моя статья поможет Вам по началу «простыть» а затем стать TDD infected.
|