如何在 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学习(三十五)使用jmeter来发送json/gzip格式数据
Jmeter请求元件之Jmeter request 发送get请求和post请求
Jmeter请求元件之Jmeter request 发送get请求和post请求