Слайд 2
Кент Бек — разработчик
программного обеспечения, создатель таких методологий разработки
ПО как экстремальное программирование (XP) и разработка через тестирование (TDD)
Слайд 3
Разработка через тестирование
Техника разработки ПО, основывающаяся на повторении
очень коротких циклов разработки:
Написать тест, покрывающий желаемое изменение.
Написать
код, который позволяет пройти тест.
Выполнить рефакторинг.
Слайд 4
Тест
Тест – это процедура, которая позволяет либо подтвердить,
либо опровергнуть работоспособность кода.
Тесты бывают ручные и автоматические.
Слайд 5
Инверсия ответственности
От логики тестов и от их качества
зависит, будет ли код соответствовать техническому заданию.
Слайд 6
Методика TDD
Методика TDD заключается, в основном, в организации
автоматических тестов (unit testing) и выработке определенных навыков тестирования.
Одной
из особенностей является написание тестов ДО написания кода.
Слайд 7
Мантра TDD
Написать тест;
Добиться, чтобы тест сработал;
Устранить дублирование (выполнить
рефакторинг).
Слайд 9
Рефакторинг
Процесс изменения внутренней структуры программы, не затрагивающий её
внешнего поведения и имеющий целью облегчить понимание её работы.
Слайд 10
Причины применения рефакторинга
Рефакторинг применяется постоянно при разработке кода.
Основными стимулами являются:
Необходимо добавить новую функцию, которая недостаточно укладывается
в принятое архитектурное решение.
Необходимо исправить ошибку, причины возникновения которой сразу не ясны. (Плохой код).
Преодоление трудностей в разработке, которые обусловлены сложной логикой программы. (Плохой код).
Слайд 12
Нет класса Dollar;
Нет конструктора;
Нет метода times()
Нет переменной класса
Amount.
Не компилируется – 4 ошибки!
Слайд 14
Успешный тест – зеленая полоса!
Слайд 15
Полный цикл TDD
Добавить небольшой тест.
Запустить все тесты, при
этом обнаружить, что что-то не срабатывает.
Внести небольшое изменение.
Снова запустить
тесты и убедиться, что все они успешно выполняются.
Устранить дублирование с помощью рефакторинга.
Слайд 18
1. Напишите тест.
Представьте, как будет реализована в коде
воображаемая операция.
Придумывая её интерфейс, опишите все элементы, которые, как
вам кажется, понадобятся.
Пример: в первом тесте мы добавили класс Dollar, функцию times и переменную-член Amount.
Слайд 19
2. Заставьте тест работать
Первоочередная задача – получить зеленую
полосу.
Если ОЧЕВИДНО простое и элегантное решение – создайте его.
Если
на реализацию такого решения потребуется время – ОТЛОЖИТЕ его. Просто отметьте, что к нему придется вернуться, когда будет решена основная задача – быстро получить зеленый индикатор.
Противоречит правилам хорошей разработки?
Слайд 20
3. Улучшите решение
После того, как система работает, избавьтесь
от прошлых прегрешений и вернитесь к хорошей разработке.
Удалите дублирование
(и другие огрехи) и быстро сделайте так, чтобы полоска снова стала зеленой.
Слайд 21
Чистый код, который работает
Сначала мы получаем код, который
работает.
Затем делаем из него чистый код.
Слайд 22
Слабые места TDD
Сложно привыкнуть.
Сложно применять TDD в ряде
случаев, например, при разработке GUI.
Требуется больше времени на разработку,
т.к. необходимо писать тесты.
Т.к. модульные тесты обычно пишутся теми же, кто написал код, то в случае неверной трактовки требований к приложению, и тест и тестируемый код могут содержать ошибки.
И др.