SlideShare a Scribd company logo
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 (20)

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

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

PPTX
Test driven development in net
Alex Tumanoff
 
PPT
Юнит тестирование в Web. Как получать пользу и удовольствие.
Sergey Ryabenko
 
PDF
Марина Широчкина — «Тестирование»
Yandex
 
PDF
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
PPTX
Лучшие практики на практике
Denis Tuchin
 
PDF
Автоматическое тестирование. Моя система
Igor Lyubin
 
PDF
Александр Ярулин - Автоматизация тестирования с xUnit
Yandex
 
PPTX
XP Days Ukraine 2014 - Refactoring legacy code
Dmytro Mindra
 
PDF
Марина Широчкина - Тестирование
Yandex
 
ODP
The fast and the continuous - SQA Days 16
Andrei Solntsev
 
ODP
The fast and the continuous
SQALab
 
PPTX
Юнит тестирование, Александр Прукс, 30 Марта 2014
ForkConf
 
PPTX
юнит тестирование Fork
Sergey Oreshkov
 
PDF
тестирование
Yandex
 
ODP
The fast and the continuous (SeleniumCamp 2014)
Andrei Solntsev
 
PPT
Тестирование инсталляторов
SQALab
 
PDF
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest
 
PPTX
Ошибки начинающих Tdd практиков, плюсы применения
zheldak
 
PPTX
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Mikhail Payson
 
PPTX
Artem Shabarshin. CSEDays
LiloSEA
 
Test driven development in net
Alex Tumanoff
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Sergey Ryabenko
 
Марина Широчкина — «Тестирование»
Yandex
 
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
Лучшие практики на практике
Denis Tuchin
 
Автоматическое тестирование. Моя система
Igor Lyubin
 
Александр Ярулин - Автоматизация тестирования с xUnit
Yandex
 
XP Days Ukraine 2014 - Refactoring legacy code
Dmytro Mindra
 
Марина Широчкина - Тестирование
Yandex
 
The fast and the continuous - SQA Days 16
Andrei Solntsev
 
The fast and the continuous
SQALab
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
ForkConf
 
юнит тестирование Fork
Sergey Oreshkov
 
тестирование
Yandex
 
The fast and the continuous (SeleniumCamp 2014)
Andrei Solntsev
 
Тестирование инсталляторов
SQALab
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest
 
Ошибки начинающих Tdd практиков, плюсы применения
zheldak
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Mikhail Payson
 
Artem Shabarshin. CSEDays
LiloSEA
 
Ad

More from Anton Katkov (10)

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

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