[highlight dark=”no”]Нагрузочное тестирование[/highlight] – составляющая деталь комплексного тестирования производительности, которая анализирует, насколько быстро система реагирует на внешние запросы.
[highlight dark=”no”]Основная задача данного вида тестирования[/highlight] – проверить, совпадает ли программа (устройство) с требованиями, которые были заявлены заказчиком.
Чаще всего, этот инструмент применяется в процессе профессионального тестирования продукта, когда нужно понять, каковой будет реакция приложения на его одновременное применение несколькими пользователями.
В основном, нагрузочное тестирование используется для проверки многопользовательских продуктов и различных общих систем, но это не значит, что другие типы программных ресурсов тестировать по данной методике нельзя.
К примеру, можно протестировать способность фоторедактора открыть изображение большого размера.
Кроме того, можно узнать, сможет ли система создать отчет по финансам, с помощью анализа информации, полученной в ближайшие месяцы или даже годы. Если нагрузочный тест провести качественно, то полученные результаты будут максимально достоверными.
[highlight dark=”no”]Базовая идея нагрузочного тестирования[/highlight] – создание определенной силы нагрузки через определенные аппаратные и программные обеспечения, с целью изучить индекс производительности приложения (устройства).
Наиболее эффективной данная методика будет на начальных этапах разработки, поскольку поможет получить оптимально возможные результаты показателей производительности продукта.
Принципы нагрузочных тестов
- Временной эквивалент реакции системы. Если руководить определенным числом измерений, можно отследить, в какой промежуток времени попадет тот или иной запрос;
- Оригинальность запросов. В процессе написания сценария нужно учитывать настоящие данные статистики, предполагаемое поведение системы, требования;
- Корректное воспроизведение нагрузочных профилей. Чтобы создать качественное ПО, нужно потратить много времени и ресурсов на его проект, разработку и дальнейшую поддержку. Поэтому программирование тестов и покрытие функций системы необходимо держать на балансе. Только так можно получить нужные результаты в кратчайшие сроки;
- Распределение системы зависит от временной реакции. От количества узлов зависит время отклика системы, поскольку каждый из них повышает величину задержки в процессе сканирования запросов. Это необходимо учитывать при написании требований к продуктивности программы.
Инструменты нагрузочного тестирования
Есть мнение, что для нагрузочных тестов используются такие же средства, как и для автотестов. В чем же, все-таки, состоит главная разбежность? В том, что эта методика работает с помощью инструментов, которые работают только с протоколами системы, когда автоматизированное тестирование применяется на уровне интерфейса посетителя.
Ознакомимся с их отличиями на примере: есть браузер, который переходит по ссылке после того, как нажата клавиша.
Чтобы использовать автотесты, необходимо создать такой сценарий, при котором он будет отправлять браузеру щелчки мыши. Для активации нагрузочного тестирования, нужно отправить ссылку от браузера к ранее определенному количеству посетителей, с оригинальным логином и паролем.
В нагрузочном тестировании используют множество как бесплатных, так и коммерческих инструментов. Рассмотрим наиболее распространенные из них.
Gatling
Мощнейший инструмент для нагрузочного тестирования, в котором применяется язык Scalа. Приложение состоит из двух файлов: один пишет тестовые сценарии, второй – выполняет их.
Плюсы Gatling:
- Легкая отладка тестовых кейсов;
- Умение гибко взаимодействовать с различными браузерами и ОС;
- Простой поиск багов на начальном этапе программирования;
- Подача отчетов в графических таблицах;
- Хорошо взаимодействует с Jenkins и, с помощью соответствующих плагинов, тестирует через Gradle и Maven.
Минусы:
- Лишен возможности делить нагрузку между устройствами;
- Нет горизонтального масштабирования;
- Внесение изменений в API может спровоцировать проблемы в активации тест-кейсов ранее созданных версий.
Пример Gatling в нагрузочном тестировании. Самым легким вариантом активации тестирования считается bundle. Необходимо переместить файл в gatling-charts-highcharts-bundle-2.3.0\user-files\simulations\ и запустить gatling-charts-highcharts-bundle-2.3.0\bin\gatling.bat.
После этого высветится сообщение с предложением выбора скрипта.
Apache JMeter
Данный инструмент является одним из наиболее распространенных бесплатных сервисов для тестов нагрузки, функционала и даже программирования ПО. А благодаря поддержке дополнений других программистов, помогает активировать новый функционал.
Плюсы Apache JMeter:
- Визуализация результатов выполненных работ;
- Сервис является полностью бесплатным для любого посетителя;
- Есть возможность записывать все действия, происходящие в браузере;
- Поддержка HTTP, SOAP, LDAP, JDBC, JMS, и FTP;
- Активируется в разных браузерах, поскольку принадлежит к Java продуктам;
- Можно писать свои тест-кейсы;
- Интегрируется с Selenium и Bean Shell для выполнения авто-тестов;
- Логически простой интерфейс;
- Легкий запуск и установка.
Минусы:
- Не поддерживается функция записи HTTPS-связи;
- В процессе написания отчетов отсутствуют расширенные возможности;
- Не перехватывается AJAX.
Пример Apache JMeter. Написан Get запрос на Google.
Прежде чем открывать приложение (выберите Run =>Start), следует загрузить jmx-файл.
Для анализа пользы испытания, важно брать во внимание две характеристики: Throughput (пропускная способность) и Deviation (отклонение). Throughput – это некая способность веб-сервера обрабатывать сложную нагрузку.
Качество производительности сервера напрямую зависит от пропускной способности: чем она выше, тем производительность лучше.
The Grinder
Не менее достойное приложение для тестирования нагрузок, базирующиеся на Java. Скрипты пишутся на специально разработанном языке Jython (такое соединение Java и Python).
The Grinder – мощная программа с возможностью записи сценариев.
Плюсы The Grinder:
- Прямая связь с Java;
- Работает на всех серверах, где запускается Java;
- Легкие настройки характеристик;
- Гибкое выполнение сторонник библиотек;
- Поддерживает практически все протоколы;
- Разработка тест-кейсов выполняется быстро и легко;
- Можно создавать личные плагины для интерфейса.
Минусы:
- Консоль не регулирует уровень нагрузок;
- При скачивании файлов больших размеров возможны ошибки;
- Для работаты с данным приложением необходимо владеть Jython или Clojure;
- Нет возможности выполнять расширенный анализ.
Вывод
Выше описан самый распространенный бесплатный инструментарий для тестирования нагрузок. Таких надежных программ, которые являются неотъемлемыми компонентами в работе тестировщиков и разработчиков, много. Например, [highlight dark=”no”]Locust, Apache Bench, Taurus.[/highlight]
Если говорить о платных приложениях, это [highlight dark=”no”]Webload, LoadRunner, Blazemeter[/highlight] и многие другие. Важно понимать, что выбирать инструмент нужно исходя из его плюсов и минусов. Всегда нужно учитывать собственные умения, навыки. Также, не стоит забывать о специфичности особенностей и сложности тестирования и программирования.
0 Comments