QA Automation: отбрасываем лишнее и тестируем суть Игорь Хрол http://www.wargaming.net http://www.khroliz.com
Jun 15, 2015
QA Automation: отбрасываем лишнее и тестируем суть
Игорь Хролhttp://www.wargaming.net
http://www.khroliz.com
О себе• Игорь Хрол• QA Automation Team Lead в
Wargaming• Восемь лет в отрасли• Десятки проектов• Инженер, тренер, консультант,
менеджер, докладчик• Мой блог: http://ru.khroliz.com
Всё плохо
Замкнутый круг
Тестирование неинтересно
Неопытные люди
Сложную работу некому
делать
Работа несложная
Платят меньше, чем в
разработке
В результате...
• Если в тестирование попадают талантивые люди, то случайно
http://artkoshelev.github.io/posts/random-tester/
• Но после этого всё равно уходят в разработку
• Тестирование считается простой и неинтересной IT-профессией
• Качество тестирования оставляет желать лучшего
Вспомним, кто мы…
Тестирование неинтересно
Неопытные люди
Сложную работу некому
делать
Платят меньше, чем в
разработке
Работа несложная
Как корабль назовёшь...
Как корабль назовёшь...
• «Если бы я спросил людей, чего они хотят, они бы попросили более быструю лошадь.» Генри Форд
• Доклад от @adzynia: http://goo.gl/W2tCj6
• Автоматизация тестирования
• Автоматическое тестирование
• Эффективное автоматическое тестирование
Модель задачи по тестированию
5 8 2 1 10
5×8×2×1×10=800
Модель задачи по тестированию
𝑉 1 𝑉 2 𝑉 3 𝑉 4 𝑉 5
𝑉 1×𝑉 2×𝑉 3×𝑉 4×𝑉 5
Сложность тестирования
𝑉 1×𝑉 2×…×𝑉𝑛
𝑉 𝑛
Экспоненциальная сложность
http://ru.wikipedia.org/wiki/Экспоненциальный_рост
Чёрный ящик = Экспонента
Автоматизация тестирования - борьба с экспонентой
• Параллельные запуски не помогают– – количество потоков– Сложность:
Разделяй и властвуй
Модель задачи по тестированию
5 8 2 1 10
5×8×2×1×10=8005+8+2+1+10=2626+4+1=31
Модель задачи по тестированию
5 8 2 1 10
800 vs 31
Модель задачи по тестированию
𝑉 1 𝑉 2 𝑉 3 𝑉 4 𝑉 5
𝑉 1+𝑉 2+𝑉 3+𝑉 4+𝑉 5+5
Сложность тестирования
𝑉 1 𝑉 2 𝑉 3 … 𝑉 𝑛
∑𝑖=1
𝑛
𝑉 𝑖+𝑛≈𝑉 ×𝑛+𝑛
Сложность:
Сложность тестирования
𝑉 1 𝑉 2 𝑉 3 … 𝑉 𝑛
vs
Срезаем углы
1 1 1 1 10
1×1×1×1×10=101+1+1+1+10=1414+4+1=19
Срезаем углы
1 1 1 1 10
10 vs 19
Срезаем углы
Тестов не только меньше, но они и проще
1 1 1 1 10
10 vs 19
Что-то там говорили о «пирамиде»
UI
API
Unit Tests
Главное – декомпозиция задачи
Проект из жизни
Проект из жизни
Начало...
Ограничение UI-тестов• Долгие• Нестабильные• Задача: оптимизировать предусловия,
которые делаются часами
Отказ от браузера
• Плюсы– Тесты работают быстрее– Нет проблем с синхронизацией– Надёжны– Легко запускаются параллельно
• Минусы– Не видно, как работают– Нет доверия– Выше порог вхождения
Не видно как работаютНет доверия
Структура решения
• Технологии– Java– TestNG– Maven– HttpClient
Возврат к браузеру
Браузер
• Запускается только тогда, когда реально нужен (около 3% сценариев)
• Реиспользуется headless-сессия с безбраузерного взаимодействия
Browser Script API
http://docs.oracle.com/cd/B40099_02/books/OIRef/OIRefBrowseScript.html
Browser Script HTTP Server Script
API всё равно лучше!
База данных
База данных
• Самый быстрый способ работы с системой• Лучше туда напрямую не писать– Cпециально выверенные stored procedures
• Хорошо подходит для проверок
Web-сервисы
Web-сервисы
• Взаимодействие с другими системами– Эмуляция внешних запросов– Проверки исходящей инфорации
Application server
Web-server vs App-server• Web:– Вёрстка– Отсылка ответов
• App:– Логика приложения
Siebel Java Data Bean
http://docs.oracle.com/cd/E14004_01/books/OIRef/Customizing_Siebel_Object_Interfaces12.html
Полный програмный интерфейс для создания логики приложения из Java
Правильные оракулы
Задача: протестировать правила
Проблема: ожидаемая вычисленная дата• зависит от календаря• зависит от текущего времени
Правильные оракулы
• Создаём заявку под правило• Отправляем на Siebel дельту и дату• Берём из Siebel’a вычисленную нам дату• Сравниваем с датой на созданной заявке
Тесты производительности
Тесты производительности
• Традиционный подход:– Нужно переписывать скрипты для каждого
билда– Отдельные скрипты
• Jmeter-based:– Реиспользование кода функциональных тестов– Тесты поддерживаются для новых версий
вместе с функциональными тестами
Итоговые результаты
• Быстрые тесты• Предсказуемые результаты• Легко масштабируются• Возможность взаимодействия с Siebel на
любом уровне
Взгляд на тестирование со стороны реализации системы позволяет
• Уменьшить сложность самой задачи тестирования
• Уменьшить сложность и длину сценариев• Увеличить скорость и стабильность работы• Найти новые области применения
автотестов
Спасибо!Вопросы?
Игорь Хрол[email protected] / [email protected]://ru.khroliz.com