Нагрузочное тестирование программного обеспечения
Термин нагрузочное тестирование [1] или стресс-тестирование по-разному используется в профессиональном сообществе тестировщиков программного обеспечения . Нагрузочное тестирование обычно относится к практике моделирования ожидаемого использования программы путем моделирования одновременного доступа к программе нескольких пользователей. [2] Таким образом, это тестирование наиболее актуально для многопользовательских систем; часто создается с использованием модели клиент/сервер, например веб-серверов. Однако другие типы программных систем также можно протестировать под нагрузкой. Например, текстовый процессор или графический редактор можно заставить прочитать очень большой документ; или финансовый пакет можно заставить составить отчет на основе данных за несколько лет. Наиболее точное нагрузочное тестирование имитирует фактическое использование, а не тестирование с использованием теоретического или аналитического моделирования.
Нагрузочное тестирование позволяет измерить качество обслуживания (QOS) вашего веб-сайта на основе фактического поведения клиентов. Почти все инструменты и платформы нагрузочного тестирования следуют классической парадигме нагрузочного тестирования: когда клиенты посещают ваш веб-сайт, устройство записи сценариев записывает общение, а затем создает соответствующие сценарии взаимодействия. Генератор нагрузки пытается воспроизвести записанные сценарии, которые перед воспроизведением могут быть изменены с использованием других параметров тестирования. В процедуре воспроизведения статистика как оборудования, так и программного обеспечения будет отслеживаться и собираться проводником, эта статистика включает в себя процессор, память, дисковый ввод-вывод физических серверов и время отклика, пропускную способность тестируемой системы (SUT), и т. д. И наконец, вся эта статистика будет проанализирована и сформирован отчет о нагрузочном тестировании.
Нагрузочное тестирование и тестирование производительности анализируют программное обеспечение, предназначенное для многопользовательской аудитории, подвергая программное обеспечение воздействию разного количества виртуальных и реальных пользователей, одновременно отслеживая измерения производительности при этих различных нагрузках. Нагрузочное тестирование и тестирование производительности обычно проводятся в тестовой среде, идентичной производственной среде, прежде чем программная система будет запущена в эксплуатацию.
Цели нагрузочного тестирования: - Обеспечить соответствие системы критериям производительности; - Определить точку отказа системы; - Проверить, как продукт реагирует на простои, вызванные нагрузкой.
Например, веб-сайт с возможностью корзины покупок должен поддерживать 100 одновременных пользователей, разбитых на следующие действия:
- 25 виртуальных пользователей (VUsers) входят в систему, просматривают элементы и затем выходят из системы.
- 25 пользователей VUser входят в систему, добавляют товары в корзину, оформляют заказ и затем выходят из системы.
- 25 пользователей VUser входят в систему, возвращают ранее купленные предметы и затем выходят из системы.
- 25 пользователей VUser просто входят в систему без каких-либо последующих действий.
Аналитик тестирования может использовать различные инструменты нагрузочного тестирования для создания этих пользователей VUser и их действий. После запуска теста и достижения устойчивого состояния приложение тестируется при загрузке 100 пользователей VUser, как описано выше. Затем можно отслеживать и фиксировать производительность приложения.
Особенности нагрузочного тестирования плана или сценария обычно различаются в разных организациях. Например, в приведенном выше маркированном списке первый элемент может представлять 25 пользователей VUsers, просматривающих уникальные элементы, случайные элементы или выбранный набор элементов в зависимости от разработанного плана тестирования или сценария. Однако все планы нагрузочного тестирования пытаются смоделировать производительность системы в диапазоне ожидаемых пиковых рабочих процессов и объемов. Критерии прохождения или провала нагрузочного теста (критерии «пройден/не пройден») также обычно различаются в разных организациях. Не существует стандартов, определяющих приемлемые показатели производительности нагрузочного тестирования.
Распространенным заблуждением является то, что программное обеспечение для нагрузочного тестирования предоставляет возможности записи и воспроизведения, такие как регрессионного тестирования инструменты . Инструменты нагрузочного тестирования анализируют весь стек протоколов OSI , тогда как большинство инструментов регрессионного тестирования сосредоточены на производительности графического пользовательского интерфейса . Например, инструмент регрессионного тестирования запишет и воспроизведет щелчок мышью по кнопке в веб-браузере, а инструмент нагрузочного тестирования отправит гипертекст, который веб-браузер отправляет после того, как пользователь нажмет кнопку. В многопользовательской среде инструменты нагрузочного тестирования могут отправлять гипертекст нескольким пользователям, при этом каждый пользователь имеет уникальный идентификатор входа, пароль и т. д.
Доступные популярные инструменты нагрузочного тестирования также позволяют понять причины низкой производительности. Существует множество возможных причин снижения производительности системы, включая, помимо прочего, следующие:
- Сервер(ы) приложений или программное обеспечение
- Сервер(ы) базы данных
- Сеть – задержка , перегруженность и т. д.
- Обработка на стороне клиента
- Балансировка нагрузки между несколькими серверами
Нагрузочное тестирование особенно важно, если на приложение, систему или службу будет распространяться соглашение об уровне обслуживания или SLA.
Нагрузочное тестирование проводится для определения поведения системы как в нормальных, так и в ожидаемых условиях пиковой нагрузки. Это помогает определить максимальную рабочую мощность приложения, а также любые узкие места и определить, какой элемент вызывает ухудшение. Когда нагрузка, возлагаемая на систему, превышает нормальные режимы использования для проверки реакции системы на необычно высокие или пиковые нагрузки, это называется стресс-тестированием . Нагрузка обычно настолько велика, что ожидаемым результатом являются состояния ошибок, но не существует четкой границы, когда деятельность перестает быть нагрузочным тестом и становится стресс-тестом.
Термин «нагрузочное тестирование» часто используется как синоним параллельного тестирования , тестирования производительности программного обеспечения , тестирования надежности и объемного тестирования для конкретных сценариев. Все это виды нефункционального тестирования , которые не являются частью тестирования функциональности, используемого для проверки пригодности к использованию того или иного программного обеспечения.
Пользовательский опыт во время нагрузочного теста
[ редактировать ]В приведенном выше примере, пока тестируемое устройство (DUT) находится под производственной нагрузкой — 100 пользователей VUsers, запустите целевое приложение. Производительность целевого приложения в данном случае будет называться «Взаимодействие с пользователем под нагрузкой». Он описывает, насколько быстро или медленно реагирует тестируемое устройство, а также насколько удовлетворен или как пользователь на самом деле воспринимает производительность.
Пользователи на уровне браузера и на уровне протокола
[ редактировать ]Исторически все нагрузочное тестирование выполнялось с помощью автоматизированных тестов API, которые имитировали трафик посредством параллельных взаимодействий на уровне протокола (часто называемого пользователями уровня протокола или PLU). С развитием контейнеров и облачной инфраструктуры теперь появилась возможность тестирования с использованием реальных браузеров (часто называемых пользователями уровня браузера или BLU). [3] Каждый подход имеет свои преимущества для разных типов приложений, но, как правило, пользователи на уровне браузера будут больше соответствовать реальному трафику, который будет испытывать веб-сайт, и обеспечивать более реалистичный профиль нагрузки и измерение времени отклика. [4] BLU, безусловно, являются более дорогим способом проведения тестов и не могут работать со всеми типами приложений, особенно с теми, которые недоступны через веб-браузер, например, настольный клиент или приложение на основе API. [5]
Инструменты нагрузочного тестирования
[ редактировать ]Название инструмента | Название компании | Лицензия | Тип | Цены | Фокус | Примечания |
---|---|---|---|---|---|---|
Апач JMeter | Фонд программного обеспечения Apache | Лицензия Апач 2.0 | Местный | Бесплатно | Настольное приложение Java для нагрузочного тестирования и измерения производительности. | |
BlazeMeter | Перфорс Программное обеспечение, Inc. | Собственный | Облачный | Бесплатная версия, демо, платный план, цену уточняйте у контакта. | Веб-сайт, веб-приложение, мобильное устройство, база данных и другие сценарии. | Масштабируемая загрузка до 200 000 одновременно моделируемых пользователей браузера из восьми географических точек. Также может использоваться для интеграции и функционального тестирования. |
Блиц (снято с производства в 2018 году) | Спирент Коммуникации | Собственный | Облачный | Доступна пробная версия | Веб-сайты, мобильные устройства и REST API | Он позволяет моделировать до 50 000 одновременных виртуальных пользователей из разных мест по всему миру. |
Наводнение | Трисентис APAC Pty Ltd. | Собственный | Облачный | Бесплатный план, платный план, свяжитесь для уточнения цен | Нагрузочное тестирование на основе браузера, API и приложения, управляемые протоколами | Масштабируемая нагрузка до миллионов одновременных пользователей из всех географических регионов, доступных на AWS и Azure, а также локальное развертывание. Цены основаны на количестве виртуальных пользовательских часов, потребляемых каждый месяц. [6] [7] |
Гатлинг | Гатлинг Корп | Лицензия Апач 2.0 | Локальный, облачный | Бесплатная версия, демо, платный план, цену уточняйте у контакта. | Веб-приложения Java | Портативные HTML-отчеты. |
ХаммерДБ | лицензия GPLv3 | Местный | Бесплатно | Базы данных | Инструмент нагрузочного тестирования и сравнительного анализа базы данных. | |
Loader.io | SendGrid , Inc. | Собственный | Облачный | Бесплатный план, платный план, свяжитесь для уточнения цен | Веб-приложения и API | |
LoadRunner | Микро Фокус | Собственный | Локальный, облачный | Бесплатная общественная версия; другое: демо, бесплатная пробная версия, свяжитесь с нами, чтобы узнать цену | В основном используется для одновременного выполнения большого количества тестов (или большого количества виртуальных пользователей). Также может использоваться для модульного и интеграционного тестирования. | |
LoadUI (теперь интегрирован в ReadyAPI) | Программное обеспечение SmartBear | EUPL | Местный | Доступна демоверсия | Инструмент кросс-платформенного нагрузочного тестирования, ориентированный в основном на веб-сервисы. Интегрируется с SoapUI . | |
Саранча | Открытый исходный код | МОЯ лицензия | Локальный, облачный | Бесплатно | Платформа на основе Python с нагрузочными тестами, выраженными в обычном коде. | |
Войти | Войти | Собственный | Местный | Демо, цену уточняйте | Рабочие нагрузки виртуальных рабочих столов Windows | |
НеоЛоад | Неотис | Собственный | Локальный, облачный | Бесплатная пробная версия, демо, свяжитесь для уточнения цен | Интернет и мобильные устройства | Нагрузка может генерироваться от локальных агентов или из облака. |
ОпенСТА | СИРАНО | Стандартная общественная лицензия GNU 2.0 | Местный | Бесплатно | Веб-сервер | Использует распределенную архитектуру программного обеспечения на основе CORBA. Двоичные файлы OpenSTA доступны для Windows. |
Парасофт SOAtest | Парасофт | Собственный | Локальный, облачный | Демо, цену уточняйте | Инструмент тестирования производительности, который проверяет функциональность и производительность под нагрузкой. Поддерживает тесты SOAtest, JUnits, облегченные компоненты на основе сокетов. Обнаруживает проблемы параллелизма. | |
Рациональный тестер производительности | ИБМ | Собственный | Локальный, облачный | Свяжитесь для уточнения цен | Инструмент крупномасштабного тестирования производительности на базе Eclipse, в основном используемый для выполнения больших объемов тестов производительности для измерения времени отклика системы для серверных приложений. | |
Осада | Открытый исходный код | GPLv3 или новее | Местный | Бесплатно | Веб-серверы | Поддерживает базовую аутентификацию, файлы cookie, протоколы HTTP, HTTPS и FTP. |
Шелковый исполнитель | Микро Фокус | Собственный | Локальный, облачный | Бесплатная пробная версия, цену уточняйте по телефону | Инструмент повышения производительности приложений с облачными и локальными виртуальными агентами. Поддерживает большинство протоколов и приложений. Лицензировано. | |
Мыльный интерфейс | Программное обеспечение SmartBear | EUPL версия 1.1 | Местный | Бесплатно | ||
Тестовая студия | Прогресс Телерик | Собственный | Местный | Бесплатная пробная версия, демо, платный план | Оцените, как будет работать веб-сайт, если его одновременно посетит большое количество пользователей. | |
Цунг | Открытый исходный код | GPL-2.0 | Местный | Бесплатно | Веб-серверы, Базы данных, XMPP | Его можно использовать для нагрузки на серверы HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT и Jabber/XMPP. |
Выпуск Visual Studio Enterprise (устарело после Visual Studio 2019) | Майкрософт | Собственный | Местный | Платный план | Версия Visual Studio Enterprise включает инструмент нагрузочного тестирования, который позволяет разработчику выполнять различные тесты (веб-, модульные и т. д.) с комбинацией конфигураций для имитации реальной пользовательской нагрузки. [8] Microsoft объявила [ когда? ] что его функции веб-производительности и нагрузочного тестирования устарели после Visual Studio 2019. | |
Вегета | МОЯ лицензия | Местный | Бесплатно | HTTP-приложения | ||
ВебЗАГРУЗКА | ООО "РадВью Софтвер" | Собственный | Локальный, облачный | Бесплатная пробная версия, демо, свяжитесь для уточнения цен | Веб- и мобильные приложения и API | Инструмент нагрузочного тестирования для веб- и мобильных приложений, включая веб-панель для анализа тестов производительности. Используется для крупномасштабных нагрузок, которые также могут генерироваться из облака. Лицензировано. |
Ссылки
[ редактировать ]- ^ Цзян, Чжэнь Мин; Хасан, Ахмед Э. (2015). «Обзор по нагрузочному тестированию крупномасштабных программных систем» . Транзакции IEEE по разработке программного обеспечения . 41 (11). ИИЭР: 1091–1118.
- ^ Уэскотт, Боб (2013). Книга о производительности каждого компьютера, Глава 6: Нагрузочное тестирование . Создать пространство . ISBN 978-1482657753 .
- ^ Платц, Вольфганг. «Будущее нагрузочного тестирования — за BLU» . Инфомир . Проверено 23 ноября 2018 г.
- ^ «Теперь мы все нагрузочные тестеры (возможно) — DevOps.com» . DevOps.com . 08 февраля 2018 г. Проверено 23 ноября 2018 г.
- ^ «Как провести нагрузочное тестирование реальных браузеров с использованием элемента Flood?» . geekflare.com . 17.11.2018 . Проверено 23 ноября 2018 г.
- ^ Эринле, Байо (2014). Поваренная книга JMeter . Издательство пакетов. ISBN 978-1783988280 .
- ^ Эринле, Байо (2015). Тестирование производительности с помощью JMeter . Пакт Паблишинг. ISBN 978-1784394813 .
- ^ «Нагрузочное тестирование приложений ASP.NET с помощью Visual Studio 2010» . Eggheadcafe.com . Проверено 13 января 2013 г.