Как передать параметр в нагрузочном тестировании страницы входа с JMeter - PullRequest
0 голосов
/ 07 июня 2019

Как передать параметр в нагрузочном тестировании страницы входа в систему с помощью JMeter и сайта, разработанного в asp .net mvc:

enter image description here

Это то, что я пытался. Но не удалось найти способ, где я могу найти _requestVerificationToken и как установить RememberMe.

В следующем видео автор использовал токен из другого запроса: возможно, когда загружается домашняя страница. Но как установить токен того времени я так и не понял. Вот ссылка на видео YouTube

Обновление:

Я наконец-то смог отправить параметры со значением. Запрос http выглядит следующим образом: enter image description here

Но в ответе появляется следующая ошибка:

    [HttpAntiForgeryException (0x80004005): The required anti-forgery cookie "__RequestVerificationToken" is not present.]
   System.Web.Helpers.AntiXsrf.TokenValidator.ValidateTokens(HttpContextBase httpContext, IIdentity identity, AntiForgeryToken sessionToken, AntiForgeryToken fieldToken) +459
   System.Web.Helpers.AntiXsrf.AntiForgeryWorker.Validate(HttpContextBase httpContext) +71
   System.Web.Helpers.AntiForgery.Validate() +92
   System.Web.Mvc.ValidateAntiForgeryTokenAttribute.OnAuthorization(AuthorizationContext filterContext) +18
   System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) +97
   System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__0(AsyncCallback asyncCallback, Object asyncState) +640
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +14
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +346
   System.Web.Mvc.<>c.<BeginExecuteCore>b__152_0(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +27
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +494
   System.Web.Mvc.<>c.<BeginExecute>b__151_1(AsyncCallback asyncCallback, Object callbackState, Controller controller) +16
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +20
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +403
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +16
   System.Web.Mvc.<>c.<BeginProcessRequest>b__20_0(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +54
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +427
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +105
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +50
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +163

Я устанавливаю токен из вызова GET страницы входа в систему через переменную. И я проверил, оба токена в вызове JMeter одинаковы.

В следующем вопросе StackOverflow такая же ситуация. но это не помогло мне. Вот ссылка

1 Ответ

0 голосов
/ 07 июня 2019
  1. Я надеюсь, что _requestVerificationToken создается или, другими словами, является ответом на первый запрос входа в систему. В этом случае выполните следующие шаги.

Используйте средство извлечения регулярных выражений дляполучить запрос на подтверждение, полученный из предыдущего ответа.что-то вроде этого

enter image description here

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

, и вы можете использовать имя переменной в следующем запросе, где этот токен передается

enter image description here

Используйте https://regex101.com/, чтобы узнать регулярное выражение для вашего ответа

Если _requestVerificationToken отправляется в самом первом запросе на вход.Затем вы можете просто добавить это значение в поле параметра в запросе http в jmeter.Поэтому, если вы жестко закодируете это значение, оно останется навсегдаНо я сомневаюсь, что это может истечь через некоторый интервал времении, следовательно, это не очень хорошая практика для настройки в jmeter
...