2012-04-18 1 views
2

У меня есть тест Visual Studio 2010 Load, который содержит ряд тестов производительности сети. Для выполнения тестов производительности веб-сайта вам необходимо войти в систему на тестируемый веб-сайт. Соответственно, тест нагрузки содержит этап инициализации - небольшой тест производительности сети, который выполняет вход в систему, и который использует подключаемый модуль для кэширования полученного файла cookie. «Реальные» тесты производительности веб - те, которые фактически выполняют работу и у каждых есть плагин, который читает кэшированные печенья и добавляет его к испытанию, так что каждый тест работает правильно:Тестирование веб-производительности, требующее входа в систему: как заставить его работать изолированно и при нагрузке?

public override void PreWebTest(object sender, PreWebTestEventArgs e) 
{ 
    if (CookieCache.Cookies != null) // CookieCache is a static class of mine 
     e.WebTest.Context.CookieContainer.Add(CookieCache.Cookies); 

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

Какое-либо рекомендуемое решение проблемы? Другими словами, если для проверки веб-производительности необходимо войти в систему, есть ли способ заставить ее работать как изолированно, так и когда она является частью теста нагрузки?

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

ответ

0

Я не знаком с тестированием нагрузки Visual Studio 2010, но похоже, что вам нужны эквиваленты методов NUnit SetUp и TearDown, которые запускаются один раз для всех тестов, независимо от того, выбран ли вы один тест или все тесты в сборка.

A bit of searching подразумевает, что эквивалент составляет Init и Term.

1) Нажмите правой кнопкой мыши на узле сценария в тесте нагрузки и выберите Edit Test Mix ...

2) В диалоговом окне смешивания редактировать тест, Посмотрите на дно формы. Вы найдете 2 флажка. Один для теста init и один для терминального теста.

Испытание init будет выполняться до каждого пользователя, а терм-тест будет выполняться при завершении пользователем пользователя . Чтобы убедиться, что тест проходит, вам также необходимо установить время перезарядки для теста нагрузки. Время перезарядки - это свойство на узле установки прогона. Этот параметр дает возможность испытать шанс выдать , когда продолжительность завершается. Вы можете установить это на 5 минут. Время перезарядки не обязательно длится 5 минут. Это закончится, когда все тесты завершены. Если это займет 20 секунд, тогда это будет , когда будет завершена проверка нагрузки.

+0

Спасибо, что постарались помочь - высоко ценится. К сожалению, ваше предложение в основном состоит в том, что мы уже делаем. Добавление теста init выполняется, как вы говорите, означает, что тест производительности веб-сайта будет работать корректно *, когда он находится в тестовом режиме нагрузки, но не решает проблему всегда работать на веб-тест производительности, независимо от того, находится ли он в тестовом режиме нагрузки. Это потому, что тест Init, если тест нагрузки определен и поэтому не будет работать, если вы запустите тест производительности сети вне теста нагрузки. – PhantomDrummer

5

Решение добавить тест Войти для ваших индивидуальных тестов веб-производительности (с помощью «Вставить призыв к веб-Test»), но закрытого типа с помощью «Context параметр существует» условное правило, которое выглядит для отсутствие из параметр контекста $ LoadTestUserContext. Этот параметр существует только в том случае, если веб-тест работает в тесте нагрузки.

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

0

Почему бы не попробовать и использовать функцию PreRequest вместо PreWebTestFunction

Public Overrides Sub PreRequest(sender As Object, e As PreRequestEventArgs) 
    MyBase.PreRequest(sender, e) 
    Dim cookie As System.Net.Cookie = New System.Net.Cookie(...) 
    e.Request.Cookies.Add(cookie) 

Таким образом, как тест нагрузки и веб-теста будет работать.