无法处理Jmeter负载测试中的视图/状态和事件验证

时间:2015-10-09 05:53:12

标签: .net jmeter viewstate load-testing eventvalidation

我目前正在加载测试.Net网络应用程序。在哪种情况下,用户将登录并执行某些导航步骤,然后他/她将填写一个评估表,提交,然后从应用程序注销。

因此,对于这种情况,有许多GET和POST请求。因为它的.Net应用程序服务器将使用view-State和_Event-Validation进行一些身份验证。但是为了处理这个问题,我不确定我需要从哪个请求获取这些参数并将其传递给哪个请求,因为这种情况是GET和POST请求的组合。这是请求的顺序。

登录(GET) 登录(POST) 家(GET) 主页(POST) 评估(GET) 评估(POST) - >它将根据客户端名称加载程序列表 评估(POST) - >它将提交客户端和程序名称以获取特定的评估表单 评估(GET) 评估(POST) 评估(GET) 退出(GET)

所以大家帮我把这个东西缩短了

3 个答案:

答案 0 :(得分:2)

您可以非常轻松地在JMeter中的请求之间处理动态POST参数。 对于viewstate和eventvalidation,将两个正则表达式提取器添加到Web负载测试中。

Name: Regex Extractor - ViewState
Reference Name: v
Regular Expression: name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"
Template: $1$
Match No.(0 for Random): 1

Name: Regex Extractor - EventValidation
Reference Name: e
Regular Expression: name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)"
Template: $1$
Match No.(0 for Random): 1

录制后,您必须使用__VIEWSTATE__EVENTVALIDATION替换${v}${e}的值,以编辑录制控制器中的每个HTTP请求。

这将有效地在您的下一个请求中传递最新响应的viewstate和eventvalidation。

答案 1 :(得分:2)

您需要使用以下PostProcessor之一来提取VIEWSTATE和EVENTVALIDATION值并将它们转换为JMeter变量:

有关提取器的实际示例和示例配置,请参阅ASP.NET Login Testing with JMeter指南。

另外,请不要忘记将HTTP Cookie Manager添加到测试计划中以表示浏览器Cookie,处理基于Cookie的身份验证并模拟浏览器会话。

答案 2 :(得分:0)

您应该检查view-State和_Event-Validation参数何时更改。(您可以通过右键单击和查看页面源来轻松完成)。正如这些确定您所在的页面。

在我的上一个脚本中,我有23个不同的地方,其中viewState发生了变化,我不得不提取并更改它23次。因此,没有人可以回答您应该更改它们的位置,因为我们没有看到您正在测试的响应和应用程序。