Upload
smartstepgroup
View
211
Download
3
Embed Size (px)
DESCRIPTION
Материалы третьего дня тренинга "Refactoring. Unit Testing. TDD", который проводился 11 Декабря 2013 г. в Нижнем Новгороде
Citation preview
TDD
Антон Бевзюк
Дмитрий Павлов
http://get.cardmone.net
Контакты
Перерывы
Жест
Никаких мобил
Ноуты только на упражнениях
Парковка
Правила
Проверка домашней работы
УПРАЖНЕНИЕ
Напишите StringCalculator
Вход Выход
“” 0
“1,2\n3,4\n5,1000” 15
“-1,2,-3” Exception “Negatives
-1, -3 are not allowed.”
“//[**][%%%]\n1**2%%%3” 6
ЧТО ТАКОЕ TDD?
TDD -методология дизайна
RED/GREEN/REFACTOR
Подумать!!!
Написать тестНачало
Скомпилировать
Написать код
Запустить тест
Убедиться, что он прошел
Исправить
ошибки компиляции
Запустить тест
Убедиться, что он упал
Рефакторинг
10 мин
Assert First
TDD Kata
Step 1: int Add(string numbers)
“” 0
“2112” 2112
“2,3” 5
Step 2: Any amount of numbers
“1,2,3,4,5” 1+2+3+4+5
Step 3: \n delimiter
“1\n2,3” 1+2+3
Step 4: Custom delimiters
“//;\n1;2” 1+2
Step 5: Negatives not allowed
“-1,2,-3” Exception “Negatives -1, -3 are not allowed.”
Step 6: Ignore numbers > 1000
“1,1000,1001” 1001
Step 7: Multichar delimiter
“//[***]\n1***2***3” 1+2+3
Step 8: Multiple multichar delimiters
“//[**][%%%]\n1**2%%%3” 1+2+3
TDD -методология заработка
TDD == юнит тестирование?
TDD == Test First?
Test Driven Development
Test Oriented Development
Test Driven Design
Test Driven Development & Design
TDD это …
В Чем Прикуп?
• Описание системы
• Регрессионное тестирование
• Рефакторинг
• Мгновенное обнаружение проблем
• Простой дизайн
• Маленькие шаги
• Видно «плохой» дизайн
TDD
Unit Testing
Цитаты
“Test-Driven Development is a powerful way to produce well designed code with fewer defects”
Martin Fowler
“The best way that I know to write code is to shape it from the beginning with tests”
Ron Jeffries
“Fewer defects, less debugging, more confidence, better design, and higher productivity in my programming practice”
Kent Beck
TDD -методология продаж
Вы любите дебажить?
“Debuggers are a wasteful Timesink”
Время
Robert C. Martin
TDD -методология вождения
УПРАЖНЕНИЕ
Выберите себе домен
Идеи
Жизнь
Боулинг
Нестандартный футбол
Чистый домен
•TDD = Unit Testing
•TDD = 100% test coverage
•TDD = Объем работ * 2
•Unit tests – это все, что нужно
Легенды и Мифы о TDD
Не учит писать красивые тесты
Не гарантирует поддерживаемость тестов
Не гарантирует читаемость тестов
Что TDD НЕ делает
Тесты, которым доверяешь
Дизайн (внезапно)
Понятный домен
Покрытие тестами
Простоту кода
Постепенную разработку
Поставку раньше и чаще
Высокое качество кода
Что TDD делает
Чему мы научились
TDD -методология
чего?
Чему мы научились?
Что такое рефакторинг
Рефакторинг – это непрерывный процесс
Рефакторинг – это просто
Основные рефакторинги
Маленькие шаги
Как рефакторить старый код
Технический долг
День 1. Рефакторинг
Зачем тестировать?
Структура теста
Именование
DSL
Stub, Fake, Spy, Mock
Тесты на поведение и состояние
Хороший тест
Пирамида тестирования
День 2. Юнит тестирование
TDD это просто
TDD это методология дизайна
TDD > Unit Testing
День 3. TDD
У нас нет на это времени
Исторически так сложилось
У нас своя «специфика» проекта
Запрещает менеджер
Мы сразу пишем идеальный код
Мы наняли Чака Норриса
Придумайте свою «уникальную» причину
Мы не пишем тесты и не рефакторим…
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
Как внедрять изменения?
Метод Джоэла Спольски (7+1)
http://www.joelonsoftware.com/articles/fog0000000332.html
Что дальше?
Книги
AgileRussia http://agilerussia.ru/
Roy Osherove http://osherove.com/
Top 100 книг про agile http://habrahabr.ru/company/scrumtrek/blog/201740/
Pluralsight http://www.pluralsight.com/training
SmartStepGroup http://www.smartstepgrp.com/
Презентация про технический долг http://penxy.com/kyle
Ссылки
Вопросы?
Контакты
http://get.cardmone.net