agilecamp'11 Новосибирск - unit tests

21
Unit Tests Anton Katkov

Upload: katkov-anton

Post on 01-Dec-2014

1.325 views

Category:

Education


4 download

DESCRIPTION

материал с конференции http://camp.agiledays.ru

TRANSCRIPT

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

Unit Tests

Anton Katkov

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

Вопрос

• Кто знаком с Unit Test’ами?

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

Основные понятия

• Fixture• Test Case• Check• Test Suite

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

Цикл жизни Unit Test

1. Set up fixture2. Execute test scenario3. Check that everything worked properly

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

Специфика Unit Test для XP

• Нужен framework• Тестируется весь значимый код• Тесты хранятся в репозитории кода вместе с

кодом• Код без тестов не считается завершённым• В случае обнаружение бага пишется тест,

который обнаруживает его

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

Unit Test помогает …

• Тестировать• Формализовать требования• Определиться с архитектурой• Писать код• Отлаживать код• Выпускать релизы• Оптимизировать

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

ТЕСТИРУЕМАЯ АРХИТЕКТУРА

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

Нетестируемая архитектура

source: http://martinfowler.com/articles/injection.html

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

Тестируемая архитектура

source: http://martinfowler.com/articles/injection.html

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

IoC и DI

• Inversion of Control• Dependency Injection

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

Типы тестовых дублей

• Dummy – никогда реально не используется;• Fake – содержит упрощённую реализацию;• Stubs – возвращает заготовленный ответ,

иногда запоминает информацию по вызовам;

• Mocks – объекты, с запрограммированным ожиданием определённых вызов к ним;

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

ЗАПАХИ ТЕСТОВ

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

• Редко запускаются• Плохая изоляция

Медленные тесты

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

• Плохое тестирование• Плохой дизайн

Хрупкие тесты

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

• You aren’t gonna need it (YAGNI)• Опять плохой дизайн• Тест много знает о классе

Тест-”спагетти”

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

• Одна ошибка– много сломаных тестов• Don’t repeat yourself (DRY)

Эхо в горах

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

• Аккуратное использование моков• Использование интеграционных тестов

Чрезмерное доверие мокам

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

• Хрупкие медленные тесты с Эхо эффектом• Big setUp()• Правильное использования моков

Недостаточное доверие мокам

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

ЗАКЛЮЧЕНИЕ

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

Связь с другими практиками

• Коллективное владение кодом• Рефакторинг• Регулярные сборки

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

Часто можно слышать фразы

• «У нас нет времени на тесты, поэтому мы их не пишем»

• «Мы напишем тесты после того, как проект будет готов»