Тестирование производительности SportsBook 2.0 с использованием k6

Содержание

Слайд 2

QA Automation Engineer
Занимаюсь автоматизацией тестирования SportsBook 2.0 в компании Altenar, которая является

QA Automation Engineer Занимаюсь автоматизацией тестирования SportsBook 2.0 в компании Altenar, которая
поставщиком программного обеспечения, для лицензированных игорных операторов

Об авторе

Daniil Matafonov

Email: [email protected]

Слайд 3

Altenar — международная B2B компания, с офисами в России, на Мальте

Altenar — международная B2B компания, с офисами в России, на Мальте и
и в Греции. Основным направлением является разработка платформы для лицензированных букмекеров, оперирующих в Европе и Южной Америке.

О компании

Слайд 4

SportsBook - программное обеспечение, предназначенное для выполнения ставок на различные спортивные соревнования,

SportsBook - программное обеспечение, предназначенное для выполнения ставок на различные спортивные соревнования,
включая гольф, футбол, баскетбол, бейсбол, хоккей, скачки, виртуальные виды спорта и другие.

О продукте

Слайд 5

Архитектура SportsBook 2.0 Google Cloud Cluster

Архитектура SportsBook 2.0 Google Cloud Cluster

Слайд 6

SportsBook 2.0 NLAM cluster

SportsBook 2.0 NLAM cluster

Слайд 7

Нагрузочное тестирование с использованием JMeter

Цель:
Выполнить стресс-тестирование проекта Hybrid и получить показатели производительности

Нагрузочное тестирование с использованием JMeter Цель: Выполнить стресс-тестирование проекта Hybrid и получить
таких запросов как PlaceBet, BetHistory, CalculateCashout , Cashout.
Окружение: Stage
Конфигурация: 3 VMs in VMWare cluster with 4 vCPUs, 4 gb.

Слайд 8

Ограниченный мониторинг тестов (трудоемкость анализа логов запуска тестов);
Трудоемкость создания тестового сценария (необходим

Ограниченный мониторинг тестов (трудоемкость анализа логов запуска тестов); Трудоемкость создания тестового сценария
опыт для понимания элементов JMeter, регулярных выражений, обработки сеансов и т.д.);
Ограниченные возможности создания тестовых сценариев с помощью кода

Недостатки JMeter

Слайд 9

