SlideShare a Scribd company logo
1 of 21
Unit Tests

Anton Katkov
Вопрос



• Кто знаком с Unit Test’ами?
Основные понятия
•   Fixture
•   Test Case
•   Check
•   Test Suite
Цикл жизни Unit Test
1. Set up fixture
2. Execute test scenario
3. Check that everything worked properly
Специфика Unit Test для XP
• Нужен framework
• Тестируется весь значимый код
• Тесты хранятся в репозитории кода вместе с
  кодом
• Код без тестов не считается завершённым
• В случае обнаружение бага пишется
  тест, который обнаруживает его
Unit Test помогает …
•   Тестировать
•   Формализовать требования
•   Определиться с архитектурой
•   Писать код
•   Отлаживать код
•   Выпускать релизы
•   Оптимизировать
ТЕСТИРУЕМАЯ АРХИТЕКТУРА
Нетестируемая архитектура




         source: http://martinfowler.com/articles/injection.html
Тестируемая архитектура




         source: http://martinfowler.com/articles/injection.html
IoC и DI
• Inversion of Control
• Dependency Injection
Типы тестовых дублей
• Dummy – никогда реально не используется;
• Fake – содержит упрощённую реализацию;
• Stubs – возвращает заготовленный
  ответ, иногда запоминает информацию по
  вызовам;
• Mocks – объекты, с запрограммированным
  ожиданием определённых вызов к ним;
ЗАПАХИ ТЕСТОВ
Медленные тесты
• Редко запускаются
• Плохая изоляция
Хрупкие тесты
• Плохое тестирование
• Плохой дизайн
Тест-”спагетти”
• You aren’t gonna need it (YAGNI)
• Опять плохой дизайн
• Тест много знает о классе
Эхо в горах
• Одна ошибка– много сломаных тестов
• Don’t repeat yourself (DRY)
Чрезмерное доверие мокам
• Аккуратное использование моков
• Использование интеграционных тестов
Недостаточное доверие мокам
• Хрупкие медленные тесты с Эхо эффектом
• Big setUp()
• Правильное использования моков
ЗАКЛЮЧЕНИЕ
Связь с другими практиками
• Коллективное владение кодом
• Рефакторинг
• Регулярные сборки
Часто можно слышать фразы
• «У нас нет времени на тесты, поэтому мы их
  не пишем»
• «Мы напишем тесты после того, как проект
  будет готов»

More Related Content

What's hot

А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?SQALab
 
CI: Автоматизация сборки, развёртывания и тестирования
CI: Автоматизация сборки, развёртывания и тестированияCI: Автоматизация сборки, развёртывания и тестирования
CI: Автоматизация сборки, развёртывания и тестированияSQALab
 
Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?beched
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobАліна Шепшелей
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Development User Group
 
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...SECON
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нтAlexei Lupan
 
очир абушинов
очир абушиновочир абушинов
очир абушиновAlexei Lupan
 
Alex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйAlex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйUISGCON
 
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)DataArt
 
Тестируй как PRO, или учим тесты быть умнее шпаргалка
Тестируй как PRO, или учим тесты быть умнее шпаргалкаТестируй как PRO, или учим тесты быть умнее шпаргалка
Тестируй как PRO, или учим тесты быть умнее шпаргалкаssuser2062cc
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиYuriy Vasiyarov
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Ontico
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
Отладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложенийОтладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложенийEgor Baranov
 
#MBLTdev: Безопасность iOS-устройств (viaForensics)
#MBLTdev: Безопасность iOS-устройств (viaForensics)#MBLTdev: Безопасность iOS-устройств (viaForensics)
#MBLTdev: Безопасность iOS-устройств (viaForensics)e-Legion
 
Selenium на практике и подводные камни
Selenium на практике и подводные камниSelenium на практике и подводные камни
Selenium на практике и подводные камниSQALab
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практикеEatDog
 

What's hot (20)

А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
 
CI: Автоматизация сборки, развёртывания и тестирования
CI: Автоматизация сборки, развёртывания и тестированияCI: Автоматизация сборки, развёртывания и тестирования
CI: Автоматизация сборки, развёртывания и тестирования
 
Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нт
 
очир абушинов
очир абушиновочир абушинов
очир абушинов
 
Alex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйAlex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяй
 
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
 
Тестируй как PRO, или учим тесты быть умнее шпаргалка
Тестируй как PRO, или учим тесты быть умнее шпаргалкаТестируй как PRO, или учим тесты быть умнее шпаргалка
Тестируй как PRO, или учим тесты быть умнее шпаргалка
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработки
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
Отладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложенийОтладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложений
 
#MBLTdev: Безопасность iOS-устройств (viaForensics)
#MBLTdev: Безопасность iOS-устройств (viaForensics)#MBLTdev: Безопасность iOS-устройств (viaForensics)
#MBLTdev: Безопасность iOS-устройств (viaForensics)
 
Selenium на практике и подводные камни
Selenium на практике и подводные камниSelenium на практике и подводные камни
Selenium на практике и подводные камни
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практике
 

Similar to AgileCamp'11 Новосибирск - Unit Tests

Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Sergey Ryabenko
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Yandex
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьDaria Oreshkina
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Александр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitАлександр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitYandex
 
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
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - ТестированиеYandex
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 
The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16Andrei Solntsev
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014ForkConf
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование ForkSergey Oreshkov
 
тестирование
тестированиетестирование
тестированиеYandex
 
The fast and the continuous (SeleniumCamp 2014)
The fast and the continuous (SeleniumCamp 2014)The fast and the continuous (SeleniumCamp 2014)
The fast and the continuous (SeleniumCamp 2014)Andrei Solntsev
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторовSQALab
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияzheldak
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...Mikhail Payson
 
Artem Shabarshin. CSEDays
Artem Shabarshin. CSEDaysArtem Shabarshin. CSEDays
Artem Shabarshin. CSEDaysLiloSEA
 

Similar to AgileCamp'11 Новосибирск - Unit Tests (20)

Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Александр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitАлександр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnit
 
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
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование Fork
 
тестирование
тестированиетестирование
тестирование
 
The fast and the continuous (SeleniumCamp 2014)
The fast and the continuous (SeleniumCamp 2014)The fast and the continuous (SeleniumCamp 2014)
The fast and the continuous (SeleniumCamp 2014)
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы применения
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
 
Artem Shabarshin. CSEDays
Artem Shabarshin. CSEDaysArtem Shabarshin. CSEDays
Artem Shabarshin. CSEDays
 

More from Anton Katkov

AgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOSAgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOSAnton Katkov
 
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...Anton Katkov
 
AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение Anton Katkov
 
AgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: ЗаключениеAgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: ЗаключениеAnton Katkov
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureAnton Katkov
 
XP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewXP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewAnton Katkov
 
AgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deploymentAgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deploymentAnton Katkov
 
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
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)Anton Katkov
 
AgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAnton Katkov
 

More from Anton Katkov (10)

AgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOSAgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOS
 
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
 
AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение
 
AgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: ЗаключениеAgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: Заключение
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architecture
 
XP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewXP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overview
 
AgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deploymentAgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deployment
 
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)
 
AgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практики
 

AgileCamp'11 Новосибирск - Unit Tests