SlideShare a Scribd company logo
1 of 41
Download to read offline
TDD
Антон Бевзюк
Дмитрий Павлов
Контакты

http://get.cardmone.net
Правила
Перерывы
Жест
Никаких мобил
Ноуты только на упражнениях
Парковка
Проверка домашней работы
УПРАЖНЕНИЕ
Напишите StringCalculator
Вход

Выход

“”

0

“1,2n3,4n5,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
“1n2,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?
TDD это …

Test Driven Development
Test Oriented Development
Test Driven Design
Test Driven Development & Design
В Чем Прикуп?
• Описание системы

• Регрессионное тестирование
• Рефакторинг
• Мгновенное обнаружение проблем
• Простой дизайн
• Маленькие шаги

Unit
Testing

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

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

методология

продаж
Вы любите дебажить?
“Debuggers are a wasteful Timesink”
Robert C. Martin

Время
TDD -

методология

вождения
УПРАЖНЕНИЕ
Чистый домен

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

Идеи
 Жизнь
 Боулинг
 Нестандартный футбол
Легенды и Мифы о TDD

• TDD = Unit Testing
• TDD = 100% test coverage
• TDD = Объем работ * 2
• Unit tests – это все, что нужно
Что TDD НЕ делает

Не учит писать красивые тесты
Не гарантирует поддерживаемость тестов
Не гарантирует читаемость тестов
Что TDD делает
Тесты, которым доверяешь
Дизайн (внезапно) 
Понятный домен
Покрытие тестами
Простоту кода
Постепенную разработку
Поставку раньше и чаще
Высокое качество кода
Чему мы научились
TDD -

методология

чего?
Чему мы научились?
День 1. Рефакторинг
Что такое рефакторинг
Рефакторинг – это непрерывный процесс
Рефакторинг – это просто
Основные рефакторинги
Маленькие шаги
Как рефакторить старый код
Технический долг
День 2. Юнит тестирование
Зачем тестировать?
Структура теста
Именование
DSL
Stub, Fake, Spy, Mock
Тесты на поведение и состояние
Хороший тест
Пирамида тестирования
День 3. TDD
TDD это просто
TDD это методология дизайна
TDD > Unit Testing
Мы не пишем тесты и не рефакторим…
У нас нет на это времени
Исторически так сложилось
У нас своя «специфика» проекта
Запрещает менеджер
Мы сразу пишем идеальный код
Мы наняли Чака Норриса
Придумайте свою «уникальную» причину
Рефакторинг, Unit Testing и TDD
можно применять и в вашем проекте
Рефакторинг, Unit Testing и TDD
можно применять и в вашем
проекте
Рефакторинг,
Unit Testing и TDD
можно применять и в
вашем проекте
Что дальше?

Как внедрять изменения?
Метод Джоэла Спольски (7+1)

http://www.joelonsoftware.com/articles/fog00
00000332.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

More Related Content

What's hot

Документация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйДокументация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйDataArt
 
Бесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoITБесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoITGoIT
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышленияAndrei Zubov
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиковUladzimir Kryvenka
 
андрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаандрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаAlexei Lupan
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
Автоматизированное тестирование не-тестировщиками
Автоматизированное тестирование не-тестировщикамиАвтоматизированное тестирование не-тестировщиками
Автоматизированное тестирование не-тестировщикамиSQALab
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаSQALab
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияzheldak
 
Юзабилити тестирование
Юзабилити тестированиеЮзабилити тестирование
Юзабилити тестированиеOleg Karapuzov
 
Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Technopark
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Serhiy Kalinets
 
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionSqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionAlexei Lupan
 
Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"
Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"
Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"DataArt
 
7 принципов эффективного тестирования
7 принципов эффективного тестирования7 принципов эффективного тестирования
7 принципов эффективного тестированияak-itconsulting.com
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование ForkSergey Oreshkov
 

What's hot (19)

Документация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйДокументация тестировщика - Александр Трибушный
Документация тестировщика - Александр Трибушный
 
Бесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoITБесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoIT
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышления
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиков
 
андрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаандрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчика
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
Автоматизированное тестирование не-тестировщиками
Автоматизированное тестирование не-тестировщикамиАвтоматизированное тестирование не-тестировщиками
Автоматизированное тестирование не-тестировщиками
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
 
BDD
BDDBDD
BDD
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы применения
 
Юзабилити тестирование
Юзабилити тестированиеЮзабилити тестирование
Юзабилити тестирование
 
Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!
 
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionSqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
 
Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"
Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"
Яков Крамаренко (IT Labs) "Тестирование послезавтра. UА"
 
7 принципов эффективного тестирования
7 принципов эффективного тестирования7 принципов эффективного тестирования
7 принципов эффективного тестирования
 
Exploratory testing
Exploratory testingExploratory testing
Exploratory testing
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование Fork
 

Viewers also liked

Бытовые трудности и Анти паттерны Agile команд
Бытовые трудности и Анти паттерны Agile командБытовые трудности и Анти паттерны Agile команд
Бытовые трудности и Анти паттерны Agile командDmitry Pavlov
 
Как не уснуть на ретро? Продвинутые форматы бодрой ретроспективы
Как не уснуть на ретро? Продвинутые форматы бодрой ретроспективыКак не уснуть на ретро? Продвинутые форматы бодрой ретроспективы
Как не уснуть на ретро? Продвинутые форматы бодрой ретроспективыDmitry Pavlov
 
