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

Что такое тест производительности?

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

Вот некоторые из показателей, которые вы можете ожидать от тестирования производительности:

1. Transaction Response Times - сколько времени требуется серверу, чтобы ответить на запрос.

2. Пропускная способность - количество транзакций, которые можно обработать за период.

3. Ошибки - сообщения об ошибках, которые начинают появляться в определенные моменты нагрузочного теста (например, тайм-ауты).

Gatling: инструмент тестирования производительности.

Gatling - это среда тестирования производительности с открытым исходным кодом, которая использует Scala, Akka и Netty как стек технологий и как основу. Первый выпуск Gatling был выпущен в январе 2012 года. С тех пор Gatling выпускал несколько основных выпусков почти каждый год, а также наблюдался довольно значительный рост популярности в сообществе разработчиков производительности.

  1. Gatling - это инструмент для нагрузочного тестирования с открытым исходным кодом, написанный исключительно на языке Scala.
  2. Простой и выразительный DSL, который предлагает Gatling, упрощает написание сценариев нагрузочного тестирования.
  3. Он может обрабатывать огромный объем трафика на одном компьютере, устраняя необходимость в сложной распределенной инфраструктуре тестирования.
  4. У Gatling есть панели подробных показателей.

Структура теста Гатлинга

Это базовая структура класса для выполнения нагрузочного теста с использованием Gatling. Для запуска теста тестовый класс должен расширять базовый класс Simulation. В классе Simulation у нас может быть несколько сценариев, которые содержат разные HTTP-запросы, такие как вызовы get / post. В протоколе HTTP нам нужно определить базовый URL-адрес, который мы хотим протестировать, и другую конфигурацию ресурсов, такую ​​как заголовок кодирования, заголовок языка, заголовок агента и т. Д., В соответствии со сценарием. setUp () - это базовый метод моделирования Гатлинга. SetUp () вызывает объект сценария и передает количество пользователей, использующих разные профили внедрения.

Ниже приведены различные методы, которые можно ввести в метод setup () для создания сценария количества пользователей в соответствии с нашими требованиями.

  1. nothingFor(duration): пауза на определенную продолжительность.
  2. atOnceUsers(nbUsers): вводит одновременно заданное количество пользователей.
  3. rampUsers(nbUsers) during(duration): вводит заданное количество пользователей, равномерно распределенных во временном окне заданной продолжительности.
  4. constantUsersPerSec(rate) during(duration): вводит пользователей с постоянной скоростью, определенной в пользователях в секунду, в течение заданного времени. Пользователи будут вводиться через регулярные промежутки времени.
  5. constantUsersPerSec(rate) during(duration) randomized: вводит пользователей с постоянной скоростью, определенной в пользователях в секунду, в течение заданного времени. Пользователи будут вводиться через рандомизированные интервалы.
  6. rampUsersPerSec(rate1) to (rate2) during(duration): вводит пользователей от начальной до целевой, определяемой в количестве пользователей в секунду, в течение заданного периода времени. Пользователи будут вводиться через регулярные промежутки времени.
  7. rampUsersPerSec(rate1) to(rate2) during(duration) randomized: вводит пользователей от начальной до целевой, определяемой в количестве пользователей в секунду, в течение заданного периода времени. Пользователи будут вводиться через рандомизированные интервалы.
  8. 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

Поддержите меня, купив мне кофе: - buymeacoffee.com/rushabh