Нагрузочное тестирование – довольно общий термин, довольно часто выделяют такие виды тестирования, как тестирование производительности, стрессовое тестирование, тестирование надежности, объемное тестирование... Но при проведении всех этих видов тестирования можно выделить общие подходы. Например, нагрузочное тестирование, как правило, автоматизируется, вручную сымитировать одновременные действия многих пользователей малореально.
В Visual Studio Team System средства для нагрузочного тестирования есть в версии «Студии» для тестировщиков (Team Edition for Testers). Средство для создания нагрузочных тестов довольно похоже на MS Web Stress Tool – давно известную разработку Microsoft.
В Visual Studio Team System существует шесть базовых видов тестов: unit test, manual test, ordered test, web test, load test, generic test. Также предоставляется возможность создавать пользовательские типы тестов.
Для просмотра и управления тестами, относящимися ко всем проектам и решениям (solutions), с которым работает пользователь, предназначена утилита Test Manager. В Test Manager можно создавать новые тесты и копировать, удалять, редактировать существующие.
Test Manager – наиболее удобное средство управления тестами
Перед созданием какого-либо теста нужно вначале создать тестировочный проект (test project), к которому будет отнесен данный тест. Впрочем, мастер создания тестов предложит сделать это автоматически. В Visual Studio Team System тестировочные проекты предназначены специально для хранения тестов различных типов.
Каждый тестировочный проект должен быть связан с каким-нибудь языком программирования из поддерживаемых в Visual Studio: Visual Basic, C# и т. д. На этом же языке будут создаваться тестовые сценарии (test scripts).
Чтобы создать новый тест, нужно выбрать пункт меню "Test – New Test..." и в открывшейся форме выбрать тип теста.
Для тестирования сайта под нагрузкой наиболее подходит load test. Рассмотрим подробнее создание и работу нагрузочного теста (load test).
Суть нагрузочного теста в выполнении серий http-запросов множеством виртуальных пользователей
Нагрузочный тест представляет собой последовательности http-запросов, сгенерированные множеством виртуальных пользователей. Нагрузочный тест работает на протокольном уровне. При выполнении теста движок выполняет эти запросы с заданными параметрами, сохраняет и анализирует ответы от сервера (response) и параметры, описывающие работу компьютеров, на которых находятся сервер и клиенты.
При запуске нагрузочного теста взаимодействия с браузером не происходит, все тесты выполняются движком на более низком, протокольном, уровне.
Физически нагрузочный тест состоит из настроек, описывающих параметры соединения виртуальных пользователей и одного или нескольких веб-тестов, которые описывают действия виртуальных пользователей на тестируемом сайте. Подробнее о создании и работе веб-тестов было рассказано в предыдущей статье о средствах тестирования в Visual Studio Team System.
На диске нагрузочные тесты хранятся в папке тестировочного проекта в файле с расширением loadtest.
Итак, после выбора пункта меню "Test – New Test..." на открывшейся форме нужно выбрать, к какому тестировочному проекту будет отнесен будущий нагрузочный тест, и кликнуть по значку Load Test.
Большинство свойств нагрузочного теста устанавливается с помощью специального мастера
После этого откроется мастер создания нагрузочного теста (New Load Test Wizard). На первой его форме никакие настройки не содержатся, на ней размещена лишь справочная информация.
Мастер создания нагрузочных тестов |
На следующей форме (Scenario) по желанию тестировщика можно настроить параметры задержек (Think Time) между запросами веб-тестов, входящих в нагрузочный тест. Использование Think Time поможет очеловечить тест, поведение виртуальных пользователей станет похоже на поведение настоящих посетителей сайта. Можно также отказаться от использования задержек, выбрав опцию «Do not use think times» – в этом случае запросы будут отправляться на сервер так быстро, насколько это будет возможно.
Нажав на кнопку Next, тестировщик попадет на форму Load Test Pattern. На ней можно указать, сколько виртуальных пользователей будут тестировать сайт и как их количество будет изменяться во времени. В Visual Studio предоставляется возможность выбирать из двух шаблонов: с постоянной и переменной нагрузкой.
В случае постоянной нагрузки нужно только указать количество виртуальных пользователей, выбрав предварительно опцию Constant Load.
В случае выбора опции Step Load количество виртуальных пользователей будет увеличиваться ступенчато. Предоставляется возможность выбрать начальное количество пользователей (Start user count), продолжительность каждого шага (Step duration), увеличение количества пользователей с каждым шагом (Step user count) и максимальное количество пользователей (Maximum user count) – все эти настройки станут доступными после выбора опции Step Load.
Следующая форма мастера называется Test Mix. Здесь нужно указать, какие именно веб-тесты будут входить в состав нагрузочного теста. Можно указать множество сценариев тестирования (то есть веб-тестов) и процент виртуальных пользователей, которые будут выполнять тот или иной веб-тест (указывается с помощью ползунков во второй колонке таблицы). Таким способом можно повысить реалистичность моделируемой нагрузки на сервер, ведь настоящие посетители сайта действуют по разным сценариям.
В правой колонке таблицы находятся переключатели, которые замораживают показатели во второй колонке – довольно удобная возможность при большом количестве веб-тестов.
Следующей формой мастера является форма Browser Mix. На ней указывается, какими браузерами будут пользоваться виртуальные посетители сайта. Предлагается выбор из таких браузеров: Internet Explorer 6.0, Internet Explorer 5.5, Netscape 6.0, Pocket IE 3.02, SmartPhone.
Как и в случае с веб-тестами, можно с помощью ползунка указать, какой именно процент виртуальных пользователей каким браузером будет пользоваться.
Сделав необходимые настройки и нажав на кнопку Next, попадем на форму Network Mix. На ней можно указать, какой тип соединения используют виртуальные пользователи. Эта опция довольно важна, она влияет на производительность системы намного больше, чем, например, браузеры, которыми пользуются посетители сайта.
Всего предлагается девять типов соединения от диалапа 28,8 Kбит/с до шестимегабитной выделенной линии. Как видим, с помощью средств тестирования в Visual Studio Team System можно максимально очеловечить поведение нагрузочных тестов.
На форме Counter Sets указывается, значения каких показателей и на каких компьютерах должен собирать движок нагрузочных тестов. Для добавления компьютера нужно нажать кнопку "Add Computer...". Как правило, тестировщики добавляют в список наблюдаемых машин компьютер, на котором находится сервер. Ведь знать параметры его работы во время нагрузочного тестирования очень важно. Все показатели работы компьютера разбиты на разделы: ADO.NET, ASP.NET, IIS, SQL...
Последней формой мастера создания нагрузочного теста является форма Run Settings. На этой форме указывает длительность теста (поле Run Duration), время на «разогрев» сервера (Warm-up Duration), частота обновления графиков, описывающих ход теста. Также на этой форме указываются параметры логирования ошибок, которые могут произойти во время тестирования.
Итак, после нажатия кнопки Finish работа с мастером создания нагрузочного теста закончена. Но некоторые довольно важные настройки еще не сделаны. После закрытия мастера нагрузочный тест отображается в виде дерева, узлами которого являются группы настроек теста.
После клика на узле Run Settings в правой нижней части экрана станет активным окно Properties, в котором отображается множество свойств теста, в том числе и те, которые недоступны в мастере создания нового теста. Из них рассмотрим подробнее только две: Web Test Connection Model и Storage Type.
Visual Studio предоставляет возможности максимально приблизить поведение нагрузочного теста к поведению настоящих посетителей сайта
Свойство Web Test Connection Model может иметь два значения: Per User и Connection Pool. Если значение этого свойства равно Per User, то каждый виртуальный пользователь пользуется одним или двумя соединениями (connections) с сервером. При этом наиболее точно имитируется поведение настоящего браузера. В случае выбора Connection Pool используется набор (pool) соединений с сервером. Максимальное количество соединений в наборе также можно задать.
Свойством Storage Type определяется, где будут храниться результаты тестирования: в базе данных, в виде XML, или же результаты не будут сохраняться.
Для запуска нагрузочного теста нужно нажать кнопку Run Test на панели инструментов (как правило, это левая кнопка на панели).
После запуска теста открывается форма, на которой отображается ход тестирования в виде живых графиков. Впрочем, можно посмотреть и табличное представление результатов. На этой же форме находится и ссылка Errors, нажав на которую можно просмотреть подробную информацию о произошедших ошибках.
Результаты тестирования |
По умолчанию отображается три графика: количество пользователей, количество запросов в секунду и время на обработку запроса. Все остальные графики нужно добавлять вручную. Отображение уже добавленных графиков можно включать и выключать с помощью специального переключателя – это помогает не загромождать диаграмму.
Итак, в Visual Studio Team System существуют довольно мощные средства для организации нагрузочного тестирования сайтов. По сути нагрузочные тесты являются улучшенным и интегрированным в Visual Studio вариантом Microsoft Web Stress Tool. Нагрузочные тесты можно использовать и для сайтов, разработка которых еще продолжается, и для уже готовых систем, например после смены аппаратного или программного обеспечения.
Ссылки по теме
- Visual Studio Team System
- Нагрузочные тесты в Visual Studio Team System (англ.)
- Web and Load Test FAQs
Статья получена: hostinfo.ru