我正在尝试使用jMeter加载测试我的Web服务器,我能够使用POST请求成功登录到登录页面,但是正在重定向其他页面,就像我的线程未经过身份验证一样 .
http://puu.sh/6MCu3.png
HTTP请求“登录(POST)”之后的任何内容都会重定向到主页 . 这有点毁了我的测试 . 我还添加了Cookie管理器:
http://puu.sh/6MCwP.png
我需要添加自定义Cookie吗?是否按用户组树的顺序访问了页面?
是的,页面按树的顺序访问 .
在不知道您的应用程序的细节的情况下,我猜测有一些动态身份验证令牌需要从您的初始请求中提取,然后传递给将来的请求 .
以下是一些视频,解释了如何使用JMeter进行登录:http://community.blazemeter.com/knowledgebase/articles/80479-how-to-use-jmeter-for-login-authentication
您的Cookie管理器看起来不错 . 也许您可能会遗漏像“VIEWSTATE”这样的东西,这是在Java和.NET Web应用程序中广泛使用的流行的页面状态管理机制 .
使用HTTP(S) Test Script Recorder或Google Chrome plugin记录您的测试用例流程,这更容易,并提及与请求一起发送的参数 . 如果您看到 VIEWSTATE 之类的内容,则需要在测试中添加一些相关性,以便从页面源获取此viewstate值并将其添加到其他请求中 .
VIEWSTATE
它会是这样的
<input id="viewState" type="hidden" value="/wEPDwUBMGRkMSHDB101+52k3J/FmXSyR78uK/g=" name="viewState">
您需要提取此值 /wEPDwUBMGRkMSHDB101+52k3J/FmXSyR78uK/g= 并将其作为参数传递 .
/wEPDwUBMGRkMSHDB101+52k3J/FmXSyR78uK/g=
获得它的最好方法是使用XPath Extractor
相关的XPath表达式如下所示:
//input[@id='viewState']/@value
另一种技术是使用Regular Expression Extractor后处理器,但正则表达式开发起来更复杂,尤其是多行表达式,并且它们甚至容易受到轻微标记更改的影响 .
另一个showstopper可能是CSRF filter - 一种验证请求来源的安全技术 . 在这种情况下,您需要构造一个包含此值的相关HTTP标头或HTTP请求参数 .
您可以使用HTTP Header Manager发送CSRF标头和可能的 User-Agent 字符串来假装更像真正的浏览器 .
User-Agent
希望这可以帮助
2 回答
是的,页面按树的顺序访问 .
在不知道您的应用程序的细节的情况下,我猜测有一些动态身份验证令牌需要从您的初始请求中提取,然后传递给将来的请求 .
以下是一些视频,解释了如何使用JMeter进行登录:
http://community.blazemeter.com/knowledgebase/articles/80479-how-to-use-jmeter-for-login-authentication
您的Cookie管理器看起来不错 . 也许您可能会遗漏像“VIEWSTATE”这样的东西,这是在Java和.NET Web应用程序中广泛使用的流行的页面状态管理机制 .
使用HTTP(S) Test Script Recorder或Google Chrome plugin记录您的测试用例流程,这更容易,并提及与请求一起发送的参数 . 如果您看到
VIEWSTATE
之类的内容,则需要在测试中添加一些相关性,以便从页面源获取此viewstate值并将其添加到其他请求中 .它会是这样的
您需要提取此值
/wEPDwUBMGRkMSHDB101+52k3J/FmXSyR78uK/g=
并将其作为参数传递 .获得它的最好方法是使用XPath Extractor
相关的XPath表达式如下所示:
另一种技术是使用Regular Expression Extractor后处理器,但正则表达式开发起来更复杂,尤其是多行表达式,并且它们甚至容易受到轻微标记更改的影响 .
另一个showstopper可能是CSRF filter - 一种验证请求来源的安全技术 . 在这种情况下,您需要构造一个包含此值的相关HTTP标头或HTTP请求参数 .
您可以使用HTTP Header Manager发送CSRF标头和可能的
User-Agent
字符串来假装更像真正的浏览器 .希望这可以帮助