Хотите драйва? Вам в tdd!
DESCRIPTION
Доклад с которым я выступал на майском .net субботнике Ciklum в КиевеTRANSCRIPT
Обо мне
• > 10 лет в разработке
• > 6 лет в .Net
• Фанат TDD
Счастье это..
Когда утром хочется на работу,
а вечером хочется домой
Культ пятницы
Драйв Не драйв
Что печалит
• Внешние ограничения
• G-Код
• Лишний код
• Начальный тупняк
• Медленная обратная связь
• Отладка
Пути спасения
• Другой проект
• Другая компания
• Другой подход
TDD работает
• Для всех основных языков
• Для всех методологий
• С любым (почти) менеджментом
TDD способствует
• Ускорению разработки
• Улучшению кода
• Изучению новых фишек
– Dependency Injection
– Unit Test Framework
– Test Doubles Framework
– Design Patterns
– Continuous Integration
Ускорение
• Быстрая обратная связь
• Меньше отладчика
• Ad-hoc тесты
• «Список покупок»
Уверенность
• Система постоянно в порядке
• Ощущение движения вперед
• Безболезненное улучшение кода
Типы тестов
• Unit tests
• Integration tests
• Ad-hoc tests
Red Green Refactor
• Пишем тест на несуществующее поведение
• Запускаем – он падает
• Пишем нужное поведение
• Запускаем тест – зеленый
• Рефакторим поведение, очищая код
• Запускаем тест – зеленый
• Комитим наши изменения.
Принципы
• Сначала тест – потом код!!!
• Минимум кода в тесте
• Проверяемый метод содержит кода ровно столько, чтобы тест проходил
Integration Tests
• Тестируют части системы
• Могут взаимодействовать с внешним миром
А где QAs?
Препятствия
• Отрицание
• Неправильное понимание
• Неприятие командой
• Неприятие менеджментом
Ошибки внедрения
• Тесты после кода
• Тестируем старый код
• Отсутствие опыта
Больше драйва?
• Парное программирование
• Agile Modeling
• Continuous deployment
Заключение
• Не используете TDD – попробуйте
• Не получается – спрашивайте
• Получается – делитесь опытом
Спасибо!
• Сергей Калинец
• http://tdd4.net
• Skype: sergiikalinets
• Twitter: @skalinets