Login 如何在jmeter中发送$u POST数据?

Login 如何在jmeter中发送$u POST数据?,login,jmeter,http-post,load-testing,Login,Jmeter,Http Post,Load Testing,我正在尝试对服务器的登录功能进行负载测试。登录表单以以下格式将数据以$\u POST数组发送到服务器 Array( [LoginForm] => Array( [username] => siddhant@gmail.com [password] => 123456 [rememberMe] => 0 ) ) 我面临的问题是如何在jmeter中发送这些参数。我尝试将它们发送到json负

我正在尝试对服务器的登录功能进行负载测试。登录表单以以下格式将数据以$\u POST数组发送到服务器

Array(
     [LoginForm] => Array(
           [username] => siddhant@gmail.com
           [password] => 123456
           [rememberMe] => 0
     )
)
我面临的问题是如何在jmeter中发送这些参数。我尝试将它们发送到json负载中,如下所示

{"LoginForm":{"username":"siddhant@gmail.com","password":"123456","rememberMe":"0"}}
我已经在请求中以名称-值对的形式发送了用户名、密码和memberme参数,但我无法以这种方式登录


此外,在验证之后,系统将重定向到另一个URL。jmeter会自动这样做,以便我可以在响应中添加断言。或者,我必须为此添加另一个HTTP请求吗?

听起来您在后端使用PHP,我相信如果您在JMeter HTTP采样器中以以下格式构造POST参数:

    LoginForm[username] = siddhant@gmail.com
    LoginForm[password] = 123456
    LoginForm[rememberMe] = 0
后端应该能够将它们作为数组读取

使用Chrome调试工具等工具查看登录表单的HTML源代码,并在登录表单上找到表单输入元素的“name”属性,这些是您需要在HTTP采样器中传递的参数名称,例如

    <input type="text" name="LoginForm[username]" />
    <input type="password" name="LoginForm[password]" />

为了回答您的第二个问题,HTTP采样器上有一个标记,用于跟踪重定向,这意味着您可以将断言应用于HTTP POST采样器,它将查看重定向到的页面的内容

Vikas的评论也是正确的,您可能需要在测试中添加一个Cookie管理器,它将像浏览器一样在后续请求中自动保存和发送Cookie


使用View Results Tree listener查看请求和响应,以帮助调试测试。

我认为最快、最简单的方法是使用内置录制JMeter测试-它将捕获浏览器和被测应用程序之间的流量,并以JMeter采样器的形式存储

参考资料:


还考虑添加和测试计划以使测试更加逼真。 这里可能有很多东西。系统可能会要求您设置一些cookie,您必须有一个cookie管理器。或者,它可能会向您发送一个令牌,您必须在每个请求中传递该令牌。