jmeter使用数据库创造批量数据
一,对于工作中创造大量的测试数据一直比较头疼,当然你如果懂python或者java那就比较简单了,除此之外,我们如何搞定测试数据呢?
1,使用jmeter中的csv组件读取excle表格的数据,设定循环次数就可以搞定,但是这种方法需要我们手动去excel中创造很多数据,比较麻烦
2,可以直接操作数据库,但是如果关联表太多,也不是很方便。我们先看一下这个方法吧
二,jmeter连接数据库
1,先在线程组下面的配置原件中添加数据库连接
2,再添加jdbc request
3,准备mysql-connector-java-5.1.31.jar包,放到lib\ext目录中,正常每次打开jmeter都要配置jdbc jar包,这样的操作使jdbc默认配置成功,只需要调用即可(这里配置完了最好重新启动一下jmeter,否则不生效)
4,数据库连接的配置
注意Dababase URL: jdbc:mysql://192.168.3.140:3306/interface_one?useUnicode=true&characterEncoding=utf8
在上面面板中还有个链接名称不能忘记
5,JDBC request的配置
查看结果树中的结果:
数据库中的结果:
很显然数据库中的密码必须是加密的,但是我们这里是明文,不符合规范,那怎么办呢?
首先我们要知道密码加密的方法,一般在公司中我们去哪里获取加密的方法呢?去询问开发或者自己去拿代码(前提是你有代码拉取权限)。如果你没有权限,开发也不搭理你怎么办呢?我们可以在测试环境找到编译的好的代码包,通过反编译工具进行反编译就可以看到源码,在源码中找到加密的方法即可
6,操作过程
1首先提取加密方法,我们需要可以去测试环境上找到已经编译过后的class文件(这个class文件里面必须有加密方法,一般根据文件名可以识别),然后拖到JD-GUI.exe这个反编译工具中,就可以找到加密方法,接着通过idea调试没问题就复制到beanshell采样器中,如图:
2调用类方法--生成加密的字符串--使用内置函数vars.put存到jmeter里面,作为jmeter的变量
3调用变量${}
7,其他操作类型
使用${变量名}的方式来应用外部的变量
先设置用户参数:
再把参数应用到sql中
使用”?“作为占位符,并传递参数值和参数类型
那么我们如何插入大量的数据呢?
首先我们可以使用csv创造出大量数据(如果数据量特别大,可以使用python实现造数据)。如:
我这里有10条数据,我的线程数要10,如:
这是我的执行结果
去数据库查看,数据已经全部插入到数据库中了
三,如何获取jdbc中数据作为下一个接口参数使用
需要注意的几项:
在JDBC Request中添加beanshll 后置处理器
//从数据库返回的对象中获取值
Object result = vars.getObject("sms_code").get(0).get("sms_code");
vars.put("sms_code",result);
因为数据库返回的是一个对象,所以我们要通过vars.getObject("变量").get(0).get("key")的形式来提取里面的值
最终结果如下: