Автоматизированное тестирование веб-приложений Вадим Кадученко
Проблемы От ошибок никто не застрахован Ошибки появляются ВНЕЗАПНО
Проблемы Срочное исправление ошибок нервирует и отнимает время
Решение Автоматизированные интеграционные тесты
Интеграционные тесты Имитация действий пользователя
Доступ к программе как к «чёрному ящику»
Взаимодействие тестов с приложением Действия с UI Действия с БД Программа – «чёрный ящик»
Интеграционные тесты Код программы никак не изменяется
Проверка корректности теста Проверка UI Проверка данных в БД Программа – «чёрный ящик» Программа – «чёрный ящик» Перехват исходящих
Взаимодействие с UI Selenium для имитации действий пользователя
Взаимодействие с UI
Взаимодействие с базой данных Fluent NHibernate для работы с БД Тестировщик работает с эталонной базой данных
Роль интеграционных тестов в проекте Интеграционные тесты – НЕ инструмент нахождения багов!
Роль интеграционных тестов в проекте Функциональность реализована только тогда, когда на неё написан интеграционный тест
Схема разработки продукта 1)Unit-тест 2)Код реализации 3)Интеграционный тест 4)Исправления в коде 5)??? 6)PROFIT!
Схема разработки продукта Программист не пишет интеграционные тесты
Схема разработки продукта Интеграционные тесты применимы не только к Web-приложениям
Преимущества интеграционных тестов Лёгкость масштабных изменений в проекте
Преимущества интеграционных тестов Легко обнаружить breaking changes в библиотеках и фреймворках
Преимущества интеграционных тестов Если ошибка исправлена, то она гарантированно не появится снова
Преимущества интеграционных тестов Раннее обнаружение ошибок обходится дёшево
Преимущества интеграционных тестов Автоматизированные тесты дешевле ручных
Возможные проблемы Окружение для тестов сложное и долго настраивается
Возможные проблемы Тесты сложно рефакторить, так как они проходят слишком долго. Из-за этого при написании тестов нарушается ритм работы программиста
Возможные проблемы Опасность превращения тестов в нечитаемый и трудно поддерживаемый код
Контакты и полезные ссылки Selenium: Fluent NHibernate: Мой