Шевченко Я.Т.
Национальный технический университет
Украины «Киевский политехнический институт»
Нагрузочное тестирование web-приложений
В настоящее время большее число комерческих и
государственных компаний используют web-приложения
как для взаимодествия с конечными пользователями, так и для внутренних
потребностей. Практически каждая компания и практически каждый пользователь
зависит от надежности web-приложений,
функциональные возможности которых непрерывано растут. Возрастает сложность web-приложений, но вместе с тем и нагрузка на них.
Проблемы с производительностью приводят к отказу клиентов
от использования приложений. Web-приложение
должно быть доступно и выполнять свои задачи в любой момент времени, когда оно
понадобится клиенту. Низкую производительность приложения замечает
большинство пользователей, что негативно влияет на такой показатель удобства
использования как "мера пользовательской реакции". В конечном итоге
пользователи предпочитают более производительное программное обеспечение.
Низкая производительность уменьшает количество полезных операций
(действия, направленные на
удовлетворение потребности пользователя или бизнес-потребности владельца
приложения ) в единицу
времени, что приносит убытки владельцу приложения. Низкая производительность может стать
причиной выхода приложения из строя, возникновения проблем с безопасностью и
иных нежелательных последствий и т.п.[1]
Таким образом, тестирование производительности позволяет
обнаружить и устранить множество потенциальных проблем, которые приложение может начать испытывать на стадии
эксплуатации.
В связи c этим актуальной является задача проведения
качественного нагрузочного тестирования, которое обеспечит стабильность работы
приложения.
В качестве анализируемого web-приложения
был выбран интернет-ресурс
rozetka.ua –
один из самых популярных в Украине интернет-магазин электроники, бытовой
техники и других категорий товаров[2].
В качестве основных сценариев были выбраны:
·
Загрузка домашней страницы
·
Поиск товаров
·
Добавление товара в корзину
Все сценарии проводились с выгрузкой всех встроенных
ресурсов сайта (css, js, т.п.)
Для
анализа системы были выбраны следующие показатели:
·
количество виртуальных пользователей,
одновременно работающих с приложением
·
количество ответов приложения в единицу
времени (исключая
сообщения об ошибке)
·
время отклика приложения
В качестве сценария было выбрано постепенное увеличение
количества виртуальных пользователей: начиная с 10 виртуальных пользователей, с постепенным увеличением на 10
виртуальных пользователей каждую минуту
до достижения 1000 виртуальных
пользователей. Каждый пользователь случайным образом выбирает один из трех
сценариев.
251658240
Рис.1. Сценарий нагрузки
системы
На основании
полученных результатов требуется дать оценку эффективности работы web-приложения под нагрузко, определить «узкие места»,
которые понижают эффективность приложения.
Результаты
Таблица 1. Сводные результаты
|
Действие |
Количество |
Среднее |
|
Минимальное
|
Максимальное |
Количество |
|
Загрузка
страницы поиска |
37090 |
2072 |
9767 |
28 |
24120 |
2,67 |
|
Сервис
поиска |
35917 |
1257 |
2341 |
28 |
23183 |
1,67 |
|
Поиск в целом |
36906 |
3329 |
12108 |
81 |
24120 |
4,31 |
|
Загрузка
страницы продукта |
37741 |
2009 |
9349 |
26 |
27672 |
2,55 |
|
Сервис
добавления продукта в корзину |
36550 |
1170 |
2002 |
25 |
23261 |
1,53 |
|
Сервис
информации о доставке продукта |
35871 |
1151 |
1524 |
23 |
23222 |
1,45 |
|
Сервис
предложений похожих продуктов |
35248 |
1313 |
3051 |
26 |
24846 |
1,49 |
|
Добавление в корзину в целом |
37290 |
5643 |
15923 |
100 |
102280 |
6,88 |
|
Запрос
домашней страницы |
35566 |
1306 |
3814 |
10 |
21538 |
1,32 |
|
Сумма |
363745 |
7808 |
24678 |
10 |
142280 |
2,54 |
В сводной таблице вынесена
как информация по каждому конкретному сервису либо странице (время загрузки
страницы считалось со всем встроенными ресурсами), так и вцелом по действию для
пользователя. Например, для того что-бы увидеть страницу результатом поиска –
пользоватлю необходимо сначала дождаться выполнения поискового запроса на
стороне сервера, потом дождаться загрузки страницы и всех встроенных ресурсов (стили,
библиотеки, т.п.). Из таблицы видно что в среднем каждый сценарий занял
менее 10 секунд, что считается приемлемым результатом.
251658240
Рис.2. Время отклика
приложения
Как видно
из рисунка - время отклика приложения
растет линейно и пропорционально количеству виртуальных пользователей, что не
является приемлемым результатом.
Для идеальной системы время отлика с ростом количества
пользователей выглядело бы следующим образом[1]:
251658240
Рис.3. Время отклика
идеальной системы с ростом количества пользователей
Рост времени отклика
должна только в точке насыщения
системы. Из чего можно сделать вывод о неверной конфигурации балансировщика на
сервере.
251658240
Рис.3. Количество ответов в единицу
времени
Из рисунка 3 виднр что количество ответов в единицу
времени не зависит от количества пользователей. Однако стоит отметить сильную
волатильность, что скорее всего вызвано недостатком памяти либо неверной
конфигурацией системы[3].
Исходя из приведеного анализа графиков показателей
эффективности можно сделать следующие выводы:
·
среднее время загрузки страниц является приемлемым (порядка
3-5 секунд)
·
время отклика системы растет линейно с увеличением
количества виртуальных пользователей что свидетельствует о неверной
конфигурации балансировщика
·
количество ответов в единицу времени не зависит от
количества виртуальных пользователей, что является хорошим результатом
В целом же сайт справился с нагрузкой в 1000 виртуальных
пользователей, что является хорошим показателем для сайтом електронной
коммерции.
1.
Автоматизация тестирования производительности: основные
положения и области применения[Електронный ресурс]. – Режим доступа:
http://svyatoslav.biz/technologies/performance_testing
2.
Rozetka[Електронный ресурс]. – Режим доступа: http://uk.wikipedia.org/wiki/Rozetka
3. Memory Leaks, Load Balancing and Deployment Settings: Testing Lessons
learned from the eCommerce industry[Електронный
ресурс]. - Режим доступа:
http://apmblog.dynatrace.com/2014/02/26/memory-leaks-load-balancing-and-deployment-settings-testing-lessons-learned-from-the-ecommerce-industry/