понедельник, 28 декабря 2009 г.

Эмуляция нагрузки на сервер DV с использованием MS Visual Studio.

Среди программных продуктов существует множество как платных, так и бесплатных специализированных решений для эмуляции нагрузки на WEB-сервера.К сожалению, почти все они не очень хорошо подходят для эмуляции нагрузки на сервер DocsVision. Связано это главным образом с тем, что данные продукты заточены для нагрузочного тестирования WEB-сайтов, а не сложных клиент-серверных приложений, где весь трафик является персонально-зависимым.В данном посте хочу в общих чертах описать процедуру эмуляции нагрузки на сервер с использованием Microsoft Visual Studio Team System.


Данная редакция позволяет создавать Test Project, который среди нескольких типов тестов содержит Load Test (нагрузочный тест). Данный тип теста имеет следующую функциональность – запуск участков кода, объединенных атрибутом [Test Method] во множестве потоков. (То есть эмулировать выполнение этих участков одновременно от имени нескольких виртуальных пользователей). Плюс к этой функциональности, данный тип теста содержит большое число настроек и параметров, для гибкого управления конфигурацией. Сложив вместе сказанное в абзаце выше легко прийти к выходу, что Load Test в Visual Studio позволяет во-первых, создавать нагрузочные тесты для сервера DocsVision, а во-вторых, гибко управлять параметрами данной нагрузки. Вот небольшой пример кода, содержащего два теста – открытие карточки входящего документа и загрузка файла на диск из карточки файла:


[TestClass]
class MyTestClass
{
[TestMethod]
public void OpenCardDocument()
{
UserSession session = this.GetUserSession();
Assert.IsNotNull(session);

// open card
Guid cardID = (Guid)this.TestProperties["InstanceID"];

CardData cardData = session.CardManager.GetCardData(cardID);

// emulate reading data
cardData.SaveXml(new MemoryStream());
}

[TestMethod]
public void OpenCardFile()
{
UserSession session = this.GetUserSession();
Assert.IsNotNull(session);

// open card
Guid cardID = (Guid)this.TestProperties["InstanceID"];

CardData cardData = session.CardManager.GetCardData(cardID);


// emulate reading data
cardData.SaveXml(new MemoryStream());

// download file to disk
DownloadFile(session, cardData);
}
}


TestProperties["InstanceID"] – параметр из конфигурационного файла, соответствующий ID карточки входящего документа и карточки файла соответственно.

Теперь нам осталось только сконфигурировать параметры нагрузки, например так:

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

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

Комментариев нет:

Отправить комментарий