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

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

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

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

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

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

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

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

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

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

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

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

  • Сервер (ы) приложений или программное обеспечение
  • Сервер (ы) базы данных
  • Сеть - задержка, скопление, так далее.
  • Обработка на стороне клиента
  • Балансировка нагрузки между несколькими серверами

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

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

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

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

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

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

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

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

Название инструментаНазвание организацииЛицензияТипЦенообразованиеФокусЗаметки
Apache JMeterПроект с открытым исходным кодом Apache JakartaЛицензия Apache  2.0МестныйСвободныйНастольное приложение Java для нагрузочного тестирования и измерения производительности.
BlazeMeterBlazeMeter Ltd.ПроприетарныйОблачныйДоступен бесплатный планВеб-сайт, веб-приложение, мобильный телефон, база данных и другие сценарииМасштабируемая нагрузка до 200 000 одновременно симулированных пользователей браузера из восьми географических регионов. Также может использоваться для интеграции и функционального тестирования.
БлицSpirent CommunicationsПроприетарныйОблачныйДоступна пробная версияВеб-сайты, мобильные и REST APIЭто позволяет моделировать до 50 000 одновременных виртуальных пользователей из разных мест по всему миру.
НаводнениеTricentis Corp.ПроприетарныйОблачныйУровень бесплатного использования, уровни платного использованияНагрузочное тестирование на основе браузера, API и приложения на основе протоколаМасштабируемая нагрузка до миллионов одновременных пользователей из всех географических регионов, доступных на AWS и Azure, а также локальные развертывания. Цены основаны на количестве виртуальных часов пользователя, потребленных каждый месяц.[5][6]
ГатлингОткрытый исходный кодЛицензия Apache  2.0МестныйСвободныйВеб-приложения JavaПереносимые отчеты в формате HTML.
Loader.ioSendGrid LabsПроприетарныйОблачныйДоступен бесплатный планВеб-приложения и API
LoadRunnerМикро ФокусПроприетарныйМестныйДоступна пробная версияВ основном используется для одновременного выполнения большого количества тестов (или большого количества виртуальных пользователей). Может также использоваться для модульного и интеграционного тестирования.
Нагрузочный тест (входит в SOAtest )ParasoftПроприетарныйМестныйДоступна демоверсияИнструмент тестирования производительности, который проверяет функциональность и производительность под нагрузкой. Поддерживает тесты SOAtest, JUnits, облегченные компоненты на базе сокетов. Обнаруживает проблемы параллелизма.
loadUIПрограммное обеспечение SmartBearEUPLМестныйДоступна демоверсияИнструмент кроссплатформенного нагрузочного тестирования, ориентированный в основном на веб-сервисы. Интегрируется с soapUI.
Войти в VSIВойти в VSI, Inc.ПроприетарныйМестныйДоступна пробная версияРабочие нагрузки виртуальных рабочих столов Windows
NeoLoadNeotysПроприетарныйМестныйДоступен бесплатный планИнтернет и мобильныйНагрузка может создаваться от локальных агентов или из облака.
OpenSTAАрхитектура тестирования открытых системСтандартная общественная лицензия GNU  2.0МестныйСвободныйвеб серверИспользует распределенную архитектуру программного обеспечения на основе CORBA. Бинарные файлы OpenSTA доступны для Windows.
Rational Performance TesterIBMПроприетарныйМестныйДоступна пробная версияИнструмент крупномасштабного тестирования производительности на основе Eclipse в основном используется для выполнения больших тестов производительности для измерения времени отклика системы для серверных приложений.
ОсадаОткрытый исходный кодОткрытый исходный код GPLv3 или новееМестныйСвободныйВеб-серверыПоддерживает базовую аутентификацию, файлы cookie, протоколы HTTP, HTTPS и FTP.
Шелковый исполнительBorlandПроприетарныйМестныйДоступна пробная версияИнструмент повышения производительности приложений с облачными и локальными виртуальными агентами. Поддерживает большинство протоколов и приложений. Лицензировано.
Тестовая СтудияTelerikПроприетарныйМестныйДоступна пробная версияОцените, как веб-сайт будет работать, если его посетит большое количество пользователей одновременно.
Visual Studio Корпоративная версияMicrosoftПроприетарныйМестныйДоступна пробная версияВерсия Visual Studio Enterprise включает инструмент нагрузочного тестирования, который позволяет разработчику выполнять различные тесты (веб-тесты, модульные тесты и т. Д.) С комбинацией конфигураций для имитации реальной пользовательской нагрузки.[7]
WebLOADRadViewПроприетарныйМестныйДоступен бесплатный планВеб и мобильные приложения и APIИнструмент нагрузочного тестирования для веб-приложений и мобильных приложений, включая Web Dashboard для анализа тестов производительности. Используется для крупномасштабных нагрузок, которые могут быть созданы также из облака. Лицензировано.

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

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

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

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

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

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

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

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

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

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

  1. ^ Уэскотт, Боб (2013). Книга о производительности каждого компьютера, глава 6: Нагрузочное тестирование. CreateSpace. ISBN  978-1482657753.
  2. ^ Platz, Вольфганг. «Будущее нагрузочного тестирования - за BLU». InfoWorld. Получено 2018-11-23.
  3. ^ «Мы все теперь тестировщики нагрузки (возможно) - DevOps.com». DevOps.com. 2018-02-08. Получено 2018-11-23.
  4. ^ «Как выполнить нагрузочное тестирование в реальных браузерах с использованием элемента Flood?». geekflare.com. 2018-11-17. Получено 2018-11-23.
  5. ^ Эринле, Байо (2014). Поваренная книга JMeter. Packt Publishing. ISBN  978-1783988280.
  6. ^ Эринле, Байо (2015). Тестирование производительности с JMeter. Packt Publishing. ISBN  978-1784394813.
  7. ^ «Нагрузочное тестирование приложений ASP.NET с помощью Visual Studio 2010». Eggheadcafe.com. Получено 2013-01-13.
  8. ^ Харпер, Дэвид; Девин Мартин, Гарольд Миллер, Роберт Гримли и Фредерик Грейнер (2003), Конструкция сверхмощной газовой турбины 6С, ASME Turbo Expo 2003, совмещенный с Международной объединенной конференцией по производству электроэнергии 2003 года, Том 2: Turbo Expo 2003, Атланта, Джорджия: ASME 1., стр. 833–841, ISBN  978-0-7918-3685-9, получено 2013-07-14CS1 maint: несколько имен: список авторов (ссылка на сайт)
  9. ^ Рейнс, Ричард; Гарнье, Жак (2004), 23-я Международная конференция по морской механике и арктической инженерии, Том 1, Части a и B, 23-я Международная конференция по морской механике и арктической инженерии, 1, Ванкувер, Британская Колумбия: ASME, стр. 621–631, Дои:10.1115 / OMAE2004-51343, ISBN  978-0-7918-3743-6, получено 2013-07-14
  10. ^ ОПРЕДЕЛЕНИЕ НАГРУЗКИ И ЭФФЕКТИВНОСТИ ЭЛЕКТРОДВИГАТЕЛЯ (PDF), DOE / GO-10097-517, Министерство энергетики США, 2010 г., ISBN  978-0-9709500-6-2, получено 2013-07-14

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