На каких компонентах приложения проводится нагрузочное тестирование?

Ответ

Основной фокус нагрузочного тестирования — серверные компоненты, так как они обрабатывают основную нагрузку:

  • API (Backend-сервисы): Проверка времени ответа, пропускной способности и стабильности под высокой одновременной нагрузкой.
  • Базы данных: Тестирование производительности запросов (SELECT, INSERT, UPDATE) при большом количестве соединений и данных.
  • Микросервисы/Бэкенд-логика: Оценка масштабируемости и поиск узких мест (bottlenecks).

Почему именно серверная часть? Потому что она является распределителем ресурсов и обработчиком бизнес-логики для множества клиентов. Сбой здесь приводит к недоступности для всех пользователей.

Пример сценария для JMeter (тестирование API):

<ThreadGroup>
  <numThreads>100</numThreads> <!-- 100 параллельных пользователей -->
  <rampUp>60</rampUp>          <!-- Наращивание нагрузки за 60 секунд -->
  <loopCount>10</loopCount>    <!-- 10 запросов на пользователя -->
</ThreadGroup>
<HTTPSampler>
  <domain>api.example.com</domain>
  <path>/v1/orders</path>
  <method>POST</method>
</HTTPSampler>

Клиентская часть (UI) обычно не является целевым объектом для классического нагрузочного тестирования, но может тестироваться на отзывчивость под нагрузкой на бэкенде.

Ответ 18+ 🔞

Да ты посмотри, какая интересная хуйня получается! Всё, блядь, кричат: "Нагрузка! Нагрузка!", а куда эту нагрузку-то прикладывать, ебать мои старые костыли?

Так вот, слушай сюда, главный фокус — это серверная часть, вся эта кухня, которая у пользователя в телефоне не торчит. Почему? Да потому что это, сука, распределитель всего и вся! Если эта мартышлюшка ляжет, то всем нашим пользователям — пиzдец, в рот меня чих-пых. Все разом, как один, увидят либо ошибку, либо бесконечную загрузку. Вот и весь сказ.

На что конкретно надо давить, как последнему уродцу на дискотеке?

  • API (Эти самые бэкенд-сервисы): Надо смотреть, как быстро он отзывается, сколько запросов в секунду проглатывает и не падает ли в обморок, когда сто человек одновременно начинают ему: "Дай! Положи! Обнови!".
  • Базы данных: Вот тут вообще отдельная песня. Надо проверять, как она там SELECT'ами, INSERT'ами под сотней-другой соединений. Не начнёт ли она, хитрая жопа, отвечать через минуту, когда её по-нормальному спросишь.
  • Микросервисы/Вся бэкенд-логика: Ищем, где у нас узкое горлышко, где эта конструкция начинает трещать и просить пощады. Масштабируемость, блядь, называется.

А клиентская часть (UI)? Ну её, в общем-то, специально грузить — это как ломиком открывать банку с икрой. Бессмысленно и дорого. Но! Когда сервер под нагрузкой пыхтит, как паровоз, надо глядеть — а не превращается ли наш красивый интерфейс в слайд-шоу из-за долгих ответов? Вот это — да, это важно.

Глянь, какой простой сценарий для JMeter'а, чтобы API потрогать:

<ThreadGroup>
  <numThreads>100</numThreads> <!-- 100 юзеров одновременно, ёпта! -->
  <rampUp>60</rampUp>          <!-- Не сразу всех, а за минуту подпустим -->
  <loopCount>10</loopCount>    <!-- И каждый сделает по 10 запросов -->
</ThreadGroup>
<HTTPSampler>
  <domain>api.example.com</domain>
  <path>/v1/orders</path>
  <method>POST</method>        <!-- Пусть заказы создают, сука! -->
</HTTPSampler>

Вот запустишь такую штуку и сразу увидишь, где у твоего сервиса спина трещит, а где он, блядь, героически держится. Всё гениальное — просто, как три копейки.