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