Укажите условие завершения теста в Visual Studio Load Test - PullRequest
5 голосов
/ 28 июля 2011

Я тестирую большую систему BizTalk, используя нагрузочный тест Visual Studio.Load Test для отправки сообщений в MQ, они извлекаются BizTalk и затем обрабатываются.

Вместо того, чтобы завершить тест (и все счетчики производительности заканчиваются), как только Visual Studio закончит вставку сообщений в MQ, яхочу, чтобы тест завершался тогда и только тогда, когда выполняется какое-либо условие (в моем случае if (SELECT COUNT(*) FROM BizTalkMsgBoxDb.dbo.Spool) == 4).

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

Естьвозможно ли это, а если нет, у кого-нибудь есть идея хорошего обходного пути / хака для достижения этой цели?

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

Вы захотите написать собственный плагин для нагрузочного тестирования. Подробности начинаются с этого URL: http://msdn.microsoft.com/en-us/library/ms243153.aspx

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

1 голос
/ 05 февраля 2014

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

  1. Не ограничивайте продолжительность теста: Установите длительность нагрузочного теста (или количество итераций) на очень большое значение - больше, чем вы ожидаете (или знаете), что потребуется для конечного условия быть удовлетворенным.
  2. Ограничение сценария, который ставит в очередь запросы: В свойствах сценария нагрузочного теста в разделе Параметры установите Максимальное число итераций теста, чтобы пользовательская нагрузка упала до нуля после отправки нужного количества запросов. , Если по какой-то причине установка предела итерации невозможна, вы можете вместо этого написать плагин нагрузочного теста, который устанавливает нулевую нагрузку пользователя в указанном сценарии по истечении определенного времени тестирования.
  3. Проверка на конечное условие: Напишите плагин веб-теста, который проверяет базу данных на предмет вашего конечного условия. Подключите этот плагин к новому веб-тесту в новом сценарии и установите для этого сценария время ожидания между итерациями теста, чтобы тест выполнялся только так часто, как это необходимо (60 секунд?). Когда условие достигнуто, плагин должен записать заранее заданное значение в пользовательский контекст (пользовательский контекст доступен в контексте веб-теста как $LoadTestUserContext и доступен только в нагрузочном тесте, но не при запуске автономного веб-теста).
  4. Прервать тест: Создать плагин нагрузочного теста, который ищет значение флага в контексте пользователя в событии TestFinished. Когда значение найдено, плагин вызывает LoadTest.Abort().

У этого метода есть один небольшой недостаток: состояние теста помечается как Aborted в базе данных результатов.

0 голосов
/ 26 мая 2012

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

Единственный способ, которым нам удалось сделать что-то подобное, - это напрямую манипулировать базой данных LoadTest и впоследствии вводить данные счетчика производительности из файлов журнала, но это не разумно и не рекомендуется.

Ну да ладно ..

...