首页 > 解决方案 > 通过mysql数据库对Jmeter进行多用户登录的负载测试

问题描述

我正在使用 Jmeter 对 Java 应用程序执行负载测试。我有一个 mysql 数据库,我想通过它获取用户及其密码以测试登录。到目前为止,我遵循的步骤是:

  1. 在系统上设置 jmeter 并在 chrome 上安装 blazemeter 插件。
  2. 为一位用户通过 blazemeter 登录记录的测试脚本。编辑它以删除所有 HTTP GET 请求,因此该文件只有 HTTP POST 请求。另存为“login.jmx”。</li>
  3. 在 jmeter 上打开 login.jmx,默认情况下添加了所有必需的元素,例如 cookie 缓存管理器等。
  4. 添加了 JDBC 配置以与 mysql 数据库建立连接。
  5. 添加了带有选择语句 SELECT name, passwd FROM t_user 的 JDBC 连接;
  6. 添加了一个结果树并运行了我的脚本,所有 HTTP POST 请求以及 jdbc 请求都在工作,并且所有用户名和密码都出现了。
  7. 为了动态更改 HTTP POST 请求中的用户名和密码,我在 JDBC 请求用户名的 VARIABLE NAME 字段中添加,传递并保存为 OBJECT。
  8. 添加了一个从 1 开始并递增 1 的计数器,以便获取用户直到表结束。
  9. 然后我在参数选项卡中的 HTTP POST 请求中编写了以下语句,其中用户的凭据发送为: {"username":"${_ V(username ${counter})}","password":"${ _ V(pass ${counter})}"} 但是,用户名和密码不是文本,而是我得到相同的代码,如下面的 ss 所示: 我得到相同的变量而不是实际的用户名和密码

谁能指导我可能会出错的地方?

标签: javamysqlauthenticationjdbcjmeter

解决方案


看看你漂亮的截图,我可以看到 JDBC 请求是在 HTTP 请求采样器之后执行的,所以这绝对是正常的,如果你想在 HTTP 请求中使用数据库中的变量,你需要先执行它否则变量会没有被初始化并且不会有它们各自的值。

还值得检查 JDBC 请求是否确实生成了您正在使用Debug Sampler寻找的变量,因为您的${counter}变量也没有被解析。

更多信息:


推荐阅读