Узнайте, с какой нагрузкой может справиться ваш API, и проведите сравнительный анализ производительности API.
Что такое тест производительности?
Тестирование производительности - это в целом практика тестирования, выполняемая для определения того, как система работает с точки зрения скорости отклика и стабильности при определенной рабочей нагрузке. Это помогает в планировании, если есть необходимость масштабировать систему, если нагрузка увеличивается, и с какой нагрузкой система может справиться.
Вот некоторые из показателей, которые вы можете ожидать от тестирования производительности:
1. Transaction Response Times - сколько времени требуется серверу, чтобы ответить на запрос.
2. Пропускная способность - количество транзакций, которые можно обработать за период.
3. Ошибки - сообщения об ошибках, которые начинают появляться в определенные моменты нагрузочного теста (например, тайм-ауты).
Gatling: инструмент тестирования производительности.
Gatling - это среда тестирования производительности с открытым исходным кодом, которая использует Scala, Akka и Netty как стек технологий и как основу. Первый выпуск Gatling был выпущен в январе 2012 года. С тех пор Gatling выпускал несколько основных выпусков почти каждый год, а также наблюдался довольно значительный рост популярности в сообществе разработчиков производительности.
- Gatling - это инструмент для нагрузочного тестирования с открытым исходным кодом, написанный исключительно на языке Scala.
- Простой и выразительный DSL, который предлагает Gatling, упрощает написание сценариев нагрузочного тестирования.
- Он может обрабатывать огромный объем трафика на одном компьютере, устраняя необходимость в сложной распределенной инфраструктуре тестирования.
- У Gatling есть панели подробных показателей.
Структура теста Гатлинга
Это базовая структура класса для выполнения нагрузочного теста с использованием Gatling. Для запуска теста тестовый класс должен расширять базовый класс Simulation. В классе Simulation у нас может быть несколько сценариев, которые содержат разные HTTP-запросы, такие как вызовы get / post. В протоколе HTTP нам нужно определить базовый URL-адрес, который мы хотим протестировать, и другую конфигурацию ресурсов, такую как заголовок кодирования, заголовок языка, заголовок агента и т. Д., В соответствии со сценарием. setUp () - это базовый метод моделирования Гатлинга. SetUp () вызывает объект сценария и передает количество пользователей, использующих разные профили внедрения.
Ниже приведены различные методы, которые можно ввести в метод setup () для создания сценария количества пользователей в соответствии с нашими требованиями.
nothingFor(duration)
: пауза на определенную продолжительность.atOnceUsers(nbUsers)
: вводит одновременно заданное количество пользователей.rampUsers(nbUsers) during(duration)
: вводит заданное количество пользователей, равномерно распределенных во временном окне заданной продолжительности.constantUsersPerSec(rate) during(duration)
: вводит пользователей с постоянной скоростью, определенной в пользователях в секунду, в течение заданного времени. Пользователи будут вводиться через регулярные промежутки времени.constantUsersPerSec(rate) during(duration) randomized
: вводит пользователей с постоянной скоростью, определенной в пользователях в секунду, в течение заданного времени. Пользователи будут вводиться через рандомизированные интервалы.rampUsersPerSec(rate1) to (rate2) during(duration)
: вводит пользователей от начальной до целевой, определяемой в количестве пользователей в секунду, в течение заданного периода времени. Пользователи будут вводиться через регулярные промежутки времени.rampUsersPerSec(rate1) to(rate2) during(duration) randomized
: вводит пользователей от начальной до целевой, определяемой в количестве пользователей в секунду, в течение заданного периода времени. Пользователи будут вводиться через рандомизированные интервалы.heavisideUsers(nbUsers) during(duration)
: вводит заданное количество пользователей после плавного приближения тяжелой ступенчатой функции, растянутой до заданной продолжительности.
Тестирование API с помощью Gatling
Базовый URL API, который я собираюсь протестировать, - http://computer-database.gatling.io.
Итак, я пытаюсь поддерживать 5 пользователей в секунду в течение 4 минут. Общее количество запросов, которые мы отправляем, составляет 5 * 4 * 60 = 1200 запросов.
Результат теста API: -
По окончании нагрузочного теста мы получаем глобальную информацию о том, как наш API работал в данном сценарии нагрузки. Он содержит минимальное, максимальное и среднее время ответа, количество неудавшихся запросов и код состояния этих неудачных запросов. Наиболее важные параметры, которые нас могут заинтересовать, - это время отклика для P95 и P99.
Отчет Gatling создан: -
Gatling предоставляет нам HTML-отчет о проведенном нами тесте. Это помогает нам глубоко визуализировать сценарий. Вся информация, такая как успешные запросы, неудавшиеся запросы, время ответа для 50-го, 75-го, 95-го и 99-го процентов, минимальное и максимальное время, все присутствует в отчете с надлежащими диаграммами визуализации.
Графики, такие как распределение времени отклика и процент времени отклика с течением времени, показывают, как наш API работает каждую секунду с активным количеством пользователей в это время.
Инструмент Gatling можно использовать для тестирования производительности приложения и выявления того, что необходимо улучшить, прежде чем API будет запущен в производственную среду.
Вы можете попробовать выполнить нагрузочный тест на собственном API и проверить его работоспособность.
Ссылка на Github для примера проекта от Gatling: -
Https://github.com/gatling/gatling-gradle-plugin-demo