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

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

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

Тестирование производительности, подмножество проектирования производительности, представляет собой информатику практику, которая стремится встроить стандарты производительности в реализацию, дизайн и архитектуру системы.

Содержание
  • 1 Типы тестирования
    • 1.1 Нагрузочное тестирование
    • 1.2 Стресс-тестирование
    • 1.3 Испытание на выдержку
    • 1.4 Тестирование пиковых значений
    • 1.5 Тестирование точки останова
    • 1.6 Тестирование конфигурации
    • 1,7 Тестирование изоляции
    • 1.8 Интернет-тестирование
  • 2 Установка целей производительности
    • 2.1 Параллелизм и пропускная способность
    • 2.2 Время отклика сервера
    • 2.3 Время отклика рендеринга
    • 2.4 Характеристики производительности
    • 2.5 Вопросы, которые нужно задать
  • 3 Предварительные требования
    • 3.1 Условия тестирования
    • 3.2 Время
  • 4 Инструменты
    • 4.1 Создание сценариев производительности
    • 4.2 Мониторинг производительности
  • 5 Технология
  • 6 Задачи, которые необходимо выполнить
  • 7 Методология
    • 7.1 Тестирование производительности веб-приложений
  • 8 См. Также
  • 9 Внешние ссылки
Типы тестирования

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

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

Стресс-тестирование

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

Испытание на выдержку

Испытание на выдержку, также известное как испытание на выносливость, обычно проводится, чтобы определить, может ли система выдержать ожидаемую постоянную нагрузку. Во время испытаний на выдержку отслеживается использование памяти для выявления потенциальных утечек. Также важным, но часто упускаемым из виду является снижение производительности, то есть обеспечение того, чтобы пропускная способность и / или время отклика после некоторого длительного периода устойчивой активности были такими же или лучшими, чем в начале теста. По сути, это подразумевает приложение значительной нагрузки к системе в течение продолжительного значительного периода времени. Цель состоит в том, чтобы выяснить, как система ведет себя при длительном использовании.

Пиковое тестирование

Пиковое тестирование выполняется путем внезапного увеличения или уменьшения нагрузки, создаваемой очень большим количеством пользователей, и наблюдения за поведением системы. Цель состоит в том, чтобы определить, пострадает ли производительность, откажет ли система или она сможет справиться с резкими изменениями нагрузки.

Тестирование точки останова

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

Тестирование конфигурации

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

Тестирование изоляции

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

Интернет-тестирование

Это относительно новая форма тестирования производительности, когда глобальные приложения, такие как Facebook, Google и Wikipedia, проверяются на производительность с помощью генераторов нагрузки, которые размещаются на реальном целевом континенте, будь то физический машины или облачные виртуальные машины. Эти тесты обычно требуют огромной подготовки и мониторинга для успешного выполнения.

Установка целей производительности

Тестирование производительности может служить различным целям:

  • Оно может продемонстрировать, что система соответствует критериям производительности.
  • Он может сравнить две системы, чтобы определить, какая из них работает лучше.
  • Он может измерить, какие части системы или рабочая нагрузка вызывают плохую работу системы.

Многие тесты производительности проводятся без установления достаточно реалистичных, ориентированных на достижение целей производительности. Первый вопрос с точки зрения бизнеса всегда должен быть: «Почему мы проводим тестирование производительности?». Эти соображения являются частью бизнес-обоснования тестирования. Цели производительности будут различаться в зависимости от технологии и цели системы, но всегда должны включать некоторые из следующего:

Параллелизм и пропускная способность

Если система идентифицирует конечных пользователей с помощью какой-либо формы входа в систему процедура, то очень желательна цель параллелизма. По определению это наибольшее количество одновременных пользователей системы, которое система должна поддерживать в любой момент. Рабочий процесс скриптовой транзакции может повлиять на истинный параллелизм, особенно если итеративная часть содержит действия по входу и выходу из системы.

Если система не имеет понятия о конечных пользователях, то цель производительности, вероятно, будет основана на максимальной пропускной способности или скорости транзакций.

Время ответа сервера

Это время, необходимое одному узлу системы, чтобы ответить на запрос другого. Простым примером может служить HTTP-запрос GET от клиента браузера к веб-серверу. С точки зрения времени отклика это то, что фактически измеряют все инструменты нагрузочного тестирования. Может быть важно установить целевые значения времени ответа сервера между всеми узлами системы.

