Нагрузочное тестирование - это процесс предъявления требований к программной системе и измерения ее отклика.
Нагрузочное тестирование программного обеспечения [ править ]
Термин « нагрузочное тестирование» используется по-разному в профессиональном сообществе тестирования программного обеспечения . Под нагрузочным тестированием обычно понимается практика моделирования ожидаемого использования программы путем моделирования одновременного доступа к программе нескольких пользователей. [1]Таким образом, это тестирование наиболее актуально для многопользовательских систем; часто построенный с использованием модели клиент / сервер, такой как веб-серверы. Однако другие типы программных систем также могут быть протестированы под нагрузкой. Например, текстовый процессор или графический редактор может быть вынужден прочитать очень большой документ; или финансовый пакет может быть вынужден создать отчет на основе данных за несколько лет. Наиболее точное нагрузочное тестирование имитирует фактическое использование, в отличие от тестирования с использованием теоретического или аналитического моделирования.
Нагрузочное тестирование позволяет измерить качество обслуживания вашего сайта.(QOS) производительность на основе реального поведения клиентов. Почти все инструменты нагрузочного тестирования и фреймворки следуют классической парадигме нагрузочного тестирования: когда клиенты посещают ваш веб-сайт, регистратор сценариев записывает общение, а затем создает соответствующие сценарии взаимодействия. Генератор нагрузки пытается воспроизвести записанные сценарии, которые, возможно, могут быть изменены с другими параметрами теста перед воспроизведением. В процедуре воспроизведения, как аппаратная, так и программная статистика будет отслеживаться и собираться проводником, эта статистика включает ЦП, память, дисковый ввод-вывод физических серверов, а также время отклика, пропускную способность тестируемой системы (SUT) и т. Д. И, наконец, вся эта статистика будет проанализирована и будет сформирован отчет о нагрузочном тестировании.
Тестирование нагрузки и производительности анализирует программное обеспечение, предназначенное для многопользовательской аудитории, подвергая программное обеспечение разному количеству виртуальных и живых пользователей, одновременно отслеживая измерения производительности при этих различных нагрузках. Тестирование нагрузки и производительности обычно проводится в тестовой среде, идентичной производственной, прежде чем программная система будет запущена.
Например, требуется, чтобы веб-сайт с функцией корзины покупок поддерживал 100 одновременных пользователей, выполняющих следующие действия:
- 25 виртуальных пользователей (VUsers) входят в систему, просматривают элементы и затем выходят из системы
- 25 пользователей входят в систему, добавляют товары в корзину, оформляют заказ и затем выходят из системы.
- 25 пользователей входят в систему, возвращают ранее приобретенные товары и выходят из системы.
- 25 VUsers просто входят в систему без каких-либо последующих действий
Аналитик тестирования может использовать различные инструменты нагрузочного тестирования для создания этих VUsers и их действий. После запуска теста и достижения устойчивого состояния приложение тестируется при нагрузке 100 VUser, как описано выше. Затем можно отслеживать и фиксировать производительность приложения.
Особенности плана или сценария нагрузочного тестирования обычно различаются в разных организациях. Например, в маркированном списке выше первый элемент может представлять 25 виртуальных пользователей, просматривающих уникальные элементы, случайные элементы или выбранный набор элементов в зависимости от плана тестирования или разработанного сценария. Однако все планы нагрузочного тестирования пытаются моделировать производительность системы в диапазоне ожидаемых пиковых рабочих процессов и объемов. Критерии прохождения или невыполнения нагрузочного теста (критерии «прошел / не прошел») также обычно различаются в разных организациях. Не существует стандартов, определяющих приемлемые показатели производительности нагрузочного тестирования.
Распространенное заблуждение состоит в том, что программное обеспечение для нагрузочного тестирования предоставляет возможности записи и воспроизведения, как инструменты регрессионного тестирования . Инструменты нагрузочного тестирования анализируют весь стек протоколов OSI, тогда как большинство инструментов регрессионного тестирования сосредоточены на производительности графического интерфейса . Например, инструмент регрессионного тестирования будет записывать и воспроизводить щелчок мышью по кнопке в веб-браузере, но инструмент нагрузочного тестирования отправляет гипертекст, который веб-браузер отправляет после того, как пользователь нажимает кнопку. В многопользовательской среде инструменты нагрузочного тестирования могут отправлять гипертекст для нескольких пользователей, причем каждый пользователь имеет уникальный идентификатор входа, пароль и т. Д.
Доступные популярные инструменты нагрузочного тестирования также позволяют понять причины низкой производительности. Существует множество возможных причин низкой производительности системы, в том числе следующие:
- Сервер (ы) приложений или программное обеспечение
- Сервер (ы) базы данных
- Сеть - задержка , перегрузка и т. Д.
- Обработка на стороне клиента
- Балансировка нагрузки между несколькими серверами
Нагрузочное тестирование особенно важно, если приложение, система или служба подпадают под действие соглашения об уровне обслуживания или SLA.
Нагрузочное тестирование выполняется для определения поведения системы как при нормальной, так и при ожидаемой пиковой нагрузке. Это помогает определить максимальную работоспособность приложения, а также любые узкие места и определить, какой элемент вызывает ухудшение работы. Когда нагрузка, возлагаемая на систему, превышает нормальные шаблоны использования, чтобы проверить реакцию системы на необычно высокие или пиковые нагрузки, это называется стресс-тестированием . Нагрузка обычно настолько велика, что ожидаемым результатом являются условия ошибки, но нет четкой границы, когда действие перестает быть нагрузочным тестом и становится стресс-тестом.
Термин «нагрузочное тестирование» часто используются в качестве синонима тестирования параллелизма , тестирование производительности программного обеспечения , тестирование надежности и объемов тестирования для конкретных сценариев. Все это типы нефункционального тестирования , которые не являются частью функционального тестирования, используемого для проверки пригодности для использования того или иного программного обеспечения.
Пользовательский опыт при нагрузочном тесте [ править ]
В приведенном выше примере, когда тестируемое устройство (DUT) находится под производственной нагрузкой - 100 VUsers, запустите целевое приложение. Производительностью целевого приложения здесь будет пользовательский опыт под нагрузкой. Он описывает, насколько быстро или медленно тестируемое устройство отвечает, и насколько удовлетворен или как пользователь на самом деле воспринимает производительность.
Пользователи на уровне браузера и на уровне протокола [ править ]
Исторически сложилось так, что все нагрузочное тестирование выполнялось с помощью автоматических тестов API, которые моделировали трафик посредством одновременных взаимодействий на уровне протокола (часто называемых пользователями уровня протокола или PLU). С развитием контейнеров и облачной инфраструктуры появилась возможность тестирования с использованием реальных браузеров (часто называемых пользователями уровня браузера или BLU). [2] Каждый подход имеет свои достоинства для разных типов приложений, но обычно пользователи уровня браузера будут больше похожи на реальный трафик, который будет испытывать веб-сайт, и обеспечат более реалистичный профиль нагрузки и измерение времени отклика. [3]BLU, безусловно, являются более дорогим способом запуска тестов и не могут работать со всеми типами приложений, особенно с теми, которые недоступны через веб-браузер, например, настольный клиент или приложение на основе API. [4]
Инструменты нагрузочного тестирования [ править ]
Название инструмента | Название компании | Лицензия | Тип | Ценообразование | Фокус | Примечания |
---|---|---|---|---|---|---|
Apache JMeter | Проект с открытым исходным кодом Apache Jakarta | Лицензия Apache 2.0 | Местный | Свободный | Настольное приложение Java для нагрузочного тестирования и измерения производительности. | |
BlazeMeter | BlazeMeter Ltd. | Проприетарный | Облачный | Доступен бесплатный план | Веб-сайт, веб-приложение, мобильный телефон, база данных и другие сценарии | Масштабируемая нагрузка до 200 000 одновременных смоделированных пользователей браузера из восьми географических регионов. Также может использоваться для интеграции и функционального тестирования. |
Блиц | Spirent Communications | Проприетарный | Облачный | Доступна пробная версия | Веб-сайты, мобильные и REST API | Это позволяет моделировать до 50 000 одновременных виртуальных пользователей из разных мест по всему миру. |
Наводнение | Tricentis Corp. | Проприетарный | Облачный | Уровень бесплатного использования, уровни платного использования | Нагрузочное тестирование на основе браузера, API и приложения на основе протокола | Масштабируемая нагрузка до миллионов одновременных пользователей из всех географических регионов, доступных на AWS и Azure, а также локальные развертывания. Цены основаны на количестве виртуальных часов пользователя, потраченных каждый месяц. [5] [6] |
Гатлинг | Открытый исходный код | Лицензия 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 включает инструмент нагрузочного тестирования, который позволяет разработчику выполнять различные тесты (веб-тесты, модульные тесты и т. Д.) С комбинацией конфигураций для имитации реальной пользовательской нагрузки. [7] Microsoft объявила [ когда? ], что его функциональность веб-производительности и нагрузочного тестирования устарела после Visual Studio 2019. | |
WebLOAD | RadView | Проприетарный | Облачный или локальный | Доступен бесплатный план | Веб и мобильные приложения и API | Инструмент нагрузочного тестирования для веб-приложений и мобильных приложений, включая Web Dashboard для анализа тестов производительности. Используется для крупномасштабных нагрузок, которые могут быть созданы также из облака. Лицензировано. |
Тестирование физической нагрузки [ править ]
Многие типы машин, двигателей, [8] конструкций, [9] и двигателей [10] проходят испытания под нагрузкой. Нагрузка может быть при установленной безопасной рабочей нагрузке (SWL), при полной нагрузке или при повышенном уровне нагрузки. Управляющий контракт, техническая спецификация или метод тестирования содержат подробные сведения о проведении теста. Целью испытания на механическую нагрузку является проверка того, что все составные части конструкции, включая материалы, крепления основания, пригодны для выполнения задачи и нагрузки, на которую она рассчитана.
Используются несколько видов нагрузочного тестирования.
- Статическое испытание - это когда заданная постоянная нагрузка применяется в течение определенного времени.
- Динамическое тестирование - это когда применяется переменная или движущаяся нагрузка.
- Циклическое испытание состоит из повторяющихся нагрузок и разгрузок в течение определенных циклов, продолжительности и условий.
В Постановлении о поставках оборудования (безопасность) 1992 г., Великобритания, говорится, что испытание под нагрузкой проводится перед первым вводом оборудования в эксплуатацию. Тестирование производительности применяет безопасную рабочую нагрузку (SWL) или другую заданную нагрузку в течение определенного времени в управляющем методе тестирования, спецификации или контракте. В соответствии с Положениями о подъемных операциях и подъемном оборудовании 1998 года, испытание под нагрузкой в Великобритании после первоначального испытания требуется, если основной компонент заменяется, если элемент перемещается из одного места в другое или по указанию компетентного лица.
Система зарядки автомобиля [ править ]
Нагрузочный тест можно использовать для оценки состояния аккумуляторной батареи автомобиля . Тестер состоит из большого резистора, сопротивление которого аналогично сопротивлению стартера автомобиля, и измерителя для считывания выходного напряжения аккумулятора как в ненагруженном, так и в нагруженном состоянии. При использовании тестера в первую очередь проверяется напряжение холостого хода аккумулятора. Если напряжение холостого хода ниже нормативного (12,6 В для полностью заряженного аккумулятора), аккумулятор заряжается в первую очередь. После считывания напряжения холостого хода аккумуляторной батареи включается нагрузка. При использовании он потребляет примерно такой же ток, как стартер автомобиля при запуске. Исходя из указанных значений ампер холодного пускабатареи, если напряжение под нагрузкой падает ниже определенной точки, батарея неисправна. Нагрузочные испытания также используются на движущихся автомобилях для проверки выходной мощности генератора автомобиля .
См. Также [ править ]
- Тестирование на выдержку
- Стресс-тестирование
- Системное тестирование
- Веб-тестирование
- Тестирование веб-сервера
Ссылки [ править ]
- ^ Уэскотт, Боб (2013). Книга о производительности каждого компьютера, глава 6: Нагрузочное тестирование . CreateSpace . ISBN 978-1482657753.
- ^ Платц, Вольфганг. «Будущее нагрузочного тестирования - за BLU» . InfoWorld . Проверено 23 ноября 2018 .
- ^ «Мы все теперь тестировщики нагрузки (возможно) - DevOps.com» . DevOps.com . 2018-02-08 . Проверено 23 ноября 2018 .
- ^ "Как выполнить нагрузочное тестирование в реальных браузерах с использованием элемента Flood?" . geekflare.com . 2018-11-17 . Проверено 23 ноября 2018 .
- ^ Erinle, Байо (2014). Поваренная книга JMeter . Packt Publishing. ISBN 978-1783988280.
- ^ Erinle, Байо (2015). Тестирование производительности с помощью JMeter . Packt Publishing. ISBN 978-1784394813.
- ^ «Нагрузочное тестирование приложений ASP.NET с помощью Visual Studio 2010» . Eggheadcafe.com . Проверено 13 января 2013 .
- ^ Харпер, Дэвид; Девин Мартин, Гарольд Миллер, Роберт Гримли и Фредерик Грейнер (2003 г.), Проект сверхмощной газовой турбины 6C , ASME Turbo Expo 2003, совмещенный с Международной конференцией по производству электроэнергии 2003 г., Том 2: Turbo Expo 2003, Атланта, Джорджия: ASME 1., стр. 833–841, ISBN 978-0-7918-3685-9, дата обращения 14.07.2013CS1 maint: несколько имен: список авторов ( ссылка )
- ^ Рейнс, Ричард; Гарнье, Жак (2004), 23-я Международная конференция по морской механике и арктической инженерии, Том 1, части a и B , 23-я Международная конференция по морской механике и арктической инженерии, 1 , Ванкувер, Британская Колумбия: ASME, стр. 621–631, doi : 10.1115 / OMAE2004-51343 , ISBN 978-0-7918-3743-6, дата обращения 14.07.2013
- ^ ОПРЕДЕЛЕНИЕ НАГРУЗКИ И ЭФФЕКТИВНОСТИ ЭЛЕКТРИЧЕСКОГО ДВИГАТЕЛЯ (PDF) , DOE / GO-10097-517, Министерство энергетики США, 2010, ISBN 978-0-9709500-6-2, дата обращения 14.07.2013
Внешние ссылки [ править ]
- Моделирование реального мира для веб-сайтов нагрузочного тестирования , Стивен Сплейн
- Что такое нагрузочное тестирование? Том Хьюстон
- 4 типа нагрузочного тестирования и когда каждый должен использоваться Дэвид Бух
- Тест производительности, нагрузки, стресса или выносливости? Какой ты хочешь? Крис Джонс