20 февраля 2021
Марафон по нагрузочному тестированию: схема общих понятий
3 составляющих тестирования производительности, использование ресурсов, термины, цели, основные принципы и многое другое.
В рамках марафона по нагрузочному тестированию программного обеспечения наши эксперты говорили о следующем:

Тестирование производительности – нефункциональная характеристика (стандарт ISO 25010 [ISO25000])

Три составляющих тестирования производительности:
  1. Производительность системы (как система отвечает на действия пользователей в течение определенного времени и при определенных условиях).
  2. Использование ресурсов (например, выделение оперативное памяти).
  3. Потенциальные возможности (количество пользователей или объемы данных, масштабируемость).

Термины:
  • Время отклика – показатель качества, показывающий время отклика на транзакцию, время выполнения транзакции – с момента отправки запроса к серверу, до получения последнего байта от сервера.
  • Пропускная способность – показатель качества, показывающий количество транзакций, которые произошли за единицу времени.
  • Виртуальный пользователь – программный процесс, циклический выполняющий моделируемые операции.
  • Интенсивность выполнения операций – частота выполнения операции в единицу времени, в тестовом скрипте задается интервалом времени между итерациями.
  • Нагрузка - совокупное выполнение операций на общем ресурсе.
  • Производительность – количество выполняемых операций за период времени.
  • Масштабируемость приложения – пропорциональный рост производительности при увеличении нагрузки.
  • Профиль нагрузки – набор операций с заданными интенсивностями, полученный на основе сбора статистических данных или анализа требований к системе.
  • Нагрузочная точка – сценарий.
  • НТ – рассчитанное (заданное) количество виртуальных пользователей в группах, выполняющих операции с определенными интенсивностями – нагрузочный сценарий, объединенные операции с разными скриптами – максимальная вместимость, максимальная производительность.
  • Пейсинг – время задержки между сценариями; время выполнения и время ожидания (чтобы не разъехался профиль).

Строительные блоки теста производительности:
  1. Запрос.
  2. Транзакция (объединение всех запросов вместе: запрос на открытие страницы, прогрузку элементов и скриптов).
  3. Сценарий (логическое объединение транзакций: войти на страницу, ввод логина и пароля и т.д.).
  4. Профиль нагрузки (объединение сценариев, сколько и каких необходимо выполнять сценариев). Для каждого сеанса тестирования определяется профиль нагрузки, строятся отчеты и графики по выбранным методикам тестирования производительности.

Как выбрать транзакции для теста:
  1. Критически важные + риски + часто используемое.
  2. Требуемые тех. экспертом заказчика.
  3. Ресурсоемкие.

Профиль нагрузки включает в себя:
  1. Количество виртуальных пользователей.
  2. Количество сценариев (операций + задержки).
  3. Интенсивность (операций).

Принципы тестирования производительности:
  1. Сценарий НТ должен корректно загружать систему по корректному профилю.
  2. Методика НТ, отчет и вывод; результат визуализирован понятным образом для большого круга заинтересованных лиц.
  3. Тесты должны осуществлять на системе (тестовом окружении), в достаточной мере воспроизводящей. производственную среду; максимально приближено к архитектуре прода.

ЦЕЛИ тестирования производительности:
1. Получение подтверждения, что система удовлетворяет предъявленным критериям производительности и максимальная производительность.
2. Проверка возможности масштабируемости.
3. Выявление узких мест – определение компонента системы, приводящего к снижению производительности или отказу.
4. Выявление влияние нагрузки на аппаратные ресурсы.


