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

Материал из AOW

Перейти к: навигация, поиск

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

Нагрузочное тестирование – это те же тесты производительности, в которых система подвергается различным нагрузкам. Цель данного тестирования – оценить способность системы правильно функционировать в случае превышении планируемых нагрузок при реальной эксплуатации (система имеет некоторый «запас прочности»).

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

Стресс тестирование - поведение системы при недостатке ресурсов (ресурсов процессора, дискового пространства, обрывов сети, …)

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

  • % загрузки процессора сервера приложений
  • % загрузки процессора сервера БД
  • Средний объем переданных по сети байт за секунду
  • % использования памяти на сервере БД
  • Средний объем считанных с винчестера сервера БД байт за секунду


Наиболее распространенный метод проведения тестирования – запуск нескольких потоков и непрерывные запросы в каждом потоке. Другой метод – имитация действий пользователя в каждом потоке со всеми паузами между операциями. И в том, и в другом случае последовательно увеличивают число потоков. Чаще, используют первый метод.

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

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

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

2. Выбор инструмента для нагрузочного тестирования

3. Создание и отладка тестовых скриптов

4. Проведение тестирования Одновременно заранее заданное кол-во пользователей с высокой интенсивностью совершают различные действия и операции над приложением

5. Анализ результатов


Объекты тестирования

Тестирования времени выполнения системой одной операции

Тестирование времени выполнения системой цепочки действий (бизнес операции)

Тестирования времени выполнения компонентом одной операции. Применяется для исследования и оптимизации узких мест.



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

Ниже рассмотрены некоторые экспериментальные факты, обобщённые в принципы, используемые при тестировании производительности в целом и применимые к любому типу тестирования производительности (в частности и к нагрузочному тестированию).

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

Иллюстрация различной дисперсии распределений для времени выполнения запросов X и Y.

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

2. Время отклика системы

В общем случае время отклика системы подчиняется функции нормального распределения.

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

3. Зависимость времени отклика системы от степени распределённости этой системы.

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

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

4. Разброс времени отклика системы

Из утверждений 1, 2 и 3 можно также заключить, что при достаточно большом количестве измерений величины времени обработки запроса в любой системе всегда найдутся запросы, время обработки которых превышает определённые в требованиях максимумы; причем, чем больше суммарное время проведения эксперимента тем выше окажутся новые максимумы. Этот факт необходимо учитывать при формировании требований к производительности системы, а также при проведении регулярного нагрузочного тестирования.

5. Точность воспроизведения профилей нагрузки

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

Личные инструменты

Разработка веб-сайтов, автоматизация.
По всем вопросам обращайтесь по телефонам:

+7 495 640 29 90
http://artofweb.ru