https://www.bilibili.com/video/BV1st411Y7QW?p=91&spm_id_from=pageDriver
进一步详细信息参考:
软件测试工程师必备之Jmeter操作Mysql数据库
1、Jmeter mysql连接
参考信息:Jmeter----连接mysql数据库及常见问题处理
1、首先安装MySql并建立一个数据库,填充部分数据,
2、在测试计划面板点击“浏览…”按钮,将JDBC驱动添加进来。
驱动下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
mysql-connector-java-5.1.39-bin.jar
3、
添加线程组(mysql数据库查询)——右击线程组——添加——配置元件——JDBC Connection Configuration,根据数据库信息配置相关参数
数据信息
配置信息(注意空格,当变量有空格的时候也作为变量的一部分)
- Variable Name Bound to Pool :数据库链接池名称, 我们可以链接多个Jdbc connection configuration(可以链接多个数据库), 每个可以起不同的名称,在Jdbc request中可以通过这个名称选择合适的链接池进行使用(可以单纯的理解为所有数据库的链接信息都可以通过这个变量名获取)正规操作变量名用字母,不会用数字母 符号和中文
- Max Number of Connection: 数据库最大连接数;
- Max wait(ms):连接等待时长
- Time Between Eviction Runs:连接时长
- Auto Commit : 自动提交。有三个选项, true、false、编辑(自己通过Jmeter提供的函数设置)
- Transaction Isolaltion:事务间隔级别设置,主要有一下几个选项:
Transsaction_node 事务节点
Transaction_read_uncommitted 事务为提交读
Transaction_read_committed 事务已提交读
Transaction_Serializable 事务序列化
Default 默认
Transaction_repeatable_read 事务重读 - Variable Name for created pool: 变量名称可以自定义(mysql_connection)
- Database URL: 连接数据库的URL(jdbc:mysql://localhost:3306/performance_test?allowMultiQueries=true&serverTimezone=UTC&characterEncoding=utf-8),其中localhost:3306连接数据库的IP地址及端口号,performance_test数据库名称,allowMultiQueries=true允许多行查询
- JDBC Driver class: org.git.mm.mysql.Driver, 此属性值固定,指时明数据库类型的驱动
- username:
- password:
4、添加数据库连接请求
右击线程组——添加——取样器——JDBCRequest
2、Jdbc Reques介绍
Variable Name of Poll declared in Jdbc Connection Configuration: 在数据库链接皮遏制中声明的链接池变量名。
Qurry type: 必填,请求类型:增删改——update 查——select
Select statement 这个是查询语句类型:如果只有一条查询语句,则选择这种类型。(即使有多条查询语句,也只会执行第一条查询语句)
Update statement: 这是一个更新语句类型(包含insert和update)如果只有一条更新语句,则选择这种类型(即使有多条update语句,依然执行第一条)
Callable statement 这个是一个可调用语句类型,为所有DBMS(数据库管理系统)提供给一个以标准形式调用以存储过程的方法。如果调用存储过程就选择这个类型。测试很少用。
prepared select statement 是预编译的,对于批量处理可以大大提高效率,也叫JDBC存储过程。所以对于多条查询语句执行选择这个是最好的
prepared update statement 针对的多条设计更新sql的语句。
commit 将为存储的sql语句结果写入数据库表;而Jmeter的jdbc请求中同样可以根据具体使用情况,选择种类型(如无特殊情况,不推荐使用)
Rollback撤销指定sql语句过程,在Jmeter的JDBC请求中,同样可以根据需要使用这种类型(如无特殊情况,不推荐使用)
最新版本中已经具备语句查询直接使用${}引用jmeter变量,所以最后一项也可以不做了解
3 向数据库中插入数据
3.1 单挑插入
3.2多条语句的插入
3.3 插入参数化
利用函数助手进行参数化,或利用CSV这个元件进行参数化
4、解决insert和updata乱码问题
查看数据库编码方式,选择一张表,右击选择设计表,选项中查看
linux mysql查看数据库编码_MySQL查看和修改字符编码的实现方法
5 select多条语句查询
多条语句查询使用prepared select statement 此时结果树种只能查看到一条数据
如果想查看到每一条sql查询结果可以使用 Callable statement
6、Jdbc Request Select 操作参数化
使用站位符
注意:
- Query Type:要选择prepared Select statement
- Parameter values对应sql语句里面的?,有几个问号,就要传递几个参数,但是参数要用都好隔开
- Parmeter Types 参数类型,建议参考数据库表的字段设置(查看数据库中响应字段的类型),也要根参数个数匹配,用逗号隔开。具体用什么类型,可以参考:https://docs.oracle.com/en/java/javase/17/docs/api/java.sql/java/sql/Types.html
直接使用Jmerer变量
6、Jdbc Request Select查询结果处理()
保留字段
注意事项
- Variable names 存储的是查询的字段,一般有几个字段,就用级别变量进行接收,不同的变量之间用逗号隔开
- 可以添加debug sampler来查看参数是否获取到了
查询结果解释:
假设sql语句返回2行,3列,且variables names设置为A,C 那么如下变量会被设置为:
- A_# =2 (总行数);
- A_1=第一列,第一行
- A_2=第一列,第二行
- C_#=2(总行数)
- C_1=第3列,第一行
- C_2=第三列,第二行
- 如果返回结果为0,那么A_# 和C_#会被置为0,其他变量不会设置置
- 如果第一次返回6行数据,第二次只返回3行数据,那么第一次多的3行数据变量会被清除
- 可以使用${A_#}、…${A_1}来获取相应的值
保留结果集
使用Beanshell提取结果集
// vars.getObject()
// vars.getObject()
//log.info("================vars.getObject()========================");
//Object Value = vars.getObject("codeObject");
Value = vars.getObject("codeObject"); //与上一行注释代码相同作用,此处未声明变量类型
log.info(Value.toString()); //输出对象
log.info(Value.get(1).toString()); //获取第一个元素
log.info(Value.size().toString()); //获取对象大小
log.info(Value.get(1).size().toString()); //获取第一个元素大小
log.info(Value.get(1).get("FirstCode"));
// vars.get()
log.info("================vars.get()========================");
log.info(vars.get("levelcode_#"));
log.info(vars.get("levelcode_1"));
log.info(vars.get("levelcode_2"));