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

Нагрузочное тестирование - это процесс предъявления требований к системе и измерения ее отклика.

Нагрузочное тестирование программного обеспечения

Термин « нагрузочное тестирование» используется по-разному в профессиональном сообществе тестирования программного обеспечения . Под нагрузочным тестированием обычно понимается практика моделирования ожидаемого использования программы путем моделирования одновременного доступа к программе нескольких пользователей. Таким образом, это тестирование наиболее актуально для многопользовательских систем; часто построенный с использованием модели клиент / сервер, такой как веб-серверы. Однако другие типы программных систем также могут быть протестированы под нагрузкой. Например, текстовый процессор или графический редактор можно заставить читать очень большой документ; или финансовый пакет может быть вынужден создать отчет на основе данных за несколько лет. Наиболее точное нагрузочное тестирование имитирует фактическое использование, в отличие от тестирования с использованием теоретического или аналитического моделирования.

Нагрузочное тестирование позволяет измерить качество обслуживания (QOS) вашего веб-сайта на основе фактического поведения клиентов. Почти все инструменты нагрузочного тестирования и фреймворки следуют классической парадигме нагрузочного тестирования: когда клиенты посещают ваш веб-сайт, регистратор сценариев записывает общение, а затем создает соответствующие сценарии взаимодействия. Генератор нагрузки пытается воспроизвести записанные сценарии, которые, возможно, могут быть изменены с другими параметрами теста перед воспроизведением. В процедуре воспроизведения, как аппаратная, так и программная статистика будет отслеживаться и собираться проводником, эта статистика включает в себя ЦП, память, дисковый ввод-вывод физических серверов, а также время отклика, пропускную способность тестируемой системы (SUT) и т. Д. И, наконец, вся эта статистика будет проанализирована и будет сформирован отчет о нагрузочном тестировании.

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

Например, требуется, чтобы веб-сайт с функцией корзины покупок поддерживал 100 одновременных пользователей, выполняющих следующие действия:

  • 25 виртуальных пользователей (VUsers) входят в систему, просматривают элементы и затем выходят из системы
  • 25 пользователей входят в систему, добавляют товары в корзину, оформляют заказ и затем выходят из системы.
  • 25 пользователей входят в систему, возвращают ранее приобретенные товары и выходят из системы.
  • 25 VUsers просто входят в систему без каких-либо последующих действий

Аналитик тестирования может использовать различные инструменты нагрузочного тестирования для создания этих VUsers и их действий. После запуска теста и достижения устойчивого состояния приложение тестируется при нагрузке 100 VUser, как описано выше. Затем можно отслеживать и фиксировать производительность приложения.

Особенности плана или сценария нагрузочного тестирования обычно различаются в разных организациях. Например, в маркированном списке выше первый элемент может представлять 25 виртуальных пользователей, просматривающих уникальные элементы, случайные элементы или выбранный набор элементов в зависимости от плана тестирования или разработанного сценария. Однако все планы нагрузочного тестирования пытаются моделировать производительность системы в диапазоне ожидаемых пиковых рабочих процессов и объемов. Критерии прохождения или невыполнения нагрузочного теста (критерии прохождения / непрохождения) также обычно различаются в разных организациях. Не существует стандартов, определяющих приемлемые показатели производительности нагрузочного тестирования.

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

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

Нагрузочное тестирование особенно важно, если приложение, система или услуга подпадают под действие соглашения об уровне обслуживания или SLA.

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

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

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

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

Пользователи на уровне браузера и на уровне протокола

Исторически сложилось так, что все нагрузочное тестирование выполнялось с помощью автоматических тестов API, которые моделировали трафик посредством одновременных взаимодействий на уровне протокола (часто называемых пользователями уровня протокола или PLU). С развитием контейнеров и облачной инфраструктуры появилась возможность тестирования с использованием реальных браузеров (часто называемых пользователями уровня браузера или BLU). Каждый подход имеет свои достоинства для разных типов приложений, но обычно пользователи уровня браузера будут больше похожи на реальный трафик, который будет испытывать веб-сайт, и обеспечат более реалистичный профиль нагрузки и измерение времени отклика. BLU, безусловно, являются более дорогим способом запуска тестов и не могут работать со всеми типами приложений, особенно с теми, которые недоступны через веб-браузер, например, настольный клиент или приложение на основе API.

Инструменты нагрузочного тестирования