Время отклика рендеринга

У инструментов нагрузочного тестирования есть трудности с измерением времени отклика рендеринга, поскольку они обычно не имеют представления о том, что происходит в узле , кроме распознавания периода. времени, когда нет активности «на проводе». Для измерения времени отклика рендеринга обычно необходимо включать функциональные тестовые скрипты как часть сценария тестирования производительности. Многие инструменты нагрузочного тестирования не поддерживают эту функцию.

Характеристики производительности

Очень важно детализировать технические характеристики (требования) и задокументировать их в любом плане тестирования производительности. В идеале это делается на этапе разработки требований любого проекта разработки системы, до любых работ по проектированию. См. Performance Engineering для получения более подробной информации.

Однако тестирование производительности часто не проводится по спецификации; например, никто не будет указывать, каким должно быть максимально приемлемое время ответа для данной группы пользователей. Тестирование производительности часто используется как часть процесса настройки профиля производительности. Идея состоит в том, чтобы определить «самое слабое звено» - неизбежно существует часть системы, которая, если заставить ее реагировать быстрее, приведет к тому, что вся система будет работать быстрее. Иногда бывает сложно определить, какая часть системы представляет этот критический путь, и некоторые инструменты тестирования включают (или могут иметь надстройки, которые предоставляют) инструментарий, который запускается на сервере (агенты) и сообщает время транзакций, время доступа к базе данных., служебные данные сети и другие мониторы серверов, которые можно анализировать вместе с необработанной статистикой производительности. Без таких инструментов, возможно, придется попросить кого-нибудь присесть за диспетчером задач Windows на сервере, чтобы посмотреть, какую нагрузку на ЦП создают тесты производительности (при условии, что система Windows находится в стадии тестирования).

Тестирование производительности может проводиться в Интернете и даже в разных частях страны, поскольку известно, что время отклика самого Интернета зависит от региона. Это также можно сделать собственными силами, хотя в этом случае потребуется настроить маршрутизаторы для введения задержки, которая обычно возникает в общедоступных сетях. Нагрузки следует вводить в систему с реалистичных точек. Например, если 50% пользовательской базы системы будет получать доступ к системе через модемное соединение 56K, а другая половина - через T1, то инжекторы нагрузки (компьютеры, имитирующие реальных пользователей) должны либо вводить нагрузку через одно и то же сочетание соединений (идеальный вариант) или имитируйте сетевую задержку таких соединений, следуя одному и тому же профилю пользователя.

Всегда полезно иметь заявление о вероятном пиковом количестве пользователей, которые, как ожидается, будут использовать систему в часы пик. Если также можно указать, что составляет максимально допустимое время отклика 95 процентилей, то можно использовать конфигурацию инжектора для проверки того, соответствует ли предлагаемая система этой спецификации.

Вопросы, которые следует задать

В спецификациях производительности должны быть заданы как минимум следующие вопросы:

  • Подробно, каков объем тестирования производительности? Какие подсистемы, интерфейсы, компоненты и т. Д. Входят и выходят за рамки этого теста?
  • Для задействованных пользовательских интерфейсов (UI), сколько одновременных пользователей ожидается для каждого (укажите пиковое или номинальное значение)?
  • Как выглядит целевая система (оборудование) (укажите все конфигурации серверов и сетевых устройств)?
  • Какова смесь рабочих нагрузок приложений для каждого компонента системы? (например: вход в систему 20%, поиск 40%, выбор элемента 30%, оформление заказа 10%).
  • Что такое сочетание рабочей нагрузки системы? [Несколько рабочих нагрузок могут быть смоделированы в одном тесте производительности] (например: 30% рабочая нагрузка A, 20% рабочая нагрузка B, 50% рабочая нагрузка C).
  • Каковы временные требования для любого / всех серверных компонентов пакетные процессы (указать пиковое или номинальное значение)?
Предварительные требования

Стабильная сборка системы, которая должна максимально походить на производственную среду.

Чтобы обеспечить согласованные результаты, среду тестирования производительности следует изолировать от других сред, таких как пользовательское приемочное тестирование (UAT) или разработка. Рекомендуется всегда иметь отдельную среду тестирования производительности, максимально напоминающую производственную среду.

Условия тестирования

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

