Тестирование производительности веб-приложений: основные приемы генерации нагрузки и мониторинга Шайхутдинова А. Ф. (Российская Федерация)
Авторы:А.Ф. Шайхутдинова
Источник:Шайхутдинова Алина Фирдусовна. "Тестирование производительности веб-приложений: основные приемы генерации нагрузки и мониторинга" European science, no. 6 (7), 2015, pp. 5-8.
Аннотация
В статье рассматриваются основополагающие вопросы, связанные с темой тестирования производительности, а именно: цели проведения тестирования производительности, разновидности тестирования производительности, виды работ на каждом из этапов процесса тестирования производительности. Также проводится анализ инструмента для генерации нагрузки и мониторинга.
Введение
В эру быстро развивающихся информационных технологий производительность играет ключевую роль при разработке программного обеспечения. Разработчики не имеют права допускать ошибки, связанные с плохой производительностью, которые в дальнейшем могут послужить причиной отказа клиентов от использования данной разработки. В связи с этим, проведение качественного тестирования производительности должно быть обязательным для обеспечения безотказной работы всех приложений, в том числе и веб-приложений.
Определение понятия «Тестирование производительности»
Тестирование производительности - вид тестирования, предназначенный для определения отзывчивости, пропускной способности, надежности и масштабируемости системы при данном уровне нагрузки [3]. Объектом ТП является производительность приложения при определенных условиях. Под условиями понимается работа заданного количества пользователей на каком-либо общем (или разделяемом ими) ресурсе, их действия в системе, длительность работы системы в целом и т. д.
Цели тестирования производительности
Для того чтобы оценить важность проведения тестирования производительности, уместно рассмотреть цели данного вида тестирования. Далее будут перечислены основные цели и задачи проведения тестирования производительности приложений [1].
- Оценить готовность разрабатываемого программного продукта к функционированию в рабочей среде.
- Проверить соответствие критериев эффективности.
- Сравнить две или несколько платформ с одним и тем же программным обеспечением.
- Подобрать аппаратную конфигурацию.
- Найти узкие места системы.
- Выяснить, что именно в приложении выполняется некорректно и при каких условиях.
Порядок проведения тестирования производительности
Процесс тестирования производительности будет давать положительные результаты при поэтапном выполнении следующих действий [1]:
-
Выделение тестовой среды.
В целях успешного тестирования производительности тестовая среда должна представлять собой точную копию производственной инфраструктуры. Разработка чёткой тестовой инфраструктуры, аналогичной производственной, является важным шагом к успешности проводимых испытаний.
-
Определение критериев эффективности производительности.
Определение четких критериев успешности проведенных тестов играет важную роль для эффективности проводимого тестирования, так как в конечном итоге результаты тестов проверяются соответственно этим критериям. Для этого необходимо выделить следующие характеристики: время отклика, пропускная способность, использование ресурсов, максимальная нагрузка.
-
Планирование и проектирование теста.
Планирование и проектирование тестов производительности заключается в определении ключевых тестовых сценариев. Тестовые сценарии разрабатываются, исходя из их значимости, частоте и влиянию на производительность.
-
Настройка тестовой инфраструктуры.
После определения всех требований к тесту производительности наступает этап реализации. На данном этапе разрабатывается тестовая инфраструктура (тестовая среда).
-
Реализация тестового проекта.
После настройки тестовой среды происходит запись разработанных сценариев с помощью утилиты тестирования производительности, имитация всех действий пользователей и создание контрольных примеров.
-
Выполнение теста.
Данный этап включает в себя выполнение тестового скрипта при различной пользовательской нагрузке и с различными конфигурациями системных ресурсов. Осуществляется наблюдение за результатами теста в целях обнаружения основных тенденций.
-
Анализ результатов и отчетов и повторное тестирование.
На завершающем этапе, после выполнения тестов и анализа результатов выполняется анализ результатов тестов, документация тестов, повторные тестирования приложения с новыми настройками.
Разновидности тестирования производительности
Исходя из того, как ставится цель тестирования производительности, или же на какой бизнес-вопрос должен ответить тот или иной проводимый тест, выделяются следующие виды тестирования производительности [4]:
-
Нагрузочное тестирование. Основной целью проведения нагрузочного тестирования является выявление поведения приложения при различных уровнях нагрузки и при различных сценариях использования. Главный параметр: время отклика. Вопрос, на который необходимо ответить с помощью нагрузочного тестирования:
- Насколько корректно функционирует приложение в условиях нормальной нагрузки?
-
Стресс-тестирование. Основной целью проведения стресс-тестирования является выявление поведения приложения при превышении стандартной нагрузки. Главные параметры: время отклика и пропускная способность. Вопрос, на который даст ответ стресс-тестирование:
- Сможет ли система прийти в нормальное состояние после превышения стандартной нагрузки?
-
Тестирование стабильности. Основной целью тестирования стабильности работы приложения является проверка отказоустойчивости системы при нормальной нагрузке в условиях длительной непрерывной работы (в том числе в режиме работы 24/7). Главный параметр: память. Вопросы, на которые даст ответ тестирование стабильности:
- Есть ли утечки памяти?
- Будет ли приложение адекватно работать с течением времени?
-
Тестирование масштабируемости. При тестировании масштабируемости определяется способность системы к увеличению производительности в результате добавления вычислительных мощностей и изменений архитектуры решения, а также выявляется оптимальная комбинация системных настроек и конфигурации ПО. Вопрос, на который даст ответ тестирование масштабируемости:
- В состоянии ли будет система повышать уровень производительности при добавлении ресурсов?
Генерация нагрузки и мониторинг
На сегодняшний день существует множество как бесплатных, так и платных инструментов для проведения тестирования производительности. По структуре все инструменты в принципе своем одинаковы и состоят из следующих компонент [2]:
- Recorder - записывает действия, выполняемые пользователями в соответствии с тестовыми сценариями и превращает их в программный код;
- Code IDE - среда разработки;
- Generator - механизм для создания виртуальных пользователей, выполняющих описанные тестовые сценарии;
- Analyzer - анализатор показателей - результатов теста.
Остановимся на наиболее часто используемом инструменте тестирования производительности и расскажем об его основных возможностях.
ApacheJmeter
Данный инструмент ТП является бесплатным, что является его достоинством и причиной популярности. Первоначально был разработан для тестирования веб-приложений, но на сегодняшний день распространен более широко [5].
Основные возможности:
- Может быть использован для имитации большой нагрузки на сервер, группы серверов или сети при различных видах нагрузки.
- Мощный анализатор.
- Визуализация результатов в GUI.
Плюсы:
- Кроссплатформенный, т. к написан на Java.
- Очень гибкий, используется много протоколов, не только веб-сервер, но и базы.
- Инструмент обладает хорошей технической поддержкой со стороны разработчика.
Минусы:
- Ресурсоемкий.
- Стабильная работа зависит от окружения и конфигурации сервера.
- Недружелюбный интерфейс.
Данный инструмент подойдет для решения не самых больших и несложных задач при скромном бюджете.
Заключение
Высокие качественные характеристики и высокая производительность - залог успеха любого веб- приложения. Тестирование и оптимизация производительности позволяет на ранних стадиях разработки программного средства выявить широкий спектр потенциальных проблем, не выявляемых иными направлениями тестирования.
Своевременная реакция на обнаружение таких проблем позволяет разработчикам программных средств создавать продукты, в полной мере соответствующие требованиям заказчика и современным тенденциям развития многопользовательских приложений.
Литература
- Нагрузочное тестирование [Электронный ресурс]. – Режим доступа: (дата обращения 27.08.2015).
- Test Everything [Электронный ресурс]. – Режим доступа: http: //natalia-savastiuk.blogspot.ru/2011/05/blog-post.html?m=1 (дата обращения 27.08.2015).
- Википедия: Тестирование производительности [Электронный ресурс]. – Режим доступа: 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).
- Performance Testing Guidance for Web Applications [Электронный ресурс]. – Режим доступа: https://msdn.microsoft.com/en-us/library/bb924375.aspx (дата обращения 27.08.2015).
- Инструменты для нагрузочного тестирования [Электронный ресурс]. – Режим доступа: http://www.protesting.ru/automation/load/loadtesttools.html (дата обращения 27.08.2015).