agilecamp'11 Новосибирск - unit tests
DESCRIPTION
материал с конференции http://camp.agiledays.ruTRANSCRIPT
Unit Tests
Anton Katkov
Вопрос
• Кто знаком с Unit Test’ами?
Основные понятия
• Fixture• Test Case• Check• Test Suite
Цикл жизни Unit Test
1. Set up fixture2. Execute test scenario3. 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()• Правильное использования моков
Недостаточное доверие мокам
ЗАКЛЮЧЕНИЕ
Связь с другими практиками
• Коллективное владение кодом• Рефакторинг• Регулярные сборки
Часто можно слышать фразы
• «У нас нет времени на тесты, поэтому мы их не пишем»
• «Мы напишем тесты после того, как проект будет готов»