Этот инструмент будет полезен всем, кто на постоянной основе меряет производительность на фронт-энде.
Хитрого в нем ничего нет. по этому не растекаясь мыслью под древу, сразу приступим к реализации.
Реализовывать инструмент будем с помощью 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
Комментариев нет:
Отправить комментарий