Нагрузочное тестирование: что это, виды и этапы

Разбираемся, что такое нагрузочное тестирование, как и зачем его проводят. А также оцениваем плюсы и минусы самых популярных инструментов для этого вида проверки

Содержание статьи

Что такое нагрузочное тестирование

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

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

Тестирование ПО

Источник: vector4stock, Freepik

Чтобы обеспечить надежность и стабильность работы ПО в пиковые моменты, тестировщики проводят нагрузочное тестирование (НТ).

Нагрузочное тестирование — это проверка устойчивости и производительности программного обеспечения под нагрузкой, сопоставимой с реальными условиями использования.

Для чего нужно нагрузочное тестирование

Тестировщик
Онлайн-курс для Junior и Middle-специалистов
Смотреть программу

Разработчики применяют НТ, чтобы создать условия, максимально приближенные к реальному ожидаемому использованию системы, а также оценить ее поведение под различными уровнями нагрузки. НТ позволяет:

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

А имитация сбоев дает понимание, насколько система способна восстановиться и продолжить работу после их устранения.

Виды нагрузочного тестирования

Существует довольно много видов НТ, при этом у каждого свои цели и специфика. Выбор конкретного вида зависит от требований к системе, а также планируемых условий ее использования:

  1. Нагрузочное тестирование (Load Testing). Проверяет работоспособность системы или сайта при заданной нагрузке. С его помощью можно понять, сможет ли система за определенное время обработать желаемое количество запросов. 
  2. Тестирование производительности (Performance Testing). Позволяет понять, как поведет себя система в различных условиях. Например, при каком максимальном количестве запросов пользователей система в состоянии работать быстро, без ошибок, а при каком объеме данных начинаются проблемы.  
  3. Тестирование стабильности (Stability Testing). Это проверка работоспособности и надежности системы на протяжении длительного времени.
  4. Стрессовое тестирование (Stress Testing). Проводят, чтобы проверить работоспособность системы при огромных нагрузках — больших, чем ожидается в обычных условиях. Это важно в том числе для определения максимальных нагрузок.
  5. Тестирование отказоустойчивости (Failover Testing). Проверка работоспособности системы при аварийных ситуациях. Например, чтобы узнать, переключилась ли система на резервный сервер, если сбой все-таки случился.
  6. Тестирование объемов (Volume Testing). Проверка стабильности системы при работе с большим объемом данных. Показывает, насколько меняется производительность при их обработке. 
  7. Тестирование масштабируемости (Scalability Testing). Это тестирование стабильной работы системы при ожидаемом увеличении нагрузки, например, при большем количестве пользователей или объеме данных. 
  8. Тестирование нагрузки на сервер (Server Load Testing). Позволяет оценить, сколько пользователей одновременно могут успешно отправить запрос на сервер и получить результат.

Чтобы обеспечить качество продукта на всех этапах его жизненного цикла, тестировщику прежде всего нужно этот цикл знать. Модели жизненного цикла и этапы разработки IT-продукта подробно разбираем на бесплатном вебинаре.

Методика нагрузочного тестирования

Библиотека вебинаров
для IT-специалистов
Смотреть бесплатно

Перед тем как приступить к проверке программного продукта, нужно разработать методику нагрузочного тестирования (МНТ). Это документ, в котором описан весь план тестирования, включая сценарии возможного развития проекта. МНТ полезна как заказчикам, так и команде исполнителей, потому что позволяет формализовать требования, однозначно определить ожидания от проекта.

Этапы разработки МНТ
Этап Задачи
1

Сбор информации о проекте
Определение целей и задач тестирования
Установка ограничений, создание правил моделирования системы

2

Составление списка известных и возможных ошибок, а также их причин
Определение технических и программных характеристик тестовой среды
Описание требований к продукту

3 Непосредственное тестирование
Детальное описание этапов проверки
Составление результатов НТ, формулирование рекомендаций по его итогам
Описание предполагаемых уязвимых мест, а также способов решения проблем

Этапы нагрузочного тестирования

Организация процесса НТ состоит из 8 этапов:

  1. Изучение системы, которую нужно проверить.
  2. Определение целей заказчика.
  3. Составление методики, стратегии тестирования.
  4. Написание скриптов, симулирующих нагрузку.
  5. Непосредственное проведение тестов.
  6. Сбор и анализ полученных данных.
  7. Создание отчетов.
  8. Сопоставление результатов работы с МНТ.

Важно учитывать, что каждый последующий этап проводится на основе результатов, полученных на предыдущем этапе. 

Программное обеспечение для тестов

НТ проводят с использованием специальных программ. Некоторые из них бесплатные, с открытым исходным кодом, за использование других придется заплатить. В таблице представлены 5 инструментов с разбором преимуществ и недостатков:

ПО для тестов Плюсы Минусы
Apache JMeter Бесплатное, с открытым исходным кодом
Дружелюбный интерфейс для простого создания тестов
Поддерживает широкий спектр протоколов
​Можно использовать для функционального тестирования
Потребляет много ресурсов
Не поддерживает JavaScript
​Не подходит для тестирования десктоп-приложений
LoadRunner Отличные средства анализа результатов
Поддерживает множество протоколов, технологий
Позволяет масштабировать нагрузочные тесты на большое количество виртуальных пользователей
Платный инструмент
Потребуется время на изучение, освоение
Gatling Легкое, высокопроизводительное
Подходит для тестирования высоконагруженных систем
Требует знания языка программирования Scala для более сложных сценариев
Не очень широкая функциональность
Vegeta Простое в использовании, быстро настраивается
Легко интегрируется с системами CI/CD
Поддерживает тестирование микросервисов, API
Ориентировано исключительно на тестирование HTTP-сервисов
Имеет ограниченные средства анализа результатов
Locust Простое в использовании и написании сценариев на Python
Легко масштабируется
Веб-интерфейс обеспечивает удобный мониторинг
Необходимо умение программировать

Apache JMeter — самый популярный инструмент для НТ. Но, как обычно, выбор ПО зависит от потребностей проекта, уровня экспертизы команды, а также требуемых функциональных возможностей. 


Основы нагрузочного тестирования и работу с JMeter подробно разбираем на курсе «Тестировщик» для опытных джунов и мидлов. На курсе вы:

  • изучите базовый SQL, HTML/CSS, JavaScript, основы Python;
  • научитесь тестировать безопасность веб-приложений;
  • разовьете навыки автоматизации тестирования на Python;
  • разберетесь в работе с контейнерами в Docker;
  • прокачаете навыки работы с Allure;
  • выполните множество практических заданий, основанных на реальных кейсах.

В линейке обучения Контур.Школы есть курсы для тестировщиков разных уровней, в том числе и бесплатные — для тех, кто хочет просто попробовать. Жмите на кнопку и выбирайте нужный 👇

Выбрать курс

1 105
Планируйте обучение с максимальной выгодой для себя и для бизнеса
Узнать подробнее
Материалы по теме