ݺߣ

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

More Related Content

What's hot (19)

PDF
Grail - CodeFest'2015
Igor Khrol
ODP
The fast and the continuous
SQALab
PPTX
Автоматическое тестирование Web api
Igor Lyubin
PDF
Grail: шаги для ваших Python-тестов
CodeFest
PPTX
Автоматизация тестирования ролей и привилегий
SQALab
PDF
Тестировщик в Agile - кто он?
Igor Khrol
PDF
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
PPTX
Повышаем надёжность тестов через JavaScript
Igor Khrol
PPTX
GUI-автоматизация в Telerik Test Studio
SQALab
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab
PDF
Автоматическое тестирование. Моя система
Igor Lyubin
PPTX
Экономически эффективный процесс тестирования (Codefest 2015)
Andrei Solntsev
PPT
Кому следует писать автоматические тесты?
Igor Khrol
PPTX
Тестируем производительность с помощью Selenium
SQALab
ODP
The fast and the continuous (SeleniumCamp 2014)
Andrei Solntsev
PDF
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
SQALab
PDF
WP как экспериментальная платформа
SQALab
PDF
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Mail.ru Group
PPTX
Webium: Page Objects in Python
Igor Khrol
Grail - CodeFest'2015
Igor Khrol
The fast and the continuous
SQALab
Автоматическое тестирование Web api
Igor Lyubin
Grail: шаги для ваших Python-тестов
CodeFest
Автоматизация тестирования ролей и привилегий
SQALab
Тестировщик в Agile - кто он?
Igor Khrol
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
Повышаем надёжность тестов через JavaScript
Igor Khrol
GUI-автоматизация в Telerik Test Studio
SQALab
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab
Автоматическое тестирование. Моя система
Igor Lyubin
Экономически эффективный процесс тестирования (Codefest 2015)
Andrei Solntsev
Кому следует писать автоматические тесты?
Igor Khrol
Тестируем производительность с помощью Selenium
SQALab
The fast and the continuous (SeleniumCamp 2014)
Andrei Solntsev
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
SQALab
WP как экспериментальная платформа
SQALab
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Mail.ru Group
Webium: Page Objects in Python
Igor Khrol

More from SQALab (20)

PDF
Готовим стажировку
SQALab
PPTX
Куда приводят мечты? или Искусство развития тестировщика
SQALab
PPT
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
PPTX
Continuous performance testing
SQALab
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
PPT
Команда чемпионов в ИТ стихии
SQALab
PPTX
API. Серебряная пуля в магазине советов
SQALab
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
PPT
Делаем автоматизацию проектных KPIs
SQALab
PDF
Вредные привычки в тест-менеджменте
SQALab
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
PPTX
Стили лидерства и тестирование
SQALab
PPT
"Давайте не будем про качество"
SQALab
PDF
Apache.JMeter для .NET-проектов
SQALab
PPTX
Тестирование геолокационных систем
SQALab
PPTX
Лидер или босс? Вот в чем вопрос
SQALab
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
Готовим стажировку
SQALab
Куда приводят мечты? или Искусство развития тестировщика
SQALab
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
Continuous performance testing
SQALab
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
Команда чемпионов в ИТ стихии
SQALab
API. Серебряная пуля в магазине советов
SQALab
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
Делаем автоматизацию проектных KPIs
SQALab
Вредные привычки в тест-менеджменте
SQALab
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
Стили лидерства и тестирование
SQALab
"Давайте не будем про качество"
SQALab
Apache.JMeter для .NET-проектов
SQALab
Тестирование геолокационных систем
SQALab
Лидер или босс? Вот в чем вопрос
SQALab
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
Ad

Как играть без игрока

  • 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 Как играть без игрока
  • 10. 10 Результаты прогона В testrail автоматически отмечаются пройденные кейсы. Как играть без игрока
  • 13. Структура теста. BeforTest, AfterTest, BeforClass. 1313 13 Как играть без игрока
  • 14. 1414 Наборы тестов (TestSuite) • Написанные тесты собираются в Test Suite • Тесты выполняются в указанном порядке • Реализованы вложенные тесты • Запускается указанный в настройках TestSuite 14 Структура вложенных тестов: Как играть без игрока
  • 15. 15 Хранение данных  Все данные хранятся в папке Data и , в основном, представляют из себя словари.  Данные для прокачки кораблей Как играть без игрока
  • 16. 16 Взаимодействие с клиентом  Обращение к элементу: – Уникальный айдишник  Работа с элементом. Получаем: – Наличие объекта – Состояние объекта – Текст – Положение – Статус – И т.д.  Имитируем работу клавиатуры  Имитируем работу мыши.  Позволяет повторять любые действия пользователя. Как играть без игрока
  • 17. 17 Scheduler Проблема: • Тест – для удобства сценарий из последовательных действий. • Нужно заставить тесты работать пошагово Решение: • Scheduler Основная идея работы - отложенные вычисления на основе генераторов. При запуске тест сьюты она парсится на генераторы и создается очередь Отвечает за порядок выполнения тестов Отвечает за Before/Test/After. В случае параметризации добавляет нужное количество тестов с параметрами. Так же отвечает за вложенную параметризацию. Как играть без игрока
  • 18. 18 Планы по развитию  Максимальное покрытие  Более совершенная система  Метки – Соответствия тестов с изменениями в проекте – После комита автоматически запускаются тесты, связанные с изменениями Автоматизировать кораблики - это просто
  • 19. 19 Итоги Мы достигли поставленных целей! – Автоматизировали проверку сервера – Автоматизировали проверку клиента – Объединили их вместе – Каждую ночь прогоняем автосмок на всех ветках – Можно добавить ветку в начале разработки и следить за её статусом ежедневно. – Своевременное информирование помогает оперативно решать проблемы – Набор регрессионных тестов Как играть без игрока
  • 20. Спасибо за внимание! Анна Варламова a_varlamova@wargaming.net