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

Anton Katkov
Anton KatkovFounder at MacBuildServer
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()
• Правильное использования моков
ЗАКЛЮЧЕНИЕ
Связь с другими практиками
• Коллективное владение кодом
• Рефакторинг
• Регулярные сборки
Часто можно слышать фразы
• «У нас нет времени на тесты, поэтому мы их
  не пишем»
• «Мы напишем тесты после того, как проект
  будет готов»
1 of 21

More Related Content

What's hot(20)

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
Аліна Шепшелей36 views
очир абушиновочир абушинов
очир абушинов
Alexei Lupan6.3K views

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

Test driven development in netTest driven development in net
Test driven development in net
Alex Tumanoff824 views
The fast and the continuousThe fast and the continuous
The fast and the continuous
SQALab4.7K views
юнит тестирование Forkюнит тестирование Fork
юнит тестирование Fork
Sergey Oreshkov263 views
тестированиетестирование
тестирование
Yandex2.2K views
Artem Shabarshin. CSEDaysArtem Shabarshin. CSEDays
Artem Shabarshin. CSEDays
LiloSEA368 views

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