tdd
DESCRIPTION
Материалы третьего дня тренинга "Refactoring. Unit Testing. TDD", который проводился 11 Декабря 2013 г. в Нижнем НовгородеTRANSCRIPT
![Page 1: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/1.jpg)
TDD
Антон Бевзюк
Дмитрий Павлов
![Page 2: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/2.jpg)
http://get.cardmone.net
Контакты
![Page 3: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/3.jpg)
Перерывы
Жест
Никаких мобил
Ноуты только на упражнениях
Парковка
Правила
![Page 4: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/4.jpg)
Проверка домашней работы
![Page 5: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/5.jpg)
УПРАЖНЕНИЕ
![Page 6: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/6.jpg)
Напишите StringCalculator
Вход Выход
“” 0
“1,2\n3,4\n5,1000” 15
“-1,2,-3” Exception “Negatives
-1, -3 are not allowed.”
“//[**][%%%]\n1**2%%%3” 6
![Page 7: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/7.jpg)
ЧТО ТАКОЕ TDD?
![Page 8: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/8.jpg)
TDD -методология дизайна
![Page 9: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/9.jpg)
RED/GREEN/REFACTOR
Подумать!!!
Написать тестНачало
Скомпилировать
Написать код
Запустить тест
Убедиться, что он прошел
Исправить
ошибки компиляции
Запустить тест
Убедиться, что он упал
Рефакторинг
10 мин
![Page 10: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/10.jpg)
Assert First
![Page 11: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/11.jpg)
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
![Page 12: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/12.jpg)
TDD -методология заработка
![Page 13: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/13.jpg)
TDD == юнит тестирование?
![Page 14: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/14.jpg)
TDD == Test First?
![Page 15: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/15.jpg)
Test Driven Development
Test Oriented Development
Test Driven Design
Test Driven Development & Design
TDD это …
![Page 16: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/16.jpg)
В Чем Прикуп?
• Описание системы
• Регрессионное тестирование
• Рефакторинг
• Мгновенное обнаружение проблем
• Простой дизайн
• Маленькие шаги
• Видно «плохой» дизайн
TDD
Unit Testing
![Page 17: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/17.jpg)
Цитаты
“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
![Page 18: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/18.jpg)
TDD -методология продаж
![Page 19: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/19.jpg)
Вы любите дебажить?
![Page 20: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/20.jpg)
“Debuggers are a wasteful Timesink”
Время
Robert C. Martin
![Page 21: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/21.jpg)
TDD -методология вождения
![Page 22: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/22.jpg)
УПРАЖНЕНИЕ
![Page 23: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/23.jpg)
Выберите себе домен
Идеи
Жизнь
Боулинг
Нестандартный футбол
Чистый домен
![Page 24: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/24.jpg)
•TDD = Unit Testing
•TDD = 100% test coverage
•TDD = Объем работ * 2
•Unit tests – это все, что нужно
Легенды и Мифы о TDD
![Page 25: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/25.jpg)
Не учит писать красивые тесты
Не гарантирует поддерживаемость тестов
Не гарантирует читаемость тестов
Что TDD НЕ делает
![Page 26: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/26.jpg)
Тесты, которым доверяешь
Дизайн (внезапно)
Понятный домен
Покрытие тестами
Простоту кода
Постепенную разработку
Поставку раньше и чаще
Высокое качество кода
Что TDD делает
![Page 27: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/27.jpg)
Чему мы научились
![Page 28: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/28.jpg)
TDD -методология
чего?
![Page 29: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/29.jpg)
Чему мы научились?
![Page 30: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/30.jpg)
Что такое рефакторинг
Рефакторинг – это непрерывный процесс
Рефакторинг – это просто
Основные рефакторинги
Маленькие шаги
Как рефакторить старый код
Технический долг
День 1. Рефакторинг
![Page 31: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/31.jpg)
Зачем тестировать?
Структура теста
Именование
DSL
Stub, Fake, Spy, Mock
Тесты на поведение и состояние
Хороший тест
Пирамида тестирования
День 2. Юнит тестирование
![Page 32: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/32.jpg)
TDD это просто
TDD это методология дизайна
TDD > Unit Testing
День 3. TDD
![Page 33: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/33.jpg)
У нас нет на это времени
Исторически так сложилось
У нас своя «специфика» проекта
Запрещает менеджер
Мы сразу пишем идеальный код
Мы наняли Чака Норриса
Придумайте свою «уникальную» причину
Мы не пишем тесты и не рефакторим…
![Page 34: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/34.jpg)
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
![Page 35: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/35.jpg)
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
![Page 36: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/36.jpg)
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
![Page 37: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/37.jpg)
Как внедрять изменения?
Метод Джоэла Спольски (7+1)
http://www.joelonsoftware.com/articles/fog0000000332.html
Что дальше?
![Page 38: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/38.jpg)
Книги
![Page 39: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/39.jpg)
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
Ссылки
![Page 40: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/40.jpg)
Вопросы?
![Page 41: TDD](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555e1b30d8b42a6a4c8b457a/html5/thumbnails/41.jpg)
Контакты
http://get.cardmone.net