使用Jmeter操做数据库数据

工做中操做数据库能够有多种客户端工具能够实现,好比navicat、pl/sql。但性能测试前,一般须要循环插入大量数据,这时就得本身写代码块(匿名块、储存过程等)了。其实也不难写,就是这些造数的代码块和性能脚本每每分开放置,管理起来有些不方便。
刚好在写jmeter脚本的时候发现有JDBC Request Sampler这个东西。了解它的用途后感受只用jmeter工具就能作到造数(脚本)跟测试用例绑定,并且顺利的话一键就能完成数据库(批量)插入数据-(性能)用例执行-数据库清理等工做了。
如今记录下尝试过程,供日后复盘,也但愿对你们小有帮助。
主要是两个步骤:
一、配置JDBC连接
二、写JDBC请求
image.pnghtml

配置JDBC连接
最经常使用的几个配置解释以下,其余的详情见https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration
image.pngjava

例子是基于mysql的,只有标记处的配置才作了变更,其余都默认
image.pngmysql

image.png

写JDBC请求
经常使用配置以下
image.png
下面是实际尝试的例子,其中Result Variable Name的使用是为了给后续其余Sampler传递包含结果的对象。
image.png
为了方便排错,能够加入Debug Sampler。点击运行并查看结果树,实际返回值为:
image.png
若是想要获取结果中第一行的name列对应的值,能够
使用BeanShell 取样器,填写调用语句并打印到日志中。sql

columnValue = vars.getObject("resultObject1").get(0).get("name");
log.info("返回的值"+columnValue);

image.png

为了达到插入大量数据的目的,不可能一条数据一个sql语句吧。这时就要用到参数化了。方法有2种:
一、经过CSV Data Set Config参数化
二、经过助手函数参数化
固然JDBC Request Sampler中也要修改sql语句的
image.png数据库

可能的报错与解决
一、ERROR o.a.j.JMeter: Uncaught exception:
java.lang.IllegalArgumentException: Variable Name must not be empty for element:JDBC Connection Configuration
解决:JDBC Connection Configuration中的Variable Name for created pool不能为空
二、Variable Name must not be null in JDBC Request
解决:JDBC Request Sampler中的Variable Name of Pool declared in JDBC Connection Configuration不能为空apache

相关文章
相关标签/搜索