Виды тестирования производительности:
1. Тестирование производительности – собирательное название, объединяющее все виды теста производительности.
2. Нагрузочное тестирование – исследование системой обработки растущей нагрузки (запросов на транзакции с одновременно работающими пользователями\процессами).
Акцент:
а) Измерение времени выполнения выбранных операций при определенных интенсивностях.
б) Определение количества пользователей, одновременно работающих с приложением.
в) Определение границ приемлемой производительности при увеличении нагрузки.
3. Стрессовое тестирование – исследование способности системы обрабатывать пиковые нагрузки на пределе или за пределами пропускной способности; также оценка работоспособности системы при уменьшенной доступности ресурсов.
Акцент:
а) Возможность и время регенерации системы.
б) Корректность логирования ошибок и оповещение о их возникновении.
в) Производительность системы при стрессовых нагрузках.
г) Оценка влияния сбоев системы на внешние системы.
4. Тестирование масштабируемости – способность системы расти в объеме, не нарушая производительности (как может быть изменена аппаратная конфигурация).
Акцент:
а) Вертикальное масштабирование – увеличение производительности каждого отдельного компонента системы (добавление ОП, замена процессора и т.д.) для повышения производительности всей системы в целом.
б) Горизонтальное масштабирование – распределение системы на большее количество серверов параллельно работающих и выполняющих одни и те же функции.
в) Тюнинг - применение масштабирования внутри системы с помощью очередей, асинхронных запросов и т.д.
5. Тестирование стабильности – оценка устойчивости работы системы на протяжении обычного периода использования. Акцент:
а) Отсутствие утечек памяти.
б) Отсутствие перезапусков серверов и программного обеспечения.
в) Любые ошибки, связанные с накоплением данных.
г) Отсутствие отключений или сбоев в работе сетевого оборудования.
6. Объемное тестирование – тестирование с увеличением объемов обрабатываемых данных, данных обрабатываемых в единицу времени.
Акцент:
а) Зависимость времени выполнения операций на сервере от объемов данных.
б) Количество пользователей, которые могут одновременно работать с приложением «быстро».
в) Как быстро увеличивается объем данных при работе приложения.
7. Тестирование отказоустойчивости + тестирование восстановления – проверка поведения системы в случае сбоя серверов и проверка восстановления после сбоя.
Акцент:
а) Как система будет перемещать операции между мощностями работающего и нет оборудования.
б) Как будет осуществлен перехват управления системой при отказе управляющего сервера.
в) Как будет осуществлен обход и обработка отказа (переключение на резервный канал связи, отправка данных по другому маршруту и т.д.).
г) При восстановлении – время восстановления и корректность восстановленных данных.
8. Конфигурационное тестирование - проверка производительности системы на разных аппаратных и программных конфигурациях.
9. Тестирование производительности при всплесках нагрузки (спайк-тестирование) – оценка системы при внезапных всплесках нагрузки и возвращение в устойчивое состояние.

МЕТРИКИ

Категории метрик:

1. Со стороны приложения:
а) Интенсивность
б) Время отклика
в) Загрузка очередей
г) Метрики БД
д) Соотношение ошибок
2. Со стороны аппаратной части
а) ЦПУ
б) ОЗУ
в) hdd

Как выбрать:
При поиске узких мест следует включать неспецифические метрики.

Инструменты для сбора метрик производительности:
а) Инструменты нагрузочного тестирования (набор измерений и отображения метрик).
б) Инструменты мониторинга производительности (мониторинг метрик производительности на постоянной основе и информирование при снижении).
аа) Linux.
бб) Windows.
в) Инструменты анализа лог-файлов (сканирование логов с сервера и сбор метрик на их основе).

Примеры инструментов:
1. Apache Jmeter
2. LoadRunner
3. Load Ninja
4. WebLoad
5. LoadUI Pro
6. BlazeMeter
7. Яндекс танк

План проекта по проведению нагрузочному тестированию:
1. Выяснить цель.
2. Описать требования и условия.
3. Описать профиль нагрузки.
4. Разработать сценарий.
5. Прогнать сценарии и откалибровать.
6. Анализ результатов выполнения нагрузки и ОТЧЕТ.

Способы задания нагрузки:
1. Создание нагрузки через пользовательский интерфейс (с помощью инструментов функционального теста через UI).
2. Создание нагрузки с помощью большого числа тестировщиков.
3. Создание нагрузки через API (через программный интерфейс приложения) \ mq-очередь (очередь сообщений, обеспечивающая временное хранилище данных, когда целевая программа занята).
    ⟵ Назад
    Смотрите также