Шаблон плана тестирования производительности, который можно использовать как есть или изменить в соответствии с требованиями вашего проекта с точки зрения требований к производительности.
Цель этого раздела - предоставить общий обзор подхода к тестированию производительности, которому следует следовать для проект. Это должно быть представлено всем заинтересованным сторонам и обсуждено для достижения консенсуса.
В рамках поставки требуется, чтобы решение соответствовало критериям приемки, как в функциональной, так и в нефункциональной областях. Цель этого документа - предоставить схему нефункционального тестирования
решение.
Этот документ охватывает следующее:
Следующие рабочие элементы должны быть выполнены / согласованы заранее, чтобы приступить к фактическим действиям по тестированию производительности:
, с количественными оценками NFR, где это возможно
Мероприятие по тестированию производительности будет завершено, когда:
Тесты производительности будут проводиться на стабильной версии решение (которое уже прошло функциональные тесты) и выполняется в специальной производственной среде (pre-prod?), предназначенной для тестирования производительности, без развертывания в этой среде в ходе тестирования производительности.
Будет один или несколько специальных «инжекторов нагрузки», настроенных для инициирования требуемой нагрузки для тестирования производительности. Инжектор нагрузки может быть виртуальной машиной или несколькими виртуальными машинами, на которых запущен экземпляр JMeter, инициирующий запросы.
Инструменты тестирования, используемые для тестирования объема и производительности, будут:
Инструмент для нагрузочного тестирования с открытым исходным кодом. Преимущественно используется для тестирования объема и производительности.
Splunk будет использоваться для ведения журнала (можно использовать другой инструмент - необходимо согласовать с командой тестирования perf).
Решение должно быть достаточно эффективным, чтобы соответствовать следующим критериям нагрузки.
N.B. Цифры в следующей таблице приведены только для примера - действительные значения должны быть вставлены после завершения с помощью Документ НО.
Часовые цели обнаруживаются из текущего решения на [Y2019]. Удалены другие 'примерные' значения из шаблона плана.
Поскольку часовые пиковые значения невысоки, они будут приняты в качестве целевых для теста с фиксированной нагрузкой. Коэффициент масштабирования сейчас подлежит уточнению.
Тестирование производительности будет выполняться максимум с 1000 [?] Пользователями. Пользователи будут созданы в заранее и быть доступным через
Войти через API. Каждый запрос будет входить в систему с разными идентификаторами пользователя.
Инструмент JMeter будет использоваться для выполнения скриптов тестирования производительности. В сценариях будут указаны утверждения для проверки вышеуказанных показателей, а также некоторые базовые функциональные проверки, чтобы гарантировать получение правильных ответов на каждый запрос.
Профили нагрузки должны быть разработаны таким образом, чтобы имитировать типичный средний дневной трафик до сайт. Обратите внимание, что трафик распределяется и ограничивается только частью сайта, связанной с идентификацией клиентов и доступом, т. Е.
Ниже приведен пример профиля на день:
Первый курс действий - найти исходный уровень. Используя только 1 пользователя, мы запустим моделирование в течение определенного периода времени (например, 5 минут), чтобы получить среднее время ответа для каждой конечной точки. Это гарантирует, что всего с одним пользователем мы действительно сможем достичь пикового количества запросов в секунду.
После того, как базовые метрики собраны, то же моделирование, имитирующее профиль нагрузки, запускается с увеличенным числом пользователей для тестирования на целевых томах. Идея этого нагрузочного теста состоит в том, чтобы протестировать систему против типичной дневной нагрузки, моделируя нарастания, дневные пики и спады.
Целью стресс-тестирования является определение критической точки системы, то есть в какой момент система перестает отвечать на запросы. Если автоматическое масштабирование включено, стресс-тест также будет хорошим индикатором, когда система масштабируется и добавляются новые ресурсы. Для стресс-тестирования используется то же моделирование, что и для нагрузочного тестирования, но с более высокой, чем ожидалось, нагрузкой.
Пиковое тестирование создает значительную нагрузку на систему за относительно короткий период времени. Целью этого теста является моделирование события продаж, например, когда большое количество пользователей одновременно получают доступ к своей учетной записи в течение относительно короткого периода времени.
Тест на выдержку будет запускать нагрузочный тест в течение длительного периода времени. Цель состоит в том, чтобы выявить любые утечки памяти, отсутствие реакции или ошибки во время теста на выдержку. Обычно мы используем 80% нагрузки (используемой для нагрузочного тестирования) в течение 24 часов и / или 60% нагрузки в течение 48 часов.
При тестировании точки насыщения мы постоянно увеличиваем нагрузку, чтобы определить, в какой момент система перестает отвечать, т. Е. Находим точку разрыва системы с точки зрения нагрузки.
Для завершения тестирования производительности предлагается выполнить следующие действия:
Следующие тесты следует выполнять в следующем порядке:
В идеале должно быть выполнено 2 тестовых прогона каждого типа теста. После каждого запуска теста приложение может быть настроено для повышения его производительности, а затем начнется еще один цикл тестирования.