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")的形式来提取里面的值

  

 

   最终结果如下:

  

 

   

posted @ 2020-04-25 16:16  老僧观天下  阅读(1162)  评论(0编辑  收藏  举报