Тестирование производительности веб-приложений: основные приемы генерации нагрузки и мониторинга

Performance testing of Web applications: the basic techniques of load generation and monitoring Shajhutdinova A.

Тестирование производительности веб-приложений: основные приемы генерации нагрузки и мониторинга Шайхутдинова А. Ф.

Шайхутдинова Алина Фирдусовна / Shajhutdinova Alina - студент, кафедра «Информационные технологии в бизнесе», факультет экономики, менеджмента и бизнес-информатики,

Национальный исследовательский университет «Высшая школа экономики», г. Пермь

Аннотация: в статье рассматриваются основополагающие вопросы, связанные с темой тестирования производительности, а именно: цели проведения тестирования производительности, разновидности тестирования производительности, виды работ на каждом из этапов процесса тестирования производительности. Также проводится анализ инструмента для генерации нагрузки и мониторинга. Abstract: the article describes the basic questions related to the topic of performance testing, namely the purpose of the performance testing, types ofperformance testing, types of work at each stage ofperformance testing. A tool for performance testing is offered, which allows generating the load and implementing the load monitoring.

Ключевые слова: тестирование производительности, инструменты генерации нагрузки и мониторинга. Keywords: performance testing, tools for load generation and load monitoring.

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

Определение понятия «Тестирование производительности»

Тестирование производительности - вид тестирования, предназначенный для определения отзывчивости, пропускной способности, надежности и масштабируемости системы при данном уровне нагрузки [3]. Объектом ТП является производительность приложения при определенных условиях. Под условиями понимается работа заданного количества пользователей на каком-либо общем (или разделяемом ими) ресурсе, их действия в системе, длительность работы системы в целом и т. д.

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

Для того чтобы оценить важность проведения тестирования производительности, уместно рассмотреть цели данного вида тестирования. Далее будут перечислены основные цели и задачи проведения тестирования производительности приложений [1].

1. Оценить готовность разрабатываемого программного продукта к функционированию в рабочей среде.

2. Проверить соответствие критериев эффективности.

3. Сравнить две или несколько платформ с одним и тем же программным обеспечением.

4. Подобрать аппаратную конфигурацию.

5. Найти узкие места системы.

6. Выяснить, что именно в приложении выполняется некорректно и при каких условиях.

Порядок проведения тестирования производительности

Процесс тестирования производительности будет давать положительные результаты при поэтапном выполнении следующих действий [1]:

1. Выделение тестовой среды.

В целях успешного тестирования производительности тестовая среда должна представлять собой точную копию производственной инфраструктуры. Разработка чёткой тестовой инфраструктуры, аналогичной производственной, является важным шагом к успешности проводимых испытаний.

2. Определение критериев эффективности производительности.

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

3. Планирование и проектирование теста.

Планирование и проектирование тестов производительности заключается в определении ключевых тестовых сценариев. Тестовые сценарии разрабатываются, исходя из их значимости, частоте и влиянию на производительность.

4. Настройка тестовой инфраструктуры.

После определения всех требований к тесту производительности наступает этап реализации. На данном этапе разрабатывается тестовая инфраструктура (тестовая среда).

5. Реализация тестового проекта.

После настройки тестовой среды происходит запись разработанных сценариев с помощью утилиты тестирования производительности, имитация всех действий пользователей и создание контрольных примеров.

6. Выполнение теста.

Данный этап включает в себя выполнение тестового скрипта при различной пользовательской нагрузке и с различными конфигурациями системных ресурсов. Осуществляется наблюдение за результатами теста в целях обнаружения основных тенденций.

7. Анализ результатов и отчетов и повторное тестирование.

На завершающем этапе, после выполнения тестов и анализа результатов выполняется анализ результатов тестов, документация тестов, повторные тестирования приложения с новыми настройками.

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

Исходя из того, как ставится цель тестирования производительности, или же на какой бизнес-вопрос должен ответить тот или иной проводимый тест, выделяются следующие виды тестирования производительности [4]:

1. Нагрузочное тестирование.

Основной целью проведения нагрузочного тестирования является выявление поведения приложения при различных уровнях нагрузки и при различных сценариях использования.

Главный параметр: время отклика.

Вопрос, на который необходимо ответить с помощью нагрузочного тестирования:

• Насколько корректно функционирует приложение в условиях нормальной нагрузки?

2. Стресс-тестирование.

Основной целью проведения стресс-тестирования является выявление поведения приложения при превышении стандартной нагрузки.

Главные параметры: время отклика и пропускная способность.

Вопрос, на который даст ответ стресс-тестирование:

• Сможет ли система прийти в нормальное состояние после превышения стандартной нагрузки?

3. Тестирование стабильности.

Основной целью тестирования стабильности работы приложения является проверка отказоустойчивости системы при нормальной нагрузке в условиях длительной непрерывной работы (в том числе в режиме работы 24/7).

Главный параметр: память.

Вопросы, на которые даст ответ тестирование стабильности:

• Есть ли утечки памяти?

• Будет ли приложение адекватно работать с течением времени?

4. Тестирование масштабируемости.

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

Вопрос, на который даст ответ тестирование масштабируемости:

• В состоянии ли будет система повышать уровень производительности при добавлении ресурсов?

Генерация нагрузки и мониторинг

На сегодняшний день существует множество как бесплатных, так и платных инструментов для проведения тестирования производительности. По структуре все инструменты в принципе своем одинаковы и состоят из следующих компонент [2]:

1. Recorder - записывает действия, выполняемые пользователями в соответствии с тестовыми сценариями и превращает их в программный код;

2. Code IDE - среда разработки;

3. Generator - механизм для создания виртуальных пользователей, выполняющих описанные тестовые сценарии;

4. Analyzer - анализатор показателей - результатов теста.

Остановимся на наиболее часто используемом инструменте тестирования производительности и расскажем об его основных возможностях.

ApacheJmeter. Данный инструмент ТП является бесплатным, что является его достоинством и причиной популярности. Первоначально был разработан для тестирования веб-приложений, но на сегодняшний день распространен более широко [5].

Основные возможности:

• Может быть использован для имитации большой нагрузки на сервер, группы серверов или сети при различных видах нагрузки.

• Мощный анализатор.

• Визуализация результатов в GUI.

Плюсы:

• Кроссплатформенный, т. к написан на Java.

• Очень гибкий, используется много протоколов, не только веб-сервер, но и базы.

• Инструмент обладает хорошей технической поддержкой со стороны разработчика.

Минусы:

• Ресурсоемкий.

• Стабильная работа зависит от окружения и конфигурации сервера.

• Недружелюбный интерфейс.

Данный инструмент подойдет для решения не самых больших и несложных задач при скромном бюджете.

Заключение.

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

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

Литература

1. [Электронный ресурс]. Режим доступа: http://www.protesting.ru/automation/performance.html -Нагрузочное тестирование (дата обращения 27.08.2015).

2. [Электронный ресурс]. Режим доступа: http: //natalia-savastiuk.blogspot.ru/2011/05/blog-post.html?m=l -Test Everything (дата обращения 27.08.2015).

3. [Электронный ресурс]. Режим доступа:

https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2% D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE %D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8 - Википедия: Тестирование производительности (дата обращения 27.08.2015).

4. [Электронный ресурс]. Режим доступа: https://msdn.microsoft.com/en-us/library/bb924375.aspx -Performance Testing Guidance for Web Applications (дата обращения 27.08.2015).

5. [Электронный ресурс]. Режим доступа: http://www.protesting.ru/automation/load/loadtesttools.html -Инструменты для нагрузочного тестирования (дата обращения 27.08.2015).