Слабосвязанные архитектурные реализации (например, SOA ) создали дополнительные сложности с тестированием производительности. Чтобы по-настоящему воспроизвести производственные состояния, корпоративные сервисы или активы, которые совместно используют общую инфраструктуру или платформу, требуют скоординированного тестирования производительности, когда все потребители создают производственные объемы транзакций и нагрузку на общие инфраструктуры или платформы. Поскольку эта деятельность настолько сложна и требует больших затрат времени и денег, некоторые организации теперь используют инструменты для мониторинга и моделирования производственных условий (также называемых «шумом») в своих средах тестирования производительности (PTE ), чтобы понять требования к мощности и ресурсам и проверка / подтверждение атрибутов качества.

Сроки

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

Инструменты

Тестирование производительности в основном делится на две основные категории

Создание сценариев производительности

Эта часть тестирования производительности в основном связана с созданием / написанием сценариев рабочих потоков. ключевых идентифицированных бизнес-процессов. Это можно сделать с помощью самых разных инструментов.

Каждый из инструментов, упомянутых в приведенном выше списке (который не является исчерпывающим и не полным), либо использует язык сценариев (C, Java, JS), либо какую-либо форму визуального представления (перетаскивание) для создания и моделирования рабочие процессы конечных пользователей. Большинство инструментов допускают то, что называется «Запись и воспроизведение», когда тестер производительности запускает инструмент тестирования, подключает его к браузеру или толстому клиенту и фиксирует все сетевые транзакции, которые происходят между клиентом и сервером. При этом разрабатывается сценарий, который можно расширять / изменять для эмуляции различных бизнес-сценариев.

Мониторинг производительности

Это другая сторона тестирования производительности. При мониторинге производительности отслеживаются поведение и характеристики отклика тестируемого приложения. Приведенные ниже параметры обычно отслеживаются во время выполнения теста производительности

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

  • Использование ЦП
  • Использование памяти
  • Использование диска
  • Использование сети

В качестве первого шага шаблоны, генерируемые этими 4 параметрами, дают хорошее представление о том, где находится узкое место. Чтобы определить точную первопричину проблемы, инженеры-программисты используют такие инструменты, как профилировщики, чтобы измерить, какие части устройства или программного обеспечения больше всего способствуют снижению производительности, или для определения уровней пропускной способности. (и пороговые значения) для поддержания приемлемого времени отклика.

Технология

Технология тестирования производительности использует один или несколько ПК или серверов Unix в качестве инжекторов, каждый из которых имитирует присутствие определенного количества пользователей и каждый выполняет автоматическую последовательность взаимодействий (записанную как сценарий или в виде серии сценариев для имитации различных типов взаимодействия пользователя) с хостом, производительность которого проверяется. Обычно отдельный ПК действует как проводник испытаний, координируя и собирая метрики от каждого из инжекторов и сопоставляя данные о производительности для целей отчетности. Обычная последовательность действий заключается в увеличении нагрузки: начать с нескольких виртуальных пользователей и со временем увеличить их количество до заранее определенного максимума. Результат теста показывает, как производительность изменяется в зависимости от нагрузки, выраженной как количество пользователей в зависимости от времени отклика. Для выполнения таких тестов доступны различные инструменты. Инструменты этой категории обычно выполняют набор тестов, имитирующих работу реальных пользователей с системой. Иногда результаты могут выявить странности, например, хотя среднее время ответа может быть приемлемым, есть выбросы для нескольких ключевых транзакций, выполнение которых занимает значительно больше времени - что может быть вызвано неэффективными запросами к базе данных, изображениями и т. Д.

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

Аналитическое моделирование производительности - это метод моделирования поведения системы в электронной таблице. Модель снабжается измерениями требований к ресурсам транзакций (CPU, дисковый ввод-вывод, LAN, WAN ), взвешенных по совокупности транзакций (бизнес-транзакции в час). Взвешенные потребности транзакций в ресурсах суммируются для получения почасовых потребностей в ресурсах и делятся на почасовую мощность ресурсов для получения нагрузок ресурсов. Используя формулу времени отклика (R = S / (1-U), R = время отклика, S = время обслуживания, U = нагрузка), время отклика может быть рассчитано и откалибровано с результатами тестов производительности. Аналитическое моделирование производительности позволяет оценить варианты дизайна и размер системы на основе фактического или предполагаемого использования в бизнесе. Следовательно, это намного быстрее и дешевле, чем тестирование производительности, хотя и требует глубокого понимания аппаратных платформ.

