Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к этой рекомендации по эффективности производительности платформы Azure Well-Architected Framework:
| PE:06 | Тестирование производительности. Регулярное тестирование в среде, которая соответствует рабочей среде. Сравните результаты с целевыми показателями производительности и тестом производительности. |
|---|
В этом руководстве описываются рекомендации по тестированию. Тестирование производительности помогает оценить функциональные возможности рабочей нагрузки в различных сценариях. Он включает тестирование времени отклика рабочей нагрузки, пропускной способности, использования ресурсов и стабильности, чтобы обеспечить соответствие рабочей нагрузки требованиям к производительности.
Тестирование помогает предотвратить проблемы с производительностью. Она также помогает обеспечить соответствие рабочей нагрузки своим соглашениям об уровне обслуживания. Без тестирования производительности рабочая нагрузка может столкнуться с снижением производительности, которые часто можно предотвратить. Производительность рабочей нагрузки может отойти от целевых показателей производительности и установленных базовых показателей.
Определения
| Срок | Definition |
|---|---|
| Тестирование хаоса | Тест производительности, который направлен на тестирование устойчивости и стабильности системы путем намеренного внедрения случайных и непредсказуемых сбоев или сбоев. |
| Испытание под нагрузкой | Тест производительности, который измеряет производительность системы в соответствии с типичной и тяжелой нагрузкой. |
| Базовые показатели производительности | Набор метрик, представляющих поведение рабочей нагрузки в обычных условиях, как проверено тестированием. |
| Стресс-тест | Тест производительности, который перегружает систему, пока она не прерывается. |
| Искусственный тест | Тест производительности, имитирующий запросы пользователей в приложении. |
Тестирование производительности помогает собирать измеримые данные о рабочей нагрузке. При выполнении тестов достаточно рано, они также помогают создавать рабочие нагрузки в соответствии с правильными спецификациями. Вы должны проводить тесты производительности как можно раньше в жизненном цикле разработки программного обеспечения. Раннее тестирование позволяет перехватывать и устранять проблемы с производительностью ранее при разработке. Вы можете использовать подтверждение концепции (POC), если рабочий код не готов.
Подготовка теста
Подготовка тестов производительности относится к настройке и упорядочению ресурсов, конфигураций и тестовых сценариев, необходимых для эффективного проведения тестирования производительности.
Определение условий принятия
Критерии принятия определяют требования к производительности, которые рабочая нагрузка должна соответствовать допустимой или успешной. Определите критерии, соответствующие целевым показателям производительности.
Просмотрите целевые показатели производительности. Целевые показатели производительности определяют требуемый уровень производительности для рабочей нагрузки. Просмотрите целевые показатели производительности, установленные для рабочей нагрузки. Целевые показатели производительности — это метрики, которые могут включать время отклика, пропускную способность, использование ресурсов или любые другие соответствующие показатели производительности. Например, у вас может быть целевой объект для времени отклика, который должен находиться под определенным пороговым значением, например менее 2 секунд.
Определите критерии принятия. Преобразуйте целевые показатели производительности в определенные критерии принятия, которые можно использовать для оценки производительности рабочей нагрузки. Например, предположим, что целевой объект производительности для времени отклика составляет 2 секунды или меньше. Критерий принятия может быть средним временем отклика рабочей нагрузки должно быть менее 2 секунд. Используйте эти критерии принятия, чтобы определить, соответствует ли рабочая нагрузка требуемому уровню производительности.
При определении критериев принятия важно сосредоточиться на пользователях и их ожиданиях. Критерии принятия помогают убедиться, что доставленная работа соответствует потребностям и требованиям пользователей. Имейте в виду следующие рекомендации по включению перспективы пользователя в критерии принятия:
Требования пользователей. Понимание потребностей и целей пользователя для рабочей нагрузки. Рассмотрим, как рабочая нагрузка должна выполняться для удовлетворения этих требований.
Взаимодействие с пользователем. Определите критерии принятия, которые фиксируют требуемый пользовательский интерфейс. Включите такие факторы, как время отклика, удобство использования, доступность и общая удовлетворенность.
Функциональные требования. Устранение конкретных функций, которые пользователь ожидает видеть в рабочей нагрузке. Определите критерии принятия этих функциональных требований, чтобы убедиться, что они выполнены.
Варианты использования. Рассмотрим различные сценарии или варианты использования, с которыми может столкнуться пользователь. Определите критерии принятия на основе этих вариантов использования для проверки производительности рабочей нагрузки в реальных ситуациях.
Задайте пороговые значения принятия. Определите пороговые значения в критериях принятия, указывающие, соответствует ли рабочая нагрузка целевым показателям производительности. Эти пороговые значения определяют допустимый диапазон производительности для каждой метрики. Например, предположим, что условие принятия для времени отклика меньше 2 секунд. Пороговое значение можно задать в 2,5 секунды. Этот уровень указывает, что любое время отклика в течение 2,5 секунд считается проблемой производительности.
Определите критерии передачи. Установите критерии для определения того, пройдена ли рабочая нагрузка или завершилась ли сбой теста производительности. Вы можете определить передачу в качестве соответствия всем критериям принятия или достичь определенного процента из них.
Выбор типа теста
Чтобы выбрать правильный тип теста производительности, важно выровнять тест с критериями принятия. Критерии принятия определяют условия, которые должны быть выполнены для выполнения требования или исправления ошибок, которые необходимо рассмотреть. Тесты производительности должны стремиться проверить, соответствует ли рабочая нагрузка этим критериям принятия и выполняется должным образом в указанных условиях. Выравнивание типа теста производительности с критериями принятия помогает убедиться, что тест фокусируется на удовлетворении ожиданий производительности, определяющих критерии.
Общие сведения о критериях принятия. Просмотрите критерии принятия требований или исправлений ошибок. Критерии описывают конкретные условия и функциональные возможности, которые необходимо выполнить.
Определите соответствующие метрики производительности. На основе критериев принятия определите метрики производительности, критически важные для достижения требуемых результатов. Например, если критерии принятия фокусируются на время отклика, возможно, приоритеты нагрузочного тестирования могут быть подходящими.
Выберите соответствующий тип теста. Оцените доступные типы тестов и выберите наиболее подходящий вариант с указанными метриками производительности и критериями принятия.
В следующей таблице представлен пример типов тестов и их варианты использования.
| Тип теста | Description | Сценарий использования |
|---|---|---|
| Нагрузочное тестирование | Имитируйте реалистичные нагрузки пользователей, чтобы оценить, как рабочая нагрузка выполняется в соответствии с ожидаемыми пиковых рабочих нагрузок. | Определяет отказоустойчивость нагрузки. |
| Стресс-тестирование | Отправьте рабочую нагрузку за рамки своих обычных ограничений, чтобы определить ее критические точки и оценить ее способность к восстановлению. | Определяет устойчивость и надежность. |
| Тестирование сока (тестирование на выносливость) | Запустите рабочую нагрузку в условиях устойчивой высокой нагрузки в течение длительного периода, чтобы определить снижение производительности, утечки памяти или проблемы с ресурсами. | Оценивает стабильность и надежность с течением времени. |
| Тестирование пиковых значений | Имитируйте внезапное увеличение нагрузки пользователя, чтобы оценить, как рабочая нагрузка обрабатывает резкие изменения спроса. | Измеряет возможность масштабирования и поддержания производительности во время пиковых периодов. |
| Тестирование совместимости | Проверьте производительность рабочей нагрузки на различных платформах, браузерах или устройствах. | Помогает обеспечить согласованную производительность в различных средах. |
Определите приоритет выбранных типов тестов на основе характеристик и требований рабочей нагрузки. Рассмотрим такие факторы, как критическое значение метрик производительности, ожидания пользователей, приоритеты бизнеса и известные проблемы или уязвимости.
Выбор средств тестирования
Выберите соответствующие средства на основе типа тестирования производительности, который требуется запустить. Оцените инфраструктуру, ресурсы и ограничения среды тестирования. Выберите средства тестирования, поддерживающие требуемые типы тестов и предоставляющие необходимые функции для мониторинга, измерения, анализа и отчетности.
Средство мониторинга производительности приложений (APM) предоставляет подробные сведения о приложениях и является важным средством тестирования. Это помогает отслеживать отдельные транзакции и сопоставлять пути с помощью различных служб рабочей нагрузки. После тестирования следует использовать средство APM для анализа и сравнения данных тестирования с базовыми показателями производительности.
Используйте средства профилирования для выявления узких мест производительности в коде. Профилирование помогает определить области кода, которые потребляют больше всего ресурсов и нуждаются в оптимизации. Он предоставляет аналитические сведения о времени выполнения и использовании памяти различных частей кода.
Следующие действия помогут вам выбрать соответствующие средства тестирования:
Определите требования к тестированию. Начните с понимания конкретных требований к тестированию производительности. Рассмотрим различные факторы:
- Тип рабочей нагрузки
- Метрики производительности для измерения, такие как время отклика и пропускная способность
- Сложность архитектуры рабочей нагрузки
- Среда тестирования, например облачная, локальная или гибридная среда
Исследовательские средства тестирования. Проводите исследования, чтобы определить средства тестирования производительности, которые соответствуют вашим требованиям. Рассмотрим коммерческие и открытые инструменты с открытым кодом, доступные на рынке. Найдите средства, поддерживающие требуемые типы тестирования производительности, такие как нагрузочное тестирование или стресс-тестирование, и которые предоставляют функции для измерения метрик производительности.
Оценка возможностей инструментов. Оцените функции, предоставляемые каждым средством тестирования. Ищите такие возможности, как моделирование реалистичного поведения пользователя и масштабируемость для обработки больших нагрузк пользователей. Рассмотрите возможность поддержки различных протоколов и технологий, интеграции с другими средствами тестирования или платформами, а также возможностями создания отчетов и анализа.
Рассмотрите возможность совместимости и интеграции. Определите совместимость средств тестирования с существующей инфраструктурой и технологиями. Убедитесь, что средства можно легко интегрировать в среду тестирования и взаимодействовать с необходимой рабочей нагрузкой для мониторинга и анализа.
Оцените затраты и лицензирование. Оцените структуру затрат и условия лицензирования, связанные с средствами тестирования. Рассмотрим такие факторы, как первоначальные инвестиции, затраты на обслуживание и расходы на поддержку. Кроме того, рассмотрите другие требования к лицензированию, зависящие от количества пользователей или виртуальных пользователей.
Проведение POC. Выберите несколько инструментов, которые, как представляется, наиболее подходящими на основе оценки. Проведите небольшой POC, чтобы проверить удобство использования, функции и эффективность инструментов в конкретном сценарии тестирования.
Рассмотрите возможность поддержки и обучения. Оцените уровень поддержки и обучения, которые предоставляет поставщик или сообщество средства. Определите доступность документации, учебников и каналов технической поддержки, чтобы помочь с любыми проблемами или проблемами, которые могут возникнуть во время тестирования.
Создание тестовых сценариев
Создание сценариев тестирования относится к процессу разработки конкретных ситуаций или условий, которые подходят для тестирования производительности рабочей нагрузки. Сценарии тестирования создаются для эмуляции реалистичного поведения пользователя и шаблонов рабочей нагрузки. Эти сценарии позволяют тестировщикам производительности оценивать, как рабочая нагрузка выполняется в различных условиях.
Сценарии тестирования позволяют реплицировать различные шаблоны рабочих нагрузок, такие как одновременный доступ пользователей, пиковые периоды нагрузки или определенные последовательности транзакций. Проверив рабочую нагрузку в различных шаблонах рабочей нагрузки, можно определить узкие места производительности и оптимизировать выделение ресурсов.
Определите поведение пользователя. Эмулируйте реалистичное поведение пользователя и шаблоны рабочей нагрузки, определяя шаги и действия, выполняемые пользователями при взаимодействии с рабочей нагрузкой. Рассмотрите такие действия, как вход, выполнение поиска, отправка форм или доступ к определенным функциям. Разбиите каждый сценарий на определенные шаги и действия, представляющие взаимодействие пользователя с рабочей нагрузкой. Вы можете перемещаться по страницам, выполнять транзакции или взаимодействовать с различными элементами рабочей нагрузки.
Определение участия в данных. Определите тестовые данные, необходимые для выполнения сценариев тестирования. Вы можете создать или создать реалистичные наборы данных, представляющие различные сценарии, профили пользователей или тома данных. Убедитесь, что тестовые данные разнообразны и охватывают различные варианты использования, чтобы обеспечить комплексную оценку производительности.
Разработка тестовых скриптов. Создайте тестовые скрипты, автоматизирующие выполнение определенных сценариев тестирования. Тестовые скрипты обычно состоят из последовательности действий, HTTP-запросов или взаимодействий с API рабочей нагрузки или пользовательскими интерфейсами. Используйте средства тестирования производительности или языки программирования для написания скриптов, учитывая такие факторы, как параметризация, корреляция и динамическая обработка данных. Проверьте тестовые скрипты для правильности и функциональности. Отладка любых проблем, таких как ошибки скрипта, отсутствие или неправильные действия или проблемы, связанные с данными. Проверка скрипта тестирования имеет решающее значение для обеспечения точного и надежного выполнения тестов производительности.
Настройте тестовые переменные и параметры. Настройте переменные и параметры в скриптах тестирования, чтобы ввести вариативность и имитировать реальные сценарии. Включите такие параметры, как учетные данные пользователя, входные данные или рандомизация для имитации различных действий пользователей и ответов рабочей нагрузки.
Итеративно уточнение скриптов. Непрерывно уточняйте и расширяйте тестовые скрипты на основе отзывов, результатов тестирования или изменения требований. Рассмотрите возможность оптимизации логики скрипта, параметризации и обработки ошибок или добавления дополнительных проверок и контрольных точек.
Настройка тестовой среды
Настройка тестовой среды относится к процессу настройки инфраструктуры, программного обеспечения и сетевых конфигураций, необходимых для создания среды, которая очень похожа на рабочую среду.
Чтобы настроить среду тестирования таким образом, чтобы повысить эффективность производительности, включите следующие действия в процесс конфигурации:
Зеркальное отображение рабочей среды. Настройте тестовую среду для точного напоминать рабочую среду. Рассмотрим такие факторы, как конфигурация инфраструктуры, параметры сети и конфигурации программного обеспечения. Цель заключается в том, чтобы результаты теста производительности были репрезентативными реальными условиями.
Подготовьте достаточные ресурсы. Выделение достаточных ресурсов, таких как ЦП, память и дисковое пространство в тестовой среде. Убедитесь, что доступные ресурсы могут обрабатывать ожидаемую рабочую нагрузку и предоставлять точные измерения производительности.
Репликация сетевых условий. Настройте параметры сети в тестовой среде для репликации ожидаемых условий сети во время фактического развертывания рабочей нагрузки. Необходимо включить пропускную способность, задержку и сетевые протоколы.
Установка и настройка зависимостей. Установите программное обеспечение, библиотеки, базы данных и другие зависимости, необходимые для правильной работы рабочей нагрузки. Настройте эти зависимости, чтобы соответствовать ожидаемой рабочей среде.
Компромисс. Существуют затраты, связанные с обслуживанием отдельных тестовых сред, хранением данных, использованием инструментов и выполнением тестов. Узнайте о затратах на тестирование производительности и найдите способ оптимизации расходов.
Риск. Рабочие данные могут содержать конфиденциальную информацию. Без надежной стратегии очистки и маскирования вы рискуете утечкой конфиденциальных данных при использовании рабочих данных для тестирования.
Выполнение тестов
Запустите тесты производительности с помощью выбранного средства тестирования. Тестирование включает измерение и запись метрик производительности, мониторинг работоспособности и запись всех возникающих проблем с производительностью.
Мониторинг и сбор метрик производительности, таких как время отклика, пропускная способность, использование ЦП и памяти, а также другие соответствующие индикаторы.
Используйте определенные сценарии тестирования, чтобы поместить рабочую нагрузку в ожидаемые нагрузки. Проводите тесты в этих различных условиях нагрузки. Например, используйте уровни, такие как обычные, пиковые и стрессовые уровни, для анализа поведения рабочей нагрузки в различных сценариях.
Анализ результатов
Анализ результатов теста включает изучение собранных данных и метрик из тестов производительности, чтобы получить аналитические сведения о производительности рабочей нагрузки. Целью является определение проблем с производительностью и использование обратной связи для корректировки приоритетов в разработке приложений. Ниже приведены основные действия для анализа результатов теста.
Просмотрите метрики производительности. Просмотрите метрики производительности, собираемые во время тестирования производительности, например время отклика, пропускную способность, частоту ошибок, загрузку ЦП и памяти и задержку в сети. Проанализируйте эти метрики, чтобы понять общую производительность рабочей нагрузки.
Определите узкие места. Оцените метрики производительности, чтобы определить узкие места или области неэффективной производительности. Оценка может включать высокие сроки отклика, ограничения ресурсов, проблемы с базой данных, задержку сети и ограничения масштабируемости. Определение основных причин этих узких мест помогает определить приоритеты улучшений производительности.
Коррелирует метрики. Оцените связи и корреляции между различными метриками производительности. Например, анализ увеличения нагрузки или использования ресурсов влияет на время отклика. Понимание этих корреляций может предоставлять ценные сведения о поведении рабочей нагрузки в различных условиях. Поиск шаблонов и тенденций в данных о производительности с течением времени. Анализ производительности на разных уровнях нагрузки или в определенные периоды. Обнаружение тенденций может помочь определить сезонные вариации, пиковое время использования или повторяющиеся проблемы с производительностью.
Оцените критерии принятия. Сравните результаты повторного тестирования с предопределенными критериями принятия и целями производительности. Оцените, соответствует ли рабочая нагрузка требуемым стандартам производительности. Если рабочая нагрузка не соответствует критериям принятия, выполните дальнейшее исследование и уточнение оптимизаций.
Итерацию и уточнение анализа. При необходимости внесите другие изменения и улучшения. Используйте собранные данные и метрики для диагностики конкретных проблем с производительностью. Этот диагноз может включать трассировку с помощью компонентов рабочей нагрузки, изучение файлов журналов, мониторинг использования ресурсов или анализ сообщений об ошибках. Углубиться в данные, чтобы понять основные причины проблем с производительностью.
На основе анализа результатов теста определите приоритеты проблем с производительностью и реализуйте необходимые улучшения. Улучшения могут включать оптимизацию кода, настройку запросов к базе данных, улучшение механизмов кэширования и оптимизацию конфигураций сети.
Создание базовых показателей
Базовые показатели предоставляют эталонную точку для сравнения результатов производительности с течением времени. Базовые показатели должны быть значимыми моментальными моментальными снимками производительности рабочей нагрузки— вам не нужно использовать каждый тест в качестве базового плана.
Рассмотрим цели рабочей нагрузки и моментальные снимки производительности документов, которые позволяют изучать и оптимизировать их. Используйте эти базовые измерения в качестве эталона для будущих тестов производительности и используйте их для выявления любого ухудшения или улучшения.
Чтобы установить базовые показатели для тестирования производительности и использовать их в качестве эталона для будущих тестов производительности, выполните следующие действия.
Определите метрики производительности. Определите конкретные метрики производительности, которые необходимо измерять и отслеживать. Примеры:
- Время отклика или как быстро рабочая нагрузка реагирует на запросы.
- Пропускная способность или количество запросов, обрабатываемых за единицу времени.
- Использование ресурсов, таких как ЦП, память и использование дисков.
Запишите значимые измерения. Запишите метрики производительности, которые вы получаете во время теста в качестве базовых измерений. Эти измерения представляют начальную точку, с которой сравниваются будущие тесты производительности.
Сравните будущие тесты. В последующих тестах производительности сравните метрики производительности с установленными базовыми и пороговыми значениями. Сравнение позволяет определить любые улучшения или снижение производительности.
Непрерывное тестирование
Непрерывное тестирование включает в себя текущий мониторинг и уточнение тестов. Непрерывное тестирование помогает поддерживать согласованные и приемлемые уровни производительности. Рабочая нагрузка должна обеспечить согласованный и приемлемый уровень производительности относительно базового уровня. С течением времени следует настроить рабочую нагрузку, чтобы обеспечить согласованную производительность, которая находится в допустимых ограничениях производительности. Ниже приведены некоторые ключевые методики.
Задайте ограничения снижения. Определите числовые пороговые значения, определяющие уровень снижения производительности, приемлемый с течением времени. Задав эти ограничения, вы можете отслеживать колебания производительности и получать оповещения, когда производительность ниже определенного порогового значения.
Включите обеспечение качества. Включите требования к производительности, такие как использование ЦП и максимальные запросы в секунду, в процесс обеспечения качества. Учитывайте требования к производительности с тем же уровнем важности, что и функциональные требования. Этот процесс помогает убедиться, что рабочая нагрузка соответствует определенным требованиям к производительности перед развертыванием в рабочей среде.
Автоматизация оповещений. В живых средах быстрое обнаружение и реагирование имеют решающее значение. Настройте автоматические системы оповещений, использующие базовые показатели производительности в качестве ссылки. Если имеется значительное отклонение в производительности, необходимые команды немедленно предупреждаются о действиях.
Тестовые изменения. Некоторые проблемы с производительностью могут проявляться только в динамическом параметре. Применяйте методы тщательного тестирования для предлагаемых изменений кода и инфраструктуры. Используйте инструментирование кода для получения аналитических сведений о производительности приложения, таких как горячие пути, выделение памяти и сборка мусора. Это тестирование гарантирует, что любые внесенные изменения не ухудшают производительность за пределы допустимых ограничений.
Упрощение функций Azure
Выполните тесты: Azure Pipelines позволяет интегрировать тестирование производительности в конвейер CI/CD. Вы можете включить нагрузочное тестирование в качестве шага в конвейере, чтобы проверить производительность и масштабируемость приложений.
Azure Chaos Studio предоставляет способ внедрения реальных ошибок в приложение, чтобы вы могли выполнять контролируемые эксперименты по внедрению ошибок. Эксперименты помогают измерять, понимать и улучшать устойчивость облачных приложений и служб.
Нагрузочное тестирование Azure — это служба нагрузочного тестирования, которая создает масштабную нагрузку на любое приложение. Нагрузочное тестирование предоставляет возможности для автоматизации нагрузочных тестов и их интеграции в рабочий процесс непрерывной интеграции и непрерывной доставки (CI/CD). Можно определить критерии теста, такие как среднее время отклика или пороговые значения ошибок, и автоматически останавливать нагрузочные тесты на основе определенных условий ошибки. Нагрузочное тестирование предоставляет панель мониторинга, которая предоставляет динамические обновления и подробные метрики ресурсов компонентов приложения Azure во время нагрузочного теста. Вы можете проанализировать результаты теста, определить узкие места производительности и сравнить несколько тестов, чтобы понять регрессию производительности с течением времени.
Анализ результатов: Azure Monitor — это комплексное решение для мониторинга для сбора, анализа и реагирования на данные телеметрии из облачных и локальных сред. Application Insights — это расширение Monitor, которое предоставляет функции APM. Application Insights можно использовать для мониторинга приложений во время разработки и тестирования, а также в рабочей среде.
Компромисс. Тестирование занимает время и навыки для выполнения и может повлиять на эффективность работы.
Связанные ссылки
- Рекомендации по тестированию безопасности
- Рекомендации по проектированию стратегии тестирования надежности
Контрольный список эффективности производительности
Ознакомьтесь с полным набором рекомендаций.