41
TDD Антон Бевзюк Дмитрий Павлов

TDD

Embed Size (px)

DESCRIPTION

Материалы третьего дня тренинга "Refactoring. Unit Testing. TDD", который проводился 11 Декабря 2013 г. в Нижнем Новгороде

Citation preview

Page 1: TDD

TDD

Антон Бевзюк

Дмитрий Павлов

Page 2: TDD

http://get.cardmone.net

Контакты

Page 3: TDD

Перерывы

Жест

Никаких мобил

Ноуты только на упражнениях

Парковка

Правила

Page 4: TDD

Проверка домашней работы

Page 5: TDD

УПРАЖНЕНИЕ

Page 6: TDD

Напишите 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

ЧТО ТАКОЕ TDD?

Page 8: TDD

TDD -методология дизайна

Page 9: TDD

RED/GREEN/REFACTOR

Подумать!!!

Написать тестНачало

Скомпилировать

Написать код

Запустить тест

Убедиться, что он прошел

Исправить

ошибки компиляции

Запустить тест

Убедиться, что он упал

Рефакторинг

10 мин

Page 10: TDD

Assert First

Page 11: TDD

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

TDD -методология заработка

Page 13: TDD

TDD == юнит тестирование?

Page 14: TDD

TDD == Test First?

Page 15: TDD

Test Driven Development

Test Oriented Development

Test Driven Design

Test Driven Development & Design

TDD это …

Page 16: TDD

В Чем Прикуп?

• Описание системы

• Регрессионное тестирование

• Рефакторинг

• Мгновенное обнаружение проблем

• Простой дизайн

• Маленькие шаги

• Видно «плохой» дизайн

TDD

Unit Testing

Page 17: TDD

Цитаты

“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

TDD -методология продаж

Page 19: TDD

Вы любите дебажить?

Page 20: TDD

“Debuggers are a wasteful Timesink”

Время

Robert C. Martin

Page 21: TDD

TDD -методология вождения

Page 22: TDD

УПРАЖНЕНИЕ

Page 23: TDD

Выберите себе домен

Идеи

Жизнь

Боулинг

Нестандартный футбол

Чистый домен

Page 24: TDD

•TDD = Unit Testing

•TDD = 100% test coverage

•TDD = Объем работ * 2

•Unit tests – это все, что нужно

Легенды и Мифы о TDD

Page 25: TDD

Не учит писать красивые тесты

Не гарантирует поддерживаемость тестов

Не гарантирует читаемость тестов

Что TDD НЕ делает

Page 26: TDD

Тесты, которым доверяешь

Дизайн (внезапно)

Понятный домен

Покрытие тестами

Простоту кода

Постепенную разработку

Поставку раньше и чаще

Высокое качество кода

Что TDD делает

Page 27: TDD

Чему мы научились

Page 28: TDD

TDD -методология

чего?

Page 29: TDD

Чему мы научились?

Page 30: TDD

Что такое рефакторинг

Рефакторинг – это непрерывный процесс

Рефакторинг – это просто

Основные рефакторинги

Маленькие шаги

Как рефакторить старый код

Технический долг

День 1. Рефакторинг

Page 31: TDD

Зачем тестировать?

Структура теста

Именование

DSL

Stub, Fake, Spy, Mock

Тесты на поведение и состояние

Хороший тест

Пирамида тестирования

День 2. Юнит тестирование

Page 32: TDD

TDD это просто

TDD это методология дизайна

TDD > Unit Testing

День 3. TDD

Page 33: TDD

У нас нет на это времени

Исторически так сложилось

У нас своя «специфика» проекта

Запрещает менеджер

Мы сразу пишем идеальный код

Мы наняли Чака Норриса

Придумайте свою «уникальную» причину

Мы не пишем тесты и не рефакторим…

Page 34: TDD

Рефакторинг, Unit Testing и TDD

можно применять и в вашем проекте

Page 35: TDD

Рефакторинг, Unit Testing и TDD

можно применять и в вашем проекте

Page 36: TDD

Рефакторинг, Unit Testing и TDD

можно применять и в вашем проекте

Page 37: TDD

Как внедрять изменения?

Метод Джоэла Спольски (7+1)

http://www.joelonsoftware.com/articles/fog0000000332.html

Что дальше?

Page 38: TDD

Книги

Page 39: TDD

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

Вопросы?

Page 41: TDD

Контакты

http://get.cardmone.net