Системы нагрузочного тестирования, зачастую, представляют из себя простейшие механизмы выполнения HTTP-запросов и замера реакции при их параллельном исполнении. К сожалению, такой способ не позволяет оценить нагрузку в случае, когда каждая страница использует сложный frontend framework, совершающий дополнительные запросы в зависимости от деятельности пользователя, включая статические данные, которые создают дополнительную нагрузку на каналы связи.

 

Для устранения этого недостатка мы разработали прототип системы нагрузочного тестирования, эмулирующие поведение пользователя на сайте, обладающую следующими характеристиками:

  • полноценная поддержка браузера без headless режима (используется движок Chrome и система управления Puppeteer) с применением VNC-сервера;

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

  • создание и развертывание новых виртуальных машин происходит автоматически с центрального пульта управления, там же осуществляется конфигурация задач на исполнение. Центр управления также может находится внутри виртуальной машины/контейнера;

  • поддерживаются как облачные варианты (VScale), так и локальные с установкой на сервер (LXC);

  • имитация действий пользователя ограничена возможностями Puppeteer и обычно включает в себя как выполнение действий внутри открытой вкладки с документом, так и встраивание в текст документа кода для тестирования.

 

Данная система находится в стадии прототипа и не предназначена для немедленного использования вне рамок компании. 

 

Стек технологий - Erlang, sqlite3, Semantic-UI, puppeteer, LXC, VScale API.