Хотите драйва? Вам в TDD!

Preview:

DESCRIPTION

Доклад с которым я выступал на майском .net субботнике Ciklum в Киеве

Citation preview

Хотите драйва? Вам в TDD!

Сергей Калинецhttp://tdd4.net

@skalinets

Обо мне

• > 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

• kalinets@gmail.xom

• Twitter: @skalinets