如何在 jmeter 中发送 $_POST 数据?

Posted

技术标签:

【中文标题】如何在 jmeter 中发送 $_POST 数据?【英文标题】:How to send $_POST data in jmeter? 【发布时间】:2016-05-22 14:41:23 【问题描述】:

我正在尝试为我的服务器加载测试登录功能。登录表单将数据以 $_POST 数组的形式发送到服务器,格式如下。

Array(
     [LoginForm] => Array(
           [username] => siddhant@gmail.com
           [password] => 123456
           [rememberMe] => 0
     )
)

我面临的问题是如何在jmeter中发送这些参数。我尝试将它们发送到如下的 json 有效负载中。

"LoginForm":"username":"siddhant@gmail.com","password":"123456","rememberMe":"0"

我已经在请求中以名称值对的形式发送了用户名、密码和 rememberMe 参数,但我无法以这种方式登录。

此外,在身份验证后,系统会重定向到另一个 URL。 jmeter 会自动执行此操作,以便我可以在响应中添加断言。或者,我是否必须为此添加另一个 HTTP 请求?

【问题讨论】:

这里可以有多个东西。系统可能会要求您设置一些 cookie,您必须有一个 cookie 管理器。或者它可能会向您发送一个令牌,您必须在每个请求中传递该令牌。 【参考方案1】:

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

    LoginForm[username] = siddhant@gmail.com
    LoginForm[password] = 123456
    LoginForm[rememberMe] = 0

后端应该能够将它们作为数组读取。

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

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

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

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

使用查看结果树侦听器查看请求和响应以帮助调试您的测试。

【讨论】:

【参考方案2】:

我相信最快和最简单的方法是使用内置的HTTP(S) Test Script Recorder 记录 JMeter 测试 - 它将捕获浏览器和被测应用程序之间的流量并将其以 JMeter HTTP Request 采样器的形式存储。

参考资料:

Apache JMeter Proxy Step by Step How To Use JMeter For Login Authentication

还可以考虑将HTTP Cookie Manager 和HTTP Cache Manager 添加到您的测试计划中,以使您的测试更加真实。

【讨论】:

以上是关于如何在 jmeter 中发送 $_POST 数据?的主要内容,如果未能解决你的问题,请参考以下文章

jmeter 请求参数中有中文,post过去后乱码

JMeter学习(三十五)使用jmeter来发送json/gzip格式数据

Jmeter请求元件之Jmeter request 发送get请求和post请求

Jmeter请求元件之Jmeter request 发送get请求和post请求

jmeter向ActiveMQ发送消息_广播/订阅(Topics 队列)

一文搞定Jmeter发送Get与Post请求(HTTP)