Название инструмента Название компании Лицензия Тип Ценообразование Фокус Примечания
Apache JMeter Проект с открытым исходным кодом Apache Jakarta Лицензия Apache  2.0 Местный Бесплатно Настольное приложение Java для нагрузочного тестирования и измерения производительности.
BlazeMeter BlazeMeter Ltd. Проприетарный Облачный Доступен бесплатный план Веб-сайт, веб-приложение, мобильный телефон, база данных и другие сценарии Масштабируемая нагрузка до 200 000 одновременных смоделированных пользователей браузера из восьми географических регионов. Также может использоваться для интеграции и функционального тестирования.
Блиц Spirent Communications Проприетарный Облачный Доступна пробная версия Веб-сайты, мобильные и REST API Это позволяет моделировать до 50 000 одновременных виртуальных пользователей из разных мест по всему миру.
Наводнение Tricentis Corp. Проприетарный Облачный Уровень бесплатного использования, уровни платного использования Нагрузочное тестирование на основе браузера, API и приложения на основе протокола Масштабируемая нагрузка до миллионов одновременных пользователей из всех географических регионов, доступных на AWS и Azure, а также локальные развертывания. Цены основаны на количестве виртуальных часов пользователя, потраченных каждый месяц.
Гатлинг Открытый исходный код Лицензия Apache  2.0 Местный Бесплатно Веб-приложения Java Переносимые отчеты в формате HTML.
Loader.io SendGrid Labs Проприетарный Облачный Доступен бесплатный план Веб-приложения и API
LoadRunner Микро Фокус Проприетарный Местный Доступна пробная версия В основном используется для одновременного выполнения большого количества тестов (или большого количества виртуальных пользователей). Также может использоваться для модульного и интеграционного тестирования.
Нагрузочный тест (входит в состав SOAtest ) Parasoft Проприетарный Местный Доступна демоверсия Инструмент тестирования производительности, который проверяет функциональность и производительность под нагрузкой. Поддерживает тесты SOAtest, JUnits, облегченные компоненты на базе сокетов. Обнаруживает проблемы параллелизма.
loadUI Программное обеспечение SmartBear EUPL Местный Доступна демоверсия Инструмент кроссплатформенного нагрузочного тестирования, ориентированный в основном на веб-сервисы. Интегрируется с soapUI .
Войти в VSI Войти в VSI, Inc. Проприетарный Местный Доступна пробная версия Рабочие нагрузки виртуальных рабочих столов Windows
NeoLoad Neotys Проприетарный Местный Доступен бесплатный план Интернет и мобильный Нагрузка может создаваться от локальных агентов или из облака.
OpenSTA Архитектура тестирования открытых систем Стандартная общественная лицензия GNU  2.0 Местный Бесплатно веб сервер Использует распределенную архитектуру программного обеспечения на основе CORBA. Бинарные файлы OpenSTA доступны для Windows.
Rational Performance Tester IBM Проприетарный Местный Доступна пробная версия Инструмент крупномасштабного тестирования производительности на основе Eclipse в основном используется для выполнения больших тестов производительности для измерения времени отклика системы для серверных приложений.
Осада Открытый исходный код  GPLv3 с открытым исходным кодом или новее Местный Бесплатно Веб-серверы Поддерживает базовую аутентификацию, файлы cookie, протоколы HTTP, HTTPS и FTP.
Шелковый исполнитель Borland Проприетарный Местный Доступна пробная версия Инструмент повышения производительности приложений с облачными и локальными виртуальными агентами. Поддерживает большинство протоколов и приложений. Лицензировано.
Тестовая Студия Telerik Проприетарный Местный Доступна пробная версия Оцените, как веб-сайт будет работать при одновременном посещении большим количеством пользователей.
Выпуск Visual Studio Enterprise Microsoft Проприетарный Местный Доступна пробная версия Версия Visual Studio Enterprise включает инструмент нагрузочного тестирования, который позволяет разработчику выполнять различные тесты (веб-тесты, модульные тесты и т. Д.) С комбинацией конфигураций для имитации реальной пользовательской нагрузки. Microsoft объявила, что ее функциональность веб-производительности и нагрузочного тестирования устарела после Visual Studio 2019.
WebLOAD RadView Проприетарный Облачный или локальный Доступен бесплатный план Веб и мобильные приложения и API Инструмент нагрузочного тестирования для веб-приложений и мобильных приложений, включая Web Dashboard для анализа тестов производительности. Используется для крупномасштабных нагрузок, которые могут быть созданы также из облака. Лицензировано.

Тестирование физической нагрузки

Image
Символ, используемый в геотехнических чертежах

Многие типы машин, двигателей, конструкций и моторов проходят испытания под нагрузкой. Нагрузка может быть при установленной безопасной рабочей нагрузке (SWL), полной нагрузке или на повышенном уровне нагрузки. Управляющий контракт, техническая спецификация или метод тестирования содержат подробные сведения о проведении теста. Целью испытания на механическую нагрузку является проверка того, что все составные части конструкции, включая материалы, крепления основания, пригодны для выполнения задачи и нагрузки, на которую она рассчитана.

Используются несколько видов нагрузочного тестирования.

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

В Постановлении о поставках оборудования (безопасность) 1992 г., Великобритания, говорится, что испытание под нагрузкой проводится перед первым вводом оборудования в эксплуатацию. Тестирование производительности применяет безопасную рабочую нагрузку (SWL) или другую заданную нагрузку в течение определенного времени в управляющем методе тестирования, спецификации или контракте. В соответствии с Правилами подъемных операций и подъемного оборудования 1998 г., Соединенное Королевство испытывает нагрузку после первоначального испытания, если заменяется основной компонент, если элемент перемещается из одного места в другое или по указанию компетентного лица.

Система зарядки автомобиля

Нагрузочный тест можно использовать для оценки состояния аккумуляторной батареи автомобиля . Тестер состоит из большого резистора, имеющего сопротивление, аналогичное сопротивлению стартера автомобиля, и измерителя для считывания выходного напряжения аккумулятора как в ненагруженном, так и в нагруженном состоянии. При использовании тестера в первую очередь проверяется напряжение холостого хода аккумулятора. Если напряжение холостого хода ниже нормативного (12,6 В для полностью заряженного аккумулятора), аккумулятор заряжается в первую очередь. После считывания напряжения холостого хода аккумуляторной батареи включается нагрузка. При использовании он потребляет примерно такой же ток, как стартер автомобиля при запуске. Исходя из указанных ампер холодного пуска батареи, если напряжение под нагрузкой падает ниже определенного значения, батарея неисправна. Нагрузочные тесты также используются на движущихся автомобилях для проверки выходной мощности генератора автомобиля .

Смотрите также

использованная литература

внешние ссылки