7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процесса7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процессаMagneta AI
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективыBoris Volfson
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективыMagneta AI
 
De Rol van de Registrar in het Museum
De Rol van de Registrar in het MuseumDe Rol van de Registrar in het Museum
De Rol van de Registrar in het Museumguestff8cab
 
Инсайды совещаний / Meetings insides
Инсайды совещаний  / Meetings insidesИнсайды совещаний  / Meetings insides
Инсайды совещаний / Meetings insidesAlexander Baikin
 

Viewers also liked (8)

Бытовые трудности и Анти паттерны Agile команд
Бытовые трудности и Анти паттерны Agile командБытовые трудности и Анти паттерны Agile команд
Бытовые трудности и Анти паттерны Agile команд
 
Как не уснуть на ретро? Продвинутые форматы бодрой ретроспективы
Как не уснуть на ретро? Продвинутые форматы бодрой ретроспективыКак не уснуть на ретро? Продвинутые форматы бодрой ретроспективы
Как не уснуть на ретро? Продвинутые форматы бодрой ретроспективы
 
7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процесса7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процесса
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
Effective meeting
Effective meetingEffective meeting
Effective meeting
 
De Rol van de Registrar in het Museum
De Rol van de Registrar in het MuseumDe Rol van de Registrar in het Museum
De Rol van de Registrar in het Museum
 
Инсайды совещаний / Meetings insides
Инсайды совещаний  / Meetings insidesИнсайды совещаний  / Meetings insides
Инсайды совещаний / Meetings insides
 

Similar to TDD

Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииCEE-SEC(R)
 
Обязательные практики Agile-проекта и правило ППП
Обязательные практики Agile-проекта и правило ПППОбязательные практики Agile-проекта и правило ППП
Обязательные практики Agile-проекта и правило ПППPavel Gabriel
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeDmytro Mindra
 
BDD. Gherkin+Ruby или автотесты для гуманитариев
BDD. Gherkin+Ruby или автотесты для гуманитариевBDD. Gherkin+Ruby или автотесты для гуманитариев
BDD. Gherkin+Ruby или автотесты для гуманитариевSQALab
 
О тестировании в EDI
О тестировании в EDIО тестировании в EDI
О тестировании в EDIMaxim Zakharov
 
Рефакторинг
РефакторингРефакторинг
РефакторингSmartStepGroup
 
TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.Pavel Tsukanov
 
"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной
"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной
"TDD: Сомнения. Преимущества. Действия." от Юлии ПучнинойSCRUMguides
 
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Javakranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в JavaKrivoy Rog IT Community
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
CodeFest 2014. Макаров Н. — Selenium Grid. OK Version
CodeFest 2014. Макаров Н. — Selenium Grid. OK VersionCodeFest 2014. Макаров Н. — Selenium Grid. OK Version
CodeFest 2014. Макаров Н. — Selenium Grid. OK VersionCodeFest
 
Selenium grid. OK version
Selenium grid. OK versionSelenium grid. OK version
Selenium grid. OK versionNikita Makarov
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеElias Fofanov
 
TDD или как не выстрелить себе в ногу
TDD или как не выстрелить себе в ногуTDD или как не выстрелить себе в ногу
TDD или как не выстрелить себе в ногуAlexander Byndyu
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесуAndrey Rebrov
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)Anton Katkov
 

Similar to TDD (20)

Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Обязательные практики Agile-проекта и правило ППП
Обязательные практики Agile-проекта и правило ПППОбязательные практики Agile-проекта и правило ППП
Обязательные практики Agile-проекта и правило ППП
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
BDD. Gherkin+Ruby или автотесты для гуманитариев
BDD. Gherkin+Ruby или автотесты для гуманитариевBDD. Gherkin+Ruby или автотесты для гуманитариев
BDD. Gherkin+Ruby или автотесты для гуманитариев
 
О тестировании в EDI
О тестировании в EDIО тестировании в EDI
О тестировании в EDI
 
Рефакторинг
РефакторингРефакторинг
Рефакторинг
 
TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.
 
"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной
"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной
"TDD: Сомнения. Преимущества. Действия." от Юлии Пучниной
 
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Javakranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
 
Do you speak TDD
Do you speak TDDDo you speak TDD
Do you speak TDD
 
Tdd in the world of big data
Tdd in the world of big dataTdd in the world of big data
Tdd in the world of big data
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Tdd from the middle
Tdd from the middleTdd from the middle
Tdd from the middle
 
CodeFest 2014. Макаров Н. — Selenium Grid. OK Version
CodeFest 2014. Макаров Н. — Selenium Grid. OK VersionCodeFest 2014. Макаров Н. — Selenium Grid. OK Version
CodeFest 2014. Макаров Н. — Selenium Grid. OK Version
 
Selenium grid. OK version
Selenium grid. OK versionSelenium grid. OK version
Selenium grid. OK version
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзе
 
TDD или как не выстрелить себе в ногу
TDD или как не выстрелить себе в ногуTDD или как не выстрелить себе в ногу
TDD или как не выстрелить себе в ногу
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесу
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
 

TDD