Слайд 2Проблемы
От ошибок никто не застрахован
Ошибки появляются ВНЕЗАПНО
Слайд 3Проблемы
Срочное исправление ошибок нервирует и отнимает время
Слайд 4Решение
Автоматизированные интеграционные тесты
Слайд 5Интеграционные тесты
Имитация действий пользователя
Слайд 6 Доступ к программе как к «чёрному ящику»
Слайд 7Взаимодействие тестов с приложением
Действия с UI
Действия с БД
Программа –
«чёрный ящик»
Слайд 8Интеграционные тесты
Код программы никак не изменяется
Слайд 9Проверка корректности теста
Проверка UI
Проверка данных в БД
Программа –
«чёрный ящик»
Перехват исходящих e-mail
Слайд 10Взаимодействие с UI
Selenium для имитации действий пользователя
Слайд 13Взаимодействие с базой данных
Fluent NHibernate для работы с БД
Тестировщик работает с эталонной
базой данных
Слайд 14Роль интеграционных тестов в проекте
Интеграционные тесты – НЕ инструмент нахождения багов!
Слайд 15Роль интеграционных тестов в проекте
Функциональность реализована только тогда, когда на неё написан
интеграционный тест
Слайд 16Схема разработки продукта
Unit-тест
Код реализации
Интеграционный тест
Исправления в коде
???
PROFIT!
Слайд 17Схема разработки продукта
Программист не пишет интеграционные тесты
Слайд 18Схема разработки продукта
Интеграционные тесты применимы не только к Web-приложениям
Слайд 19Преимущества интеграционных тестов
Лёгкость масштабных изменений в проекте
Слайд 20Преимущества интеграционных тестов
Легко обнаружить breaking changes в библиотеках и фреймворках
Слайд 21Преимущества интеграционных тестов
Если ошибка исправлена, то она гарантированно не появится снова
Слайд 22Преимущества интеграционных тестов
Раннее обнаружение ошибок обходится дёшево
Слайд 23Преимущества интеграционных тестов
Автоматизированные тесты дешевле ручных
Слайд 24Возможные проблемы
Окружение для тестов сложное и долго настраивается
Слайд 25Возможные проблемы
Тесты сложно рефакторить, так как они проходят слишком долго.
Из-за этого при
написании тестов нарушается ритм работы программиста
Слайд 26Возможные проблемы
Опасность превращения тестов в нечитаемый и трудно поддерживаемый код