Инструмент с возможностью поддержкой различных режимов отладки (просмотр тела ответов, возможность отключения

Инструмент с возможностью поддержкой различных режимов отладки (просмотр тела ответов, возможность отключения
отладочных логов)
Инструмент, который облегчит вовлечение новых участников в процесс разработки тестов (простой и понятный подход для разработки сценариев, поддержка GitOps практик [обзор кода, процесс утверждения с помощью запросов pull и так далее])
Инструмент, позволяющий разрабатывать тесты на простом и понятном языке программирования
Поддержка CI / CD

Анализ требований

Ограниченный мониторинг тестов
Трудоемкость создания тестового сценария
Ограниченные возможности создания тестовых сценариев
Трудоемкость использования тестов на Jmeter в сборках

Проблемы

Решения

Слайд 10

Анализ инструментов

Анализ инструментов

Слайд 11

Гибкость тестового сценария
Производительность
Язык скриптов

Достоинства и недостатки

Порог вхождения
Вывод статистики
Распределенное тестирование

Гибкость тестового сценария Производительность Язык скриптов Достоинства и недостатки Порог вхождения Вывод статистики Распределенное тестирование

Слайд 12

K6 как оптимальный инструмент для нагрузочного тестирования
Преимущества:
поддержка протоколов http1.1 / 1.2;

K6 как оптимальный инструмент для нагрузочного тестирования Преимущества: поддержка протоколов http1.1 /
gRPC;
кроссплатформенность (Linux, Mac, Windows, Docker образ)
разработка тестов на JS
поддержка GitOps практик
возможность использования в CI сборках
возможность запуска из cloud
развитое комьюнити

Выводы

Слайд 13

K6 - современный инструмент для нагрузочного тестирования,
разработанный компанией Load Impact.
Features:
CLI-инструмент с

K6 - современный инструмент для нагрузочного тестирования, разработанный компанией Load Impact. Features:
удобным для разработчика API
HTTP/1.1, HTTP/2, WebSocket поддержка протоколов
Разработка тестов на JavaScript ES2015/ES6 - с поддержкой локальных и удаленных модулей
Automation-friendly: checks (like asserts) and thresholds for easy and flexible CI configuration!
TLS features: клиентские сертификаты, настраиваемые SSL/TLS
Вывод результатов тестов: InfluxDB (+Grafana), JSON, k6 Cloud, Kafka, StatsD, DataDog
Облачное выполнение и распределенные тесты (на инфраструктуре, управляемой Load Impact)

Слайд 14

VUs
Параметр, определяющий количество Virtual users, которые будут выполняться одновременно.

Options

https://k6.io/docs/using-k6/options

VUs Параметр, определяющий количество Virtual users, которые будут выполняться одновременно. Options https://k6.io/docs/using-k6/options

Слайд 15

HTTP Debug
Логирует HTTP запросы и ответы. Исключает тело по умолчанию, чтобы включить

HTTP Debug Логирует HTTP запросы и ответы. Исключает тело по умолчанию, чтобы
тело необходимо использовать --http-debug=full.

Options

https://k6.io/docs/using-k6/options

Слайд 16

Duration
Задает общую продолжительность выполнения теста.
В течение этого времени каждый VU будет

Duration Задает общую продолжительность выполнения теста. В течение этого времени каждый VU
выполнять сценарий в цикле. Доступен в К6 run и К6 cloud.

Options

https://k6.io/docs/using-k6/options

Слайд 17

Iterations
Параметр, задающий фиксированное число итераций для выполнения сценария, в течение которого сценарий

Iterations Параметр, задающий фиксированное число итераций для выполнения сценария, в течение которого
будет выполняться в цикле.

Options

https://k6.io/docs/using-k6/options

Слайд 18

Minimum Iteration Duration
Задает минимальную продолжительность для каждого отдельного выполнения (т. е. итерации)функции

Minimum Iteration Duration Задает минимальную продолжительность для каждого отдельного выполнения (т. е.
по умолчанию. Любые итерации, которые выполняться быстрее, приведут к тому, что VU будет спать в течение оставшегося времени, пока не будет достигнута заданная минимальная продолжительность.

Options

https://k6.io/docs/using-k6/options

Слайд 19

Compatibility Mode
Поддержка запуска сценариев с различными режимами ECMAScript.
Более подробно про режимы запуска JavaScript

Compatibility Mode Поддержка запуска сценариев с различными режимами ECMAScript. Более подробно про
Compatibility Mode documentation.

Options

https://k6.io/docs/using-k6/options

Слайд 20

Discard Response Bodies
Параметр позволяет отбросить тело ответа.

Options

https://k6.io/docs/using-k6/options

Discard Response Bodies Параметр позволяет отбросить тело ответа. Options https://k6.io/docs/using-k6/options

Слайд 21

Scenarios
Представляют собой шаблоны выполнения с различными настройками VU, итераций, исполняющими различные функции

Scenarios Представляют собой шаблоны выполнения с различными настройками VU, итераций, исполняющими различные
(кроме default) и использующими различные переменные окружения, теги и другое.

Options

https://k6.io/docs/using-k6/options

Слайд 22

shared-iterations
per-vu-iterations
constant-vus
ramping-us
constant-arrival-rate
ramping-arrival-rate
externally-controlled

Scenarios (k6 v.0.27)

shared-iterations per-vu-iterations constant-vus ramping-us constant-arrival-rate ramping-arrival-rate externally-controlled Scenarios (k6 v.0.27)

Слайд 23

Механизм проверок схож с assertions, но основное отличие в том, что checks

Механизм проверок схож с assertions, но основное отличие в том, что checks
не останавливают выполнение, а просто сохраняют результат проверки (pass / fail ) и позволяют скрипту продолжить выполнение.
Проверки отлично подходят для кодификации утверждений, относящихся к HTTP-запросам/ответам, например, что код ответа равен 2xx:

Checks

Слайд 24

Built-in metrics

Built-in metrics

Слайд 25

Custom
Counter (суммарная метрика)
Gauge (хранит только последнее значение)
Rate (отслеживает процент значений, отличных от

Custom Counter (суммарная метрика) Gauge (хранит только последнее значение) Rate (отслеживает процент
нуля)
Trend (собирает статистику(min/max/avg/percentiles) для ряда значений)

Metrics

Слайд 26

Windows
Вы можете вручную загрузить и установить official .msi installation package или, если вы используете chocolatey package manager,

Windows Вы можете вручную загрузить и установить official .msi installation package или,
следуйте этим инструкциям для установки latest версии k6 из репозитория.
Docker
docker pull loadimpact/k6
Linux (deb and rpm packages)
https://k6.io/docs/getting-started/installation#linux-deb-and-rpm-packages
Mac (brew)
https://k6.io/docs/getting-started/installation#mac-brew

Install

Слайд 27

При запуске теста с количеством VUS > 2000 k6 прерывал выполнение с

При запуске теста с количеством VUS > 2000 k6 прерывал выполнение с
ошибкой. FATA[0052] stream error: stream ID 5; INTERNAL_ERROR
Ограниченная поддержка параллелизации тестов (платная поддержка в k6 cloud)
Недостаточно гибкая настройка конфигурации сценариев

Проблемы в k6 (version 0.26.0)

Слайд 28

Цель:
Выполнить нагрузочное тестирование проекта SportsBook 2.0 и получить показатели производительности таких методов

Цель: Выполнить нагрузочное тестирование проекта SportsBook 2.0 и получить показатели производительности таких
как signIn, GetEvents, place, betHistory, PrintCoupon, Cashout, OpenBetsCount.
Окружение: Stage
Конфигурация: VM (24 CPU / 25 GB RAM)
Тестовый сценарий:
Выполнение теста разделено на группы
1 группа вызывает методы SignIn, GetEvents, place, BetHistory, PrintCoupon, Cashout, OpenBetsCount (10% от общего числа VUS на тест)
2 группа SignIn, BetHistory, Cashout, OpenBetsCount (30% от общего числа VUS на тест)
3 группа SignIn, BetHistory, OpenBetsCount (60% от общего числа VUS на тест)

Нагрузочное тестирование с использованием k6

Слайд 29

Реализация тестового сценария. Вызов метода SignIn

Реализация тестового сценария. Вызов метода SignIn

Слайд 30

auth.js

Реализация тестового сценария. Функция auth()

auth.js Реализация тестового сценария. Функция auth()

Слайд 31

placeBet.js

Реализация тестового сценария. Функция placeBet()

placeBet.js Реализация тестового сценария. Функция placeBet()

Слайд 32

Сценарий выполнения тестов в config.js

Конфигурация

Сценарий выполнения тестов в config.js Конфигурация

Слайд 33

компиляция:
npm run-script webpack

Сборка тестов

компиляция: npm run-script webpack Сборка тестов

Слайд 34

запуск тестов

запуск тестов

Слайд 35

Статистика проверок

Статистика проверок

Слайд 36

Метрики. Вывод показателей в console

Метрики. Вывод показателей в console

Слайд 37

Метрики. InfluxDB и Grafana

Метрики. InfluxDB и Grafana
Имя файла: Тестирование-производительности-SportsBook-2.0-с-использованием-k6.pptx
Количество просмотров: 175
Количество скачиваний: 0