Главная / Блог / Тестирование производительности

Тестирование производительности
веб-приложений:
18 бесплатных инструментов

Тестирование производительности веб-приложений: 18 инструментов с открытым исходным кодом

Smartiqa Failed Testsuits
Дата: 26 июля 2020
Автор: Антон Катин
Отказ в работе веб-приложения может стоить очень дорого. В начале марта 2020 года, приложение для торговли акциями Robinhood упало на 24 часа, как раз во время одних из самых значительных колебаний на фондовом рынке. Причина такого падения, со слов людей из Robinhood, заключалась в том, что система просто не выдержала такой беспрецедентной нагрузки. Как думаете, каковы убытки всех участников торгов в данный момент и Robinhood в долгосрочной перспективе? Мне тоже сложно сосчитать, но вполне понятно, что сумма немаленькая.
Ведущие компании считают производительность своего продукта не столько особенностью, сколько фундаментальной характеристикой.

Однако многие команды по разработке не уделяют должное время
тестированию производительности и масштабируемости своей инфраструктуры, и многим не хватает инструментов для этого.

Хотя в сети есть много хороших платных утилит, неплохой альтернативой или дополнением могут послужить бесплатные инструменты с открытым исходным кодом.

Значение производительности

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

Ниже я приведу краткий обзор градаций скорости загрузки веб-приложения:
До 100 мс
Мгновенная скорость
От 100 до 300 мс
Задержка может быть заметна
1 сек.
Предел непрерывности мыслительного потока пользователя
2 сек.
Предел ожиданий пользователя
3 сек.
Потеря 40% посетителей
10 сек.
Максимум ожидания самого терпеливого посетителя
Как вы видите, скорость загрузки приложения вполне конкретная и важная деталь для потенциального пользователя. Цель нагрузочного теста производительности состоит в том, чтобы показать вам, как ваше веб-приложение будет работать под высокой нагрузкой.

Для того, чтобы приступить к тестированию, вы должны понимать, что производительность каждой операции вполне уникальна. Чтобы убедиться, что пользователи не сталкиваются с проблемами при использовании вашего продукта, нужно протестировать наиболее распространенные пути взаимодействия внутри вашего приложения. Для этого придется затронуть все приложение: как серверную, так и клиентскую часть. И, что логично, понадобятся соответствующие инструменты.
Однако прежде чем нагружать систему, необходимо провести тщательное тестирование всех узлов и функций приложения одним пользователем, иначе нагрузочное тестирование будет попросту необъективным.

Инструменты для проверки клиентской части приложения

Smartiqa Web app client
Большинство современных приложений тратят значительное время на клиентской части — JavaScript и его фреймворки (React, AngularJS и др.) потребляют достаточно много ресурсов. Поэтому весьма полезными будут следующие два инструмента:
1
Google PageSpeed Insights – служба, которая проводит анализ страницы и предлагает решения по оптимизации ее загрузки.
2
Google Lighthouse – встроенный в Google Chrome инструмент, который обязан использовать каждый front-end разработчик.

Инструменты для отображения реальной производительности

1
Sitespeed.io — один из лучших в оценке производительности на клиентской стороне. Этот инструмент с открытым исходным кодом анализирует скорость и производительность вашего приложения. Вы можете выполнять замеры только для одного сайта, а можете анализировать и сравнивать сразу несколько.
2
Google инвестировал в создание еще нескольких прекрасных инструментов — ngx_pagespeed и mod_pagespeed в качестве расширения веб-сервера для автоматизации повышения производительности без необходимости изменения кода.
3
WebPagetest.org дает понимание о производительности клиентской стороны в различных браузерах. Эта утилита протестирует веб-страницу в любом браузере, из любого места, в любом состоянии сети - и это абсолютно бесплатно.

Повторно используйте функциональные тесты для получения реальной картины производительности

Некоторые инструменты функционального тестирования с открытым исходным кодом могут быть использованы для сбора информации о производительности вашего приложения (слабых и сильных местах), которая должна помочь вашей команде.
1
Cypress – собирает данные о производительности в Google Chrome. Это позволяет найти и исправить общие проблемы с производительностью.
2
Selenium – также собирает данные о производительности. Один из распространенных подходов — использование HAR файла с помощью BMP.
3
Также можно использовать Jmeter Webdriver Sampler. Такой подход может быть полезен для приложений на базе AJAX и GWT.
Теперь можно перейти к тестированию серверной части приложения.

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

Smartiqa Web app server
Apache Bench и Siege отлично подходят для быстрых нагрузочных тестов.
Более продвинутое тестирование можно получить от:
1
Locust.io – открытый исходный код, высокий уровень параллелизма и возможность проводить транзакции. Что может быть лучше?
2
Bees with Machine Guns – создание «пчелиного роя» (EC2) для «атаки» на приложение.
3
Multi-Mechanize – тестирование производительности и масштабируемости.
4
Httperf — гибкие возможности для создания HTTP запросов и проверки производительности сервера.
5
Apache Jmeter – тест производительности как на статических ресурсах, так и на динамических. Также хорошо подходит для моделирования большой нагрузки на сервер.
6
Element – библиотека с открытым исходным кодом для NodeJs. Создание скриптов на TypeScript и использование их против своего же приложения.

Выбор и компромисс

Все перечисленные выше бесплатные инструменты — начало вашего пути в оптимизации приложения и его тестирования. Они помогут вам выявить основные проблемные места и устранить их. Однако рано или поздно все-таки придется сделать выбор между платными утилитами и ресурсами вашей команды.
26 ИЮЛЯ / 2020
Как вам материал?

Читайте также