1. Как играть без игрока
Анна Варламова
a_varlamova@wargaming.net
2. 2
С чего всё началось.
Поставленные задачи:
Имитация серверу клиента.
Имитация клиенту пользователя.
Что надо сделать было понятно, но КАК!!!!
Первые вопросы:
Какие инструменты и подходы использовать?
Куда и как подключаться тестами?
Как имитировать целый клиент?
Как имитировать пользователя?
Как все заставить работать друг с другом?
Как понять, что система отражает действительность?
Как играть без игрока
3. 3
Bw Bots как имитация серверу клиента
Решение: BW боты:
• Обнаружили статью о неких BW ботах.
• Могут логиниться и плавать
• Значит можно заставить делать что угодно
Были открыты снова в 2013
Плюсы:
• До 150 штук на одном процессе
• Параллельная проверка
• Быстрая работа
• Сбор статистики
Как играть без игрока
4. 4
Мечта
Надежная и гибкая система
Полная информация о состоянии ветки до поступления ее в тестирование
Ночные прогоны
Долгие проверки (Регресс )
Объединить проверки клиента и ботов в одном бою.
Осталось:
1. Автоматизировать клиент
2. Заставить их работать вместе
Как играть без игрока
5. 5
Поиск пути… или изобретение велосипеда
Изученные инструменты:
Разбор картинок
Медленная работа
Чувствителен к множеству
факторов
Отсутствие документации
Разбор картинок
Очень интересный и
многообещающий проект
Много багов
Стабильный
Гибкий
Удобный
Не подходит для игры!!!
Решение:
Сделать свой, основываясь на знаниях о Selenium
Кодовое название – PythonAPI.
Так наш клиент подружился с автотестами.
Как играть без игрока
Qaliber Sikuli Selenium
6. Для чего мы используем PythonAPI
6Как играть без игрока
Автоматические смоки на ветках.
Автоматизация регрессионных тестов.
Совместные сценарии BW ботов с клиентом.
3 способа запуска:
1. Создание задачи в Jire.
2. Добавить ветку в ночные прогоны.
3. Запуск на локальной машине.
7. 7
Smoke. Описание и способы запуска.
2 вида smoke:
• Проверки на клиенте
• Боты + Клиент
Основные проверки:
• Логинится
• Корабли загружаются, прокачиваются
• Комнаты создаются
• Бои стартуют
• Стреляют, убивают и т.д.
Запуск:
• Параллельно на 3х машинах
• Время 30-40 минут
Как играть без игрока
9. 9
Результаты прогона
Отчет на почту:
• Информация о ветке
• Прошедшие тесты
• Логи
• Скриншоты падений
• Количество пройденных тестов
• Failed: TrainingRoomTest.testLeaveMenuCreationRoomByButton([ ]). SmokeTest: Press btn return to dock• Failed: TrainingRoomTest.testLeaveMenuCreationRoomByButton([]). SmokeTest: Press btn return to dock
Как играть без игрока
14. 1414
Наборы тестов (TestSuite)
• Написанные тесты собираются в Test Suite
• Тесты выполняются в указанном порядке
• Реализованы вложенные тесты
• Запускается указанный в настройках TestSuite
14
Структура вложенных тестов:
Как играть без игрока
15. 15
Хранение данных
Все данные хранятся в папке Data и , в основном,
представляют из себя словари.
Данные для прокачки кораблей
Как играть без игрока
16. 16
Взаимодействие с клиентом
Обращение к элементу:
– Уникальный айдишник
Работа с элементом. Получаем:
– Наличие объекта
– Состояние объекта
– Текст
– Положение
– Статус
– И т.д.
Имитируем работу клавиатуры
Имитируем работу мыши.
Позволяет повторять любые действия пользователя.
Как играть без игрока
17. 17
Scheduler
Проблема:
• Тест – для удобства сценарий из последовательных действий.
• Нужно заставить тесты работать пошагово
Решение:
• Scheduler
Основная идея работы - отложенные вычисления на основе генераторов.
При запуске тест сьюты она парсится на генераторы и создается очередь
Отвечает за порядок выполнения тестов
Отвечает за Before/Test/After.
В случае параметризации добавляет нужное количество тестов с параметрами.
Так же отвечает за вложенную параметризацию.
Как играть без игрока
18. 18
Планы по развитию
Максимальное покрытие
Более совершенная система
Метки
– Соответствия тестов с изменениями в проекте
– После комита автоматически запускаются тесты, связанные с изменениями
Автоматизировать кораблики - это просто
19. 19
Итоги
Мы достигли поставленных целей!
– Автоматизировали проверку сервера
– Автоматизировали проверку клиента
– Объединили их вместе
– Каждую ночь прогоняем автосмок на всех ветках
– Можно добавить ветку в начале разработки и следить за её статусом ежедневно.
– Своевременное информирование помогает оперативно решать проблемы
– Набор регрессионных тестов
Как играть без игрока