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

Post on 01-Dec-2014

1.325 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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()• Правильное использования моков

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

top related