Автоматизируем измерение времени загрузки страниц. Полезный инструмент для любого QA-инженера


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


Реализовывать инструмент будем с помощью Python и биндингов WebDriver для него.


Условно он будет состоять из 3 компонентов.

Первый - это конфигурация для нашей "мерялки"


Всего три константы.

В первой(MAP_FILE) указываем название файла профиля, в котором хранятся все ссылки на страницы, время загрузки которых необходимо будет измерить.
Во второй(TRIES_COUNT) - количество попыток загрузить страницу(для чистоты эксперимента). Обычно я указываю 5-7.
В третьей(TIME_THRESHOLD) - время в секундах, считающееся пороговым. Среднее значение по отрасли - это порядка 2.4 секунд. Всё, что за ним - это страдание, боль и потенциальные "узкие места" в производительности вашей системы.

Следующий "кусок" - это непосредственно логика измерения времени загрузки:


Итак, что происходит:

по количеству попыток, указанных в конфиг-секции, мы вызываем get-метод для webdriver'а, в котором выполняется встроенный скрипт, измеряющий разницу во времени loadEventEnd - последним в хронологическом порядке ивентом, который можно получить из  PerformanceTiming API встроенных средств JS и navigationStart - первым в хронологическом порядке ивентом.

Такой подход значительно лучше "игр" с встроенными средствами для измерения таймингов, т.к. позволяет оперировать данными полученными напрямую из инстанса webdriver'а, исключая особенности языка, связанные с временем выполнения операций и их измерением.

Затем, усредняем время загрузки(мы ведь грузим страницу несколько раз подряд, помните?) и сравниваем с пороговым значением.  И уже исходя из этого генерируем информационное сообщение.

Всё это, конечно же, выводим на консоль.

И третий компонент - это, собственно говоря, разбор map-файла и запуск измерения для каждого из указанных в файле URL:



Затем всё это запускаем на словаре, содержащем в себе все необходимые нам браузеры.
Возьмем для примера два наиболее часто используемых в автоматизации тестирования:


На этом - всё. Наслаждаемся происходящим, попивая чаёк и забывая об измерении времени загрузки с помощью консоли разработчика.
Опционально - импортируем результаты в CSV-файл, меряем разницу между различными ивентами

Ну а всем, кому интересно попробовать его в действии, сюда: https://github.com/vbilohorodskyi/peregrin

Комментариев нет:

Отправить комментарий