Задачи для выполнения

Задачи для выполнения такого теста будут включать:

  • Решить, использовать ли внутренние или внешние ресурсы для выполнения тестов, в зависимости от внутреннего опыта (или его отсутствия)
  • Сбор или запрос требований (спецификаций) к производительности от пользователей и / или бизнес-аналитиков
  • Разработка высокоуровневого плана (или устава проекта), включая требования, ресурсы, сроки и контрольные точки
  • Разработайте подробный план тестирования производительности (включая подробные сценарии и тестовые примеры, рабочие нагрузки, информацию о среде и т. д.)
  • Выберите инструмент тестирования (s)
  • Укажите необходимые тестовые данные и объем работ (часто упускаются из виду, но жизненно важны для проведения действительного теста производительности)
  • Разработайте доказательство- концептуальные сценарии для каждого тестируемого приложения / компонента с использованием выбранных инструментов и стратегий тестирования
  • Разработайте подробный план проекта тестирования производительности, включая все зависимости и соответствующие временные рамки
  • Установить и настроить e инжекторы / контроллер
  • Настройте тестовую среду (в идеале идентичное оборудование для производственной платформы), конфигурацию маршрутизатора, тихую сеть (мы не хотим, чтобы результаты были нарушены другими пользователями), развертывание серверного инструментария, наборы тестов базы данных разработаны и т. д.
  • Пробный прогон тестов - перед фактическим выполнением нагрузочного теста с предварительно определенными пользователями выполняется пробный прогон для проверки правильности скрипта
  • Выполнение тестов - возможно повторно (итеративно), чтобы увидеть, может ли какой-либо неучтенный фактор повлиять на результаты
  • Проанализировать результаты - либо пройден / не пройден, либо исследование критического пути и рекомендация корректирующего действия
Методология

Тестирование производительности веб-приложений

Согласно Microsoft Developer Network методология тестирования производительности состоит из следующих действий:

  1. Определение тестовой среды. Определение физической тестовой среды и производственная среда а также инструменты и ресурсы, доступные команде тестирования. Физическая среда включает оборудование, программное обеспечение и сетевые конфигурации. Тщательное понимание всей тестовой среды с самого начала позволяет более эффективно разрабатывать и планировать тестирование, а также помогает выявлять проблемы тестирования на ранних этапах проекта. В некоторых ситуациях этот процесс необходимо периодически пересматривать на протяжении жизненного цикла проекта.
  2. Определить критерии приемлемости производительности. Определить время отклика, пропускную способность, а также цели и ограничения использования ресурсов. В общем, время ответа - это проблема пользователя, пропускная способность - это проблема бизнеса, а использование ресурсов - проблема системы. Кроме того, определите критерии успеха проекта, которые могут не соответствовать этим целям и ограничениям; например, используя тесты производительности, чтобы оценить, какая комбинация параметров конфигурации приведет к наиболее желательным характеристикам производительности.
  3. Тесты планирования и проектирования. Определите ключевые сценарии, определите вариативность среди типичных пользователей и то, как чтобы смоделировать эту изменчивость, определить тестовые данные и установить показатели, которые необходимо собрать. Объедините эту информацию в одну или несколько моделей использования системы, которые будут реализованы, выполнены и проанализированы.
  4. Настроить тестовую среду. Подготовить тестовую среду, инструменты и ресурсы, необходимые для выполнения каждой стратегии, в виде функций и компонентов становятся доступными для тестирования. Убедитесь, что среда тестирования оснащена необходимыми инструментами для мониторинга ресурсов.
  5. Реализуйте дизайн теста. Разработайте тесты производительности в соответствии с дизайном теста.
  6. Выполните тест. Запустите и контролируйте свои тесты. Подтвердите тесты, тестовые данные и. Выполняйте проверенные тесты для анализа, одновременно наблюдая за тестированием и тестовой средой.
  7. Анализируйте результаты, настраивайте и повторно тестируйте. Анализируйте, консолидируйте и делитесь данными результатов. Внесите изменения в настройку и повторите тестирование. Сравните результаты обоих тестов. Каждое сделанное улучшение даст меньшее улучшение, чем предыдущее. Когда ты остановишься? Когда вы достигаете узкого места ЦП, вы можете либо улучшить код, либо добавить больше ЦП.
См. Также
Внешние ссылки
Последняя правка сделана 2021-06-08 08:27:51
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте