我正在尝试使用jMeter加载测试我的Web服务器,我能够使用POST请求成功登录到登录页面,但其他页面正在重定向,就像我的线程未经过身份验证一样。
HTTP请求'登录(POST)'后的任何内容都会被重定向到主页。这有点毁了我的测试。我还添加了Cookie管理器:
我是否需要添加自定义Cookie?是否按用户组树的顺序访问了页面?
答案 0 :(得分:3)
是的,页面按照树的顺序访问。
在不知道您应用的具体情况的情况下,我猜测有一些动态身份验证令牌需要从您的初始请求中提取,然后传递给将来的请求。
以下是一些视频,解释了如何使用JMeter进行登录:
http://community.blazemeter.com/knowledgebase/articles/80479-how-to-use-jmeter-for-login-authentication
答案 1 :(得分:1)
您的Cookie管理器看起来不错。也许你可能会遗漏像“VIEWSTATE”这样的东西,它是Java和.NET Web应用程序中广泛使用的流行的页面状态管理机制。
使用HTTP(S) Test Script Recorder或Google Chrome plugin记录您的测试用例流程,这更容易,并提及与请求一起发送的参数。如果您看到VIEWSTATE
之类的内容,则需要在测试中添加一些相关性,以便从页面源获取此viewstate值并将其添加到其他请求中。
这就像是
<input id="viewState" type="hidden" value="/wEPDwUBMGRkMSHDB101+52k3J/FmXSyR78uK/g=" name="viewState">
您需要提取此值/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
字符串来假装更像真正的浏览器。
希望这有帮助