目录
5、查询的数据如何参数化?以便供api接口请求入参使用获得响应数据
1、下载jdbc驱动:
下载连接:MySQL :: Download MySQL Installer
或者 参考:如何下载MySQL的JDBC驱动包_liaowenxiong的博客-CSDN博客_mysqljdbc驱动包下载
(将下载好的工具包mysql-connector-java-8.0.30.jar放在 xxx\apache-jmeter-5.5\lib\ext文件夹下)
2、JMeter连接数据库的相关操作 可以参考:
JMeter连接数据库的相关操作_仰望_1的博客-CSDN博客_jmeter连接数据库
3、数据库连接driverClass和jdbcUrl大全
数据库连接driverClass和jdbcUrl大全_vebasan的博客-CSDN博客
4、如何插入数据库加密的数据
首先将要插入数据的字段进行加密,使用beanshell取样器进行加密;再将加密的数据进行参数化通过sql语句插入进去。
beanshell中创建参数,beanshell中创建新的参数nickname,赋值为另外一个字符串
vars.put(“nickname”,nickname);引用参数值,任何一个地方均可以${nickname}
源码: import org.apache.commons.net.util.Base64; //String source = vars.get("name"); String source = "哈利波特"; byte[] encodedBytes = Base64.encodeBase64(source.getBytes("UTF-8")); String encoded = new String(encodedBytes); vars.put("b64", encoded);
5、查询的数据如何参数化?以便供api接口请求入参使用获得响应数据
JDBC Request 查询到数据有多条数据,通过调试取样器可以看到
openids_1、openids_2、openids_3、openids_#=3的值
(openids和result是设置的变量名称如图)
将查询的多条数据进行参数化供接口传参使用,使用函数助手生成表达式:${__V(openids_${n})},如图:【函数助手对话框,选择功能函数__V,表达式中输入openids_${n},点击生成函数字符串:${__V(openids_${n},)} 】
新建循环控制器
新增计时器:
可以看到执行结果:
6、JMeter 线程组 多个线程组的执行顺序
线程组执行顺序:setUp 类 -》普通线程 类 -》teatDown 类
【测试计划】界面,“独立运行每个线程组” 选项
勾选中,同一类型线程,根据显示顺序依次执行
不勾选,同一类型线程,并发执行
7、通过参数化实现接口关联
第四条标题中,是一个线程组里只写了一个线程数如下图
但是通过添加循环控制器和计时器进而实现查询数据进行参数化提供给请求接口的入参,一个线程组设置线程数为1,查询到n条数据,可以做到有n个参数就执行n个登录请求。那是不是就可以这样设想:一个线程组设置里面写了m个线程数,查询到n条数据,是不是就可以执行m*n个登录请求。显然比较繁琐的。可以这样实现。小编不知算不算压测的一个测试用例呢?欢迎大家来讨论!下面使用另外一种常见的方式:“只查询数据库最新的一条数据,一个线程组设置n个线程数,里面设置线程1个,执行n个登录请求”的方式。(另一种方式在下一边章节中涉及)
查询数据库最新的一条数据:
设置正则表达式提取器:
查询数据参数化填入接口入参:
执行查看结果:略
模板表示取第几个值:
1.$1$和$0$ 区别就是要不要匹配头完整传出来;(0显示匹配头,1不显示)
2.如果你想获取报文中的第N个字段,有两种方法:
一种使用匹配数字1~N控制,
一种是匹配数字 -1全部返回,变量_序号的模式可以自由选择你需要的第几个数。
匹配数字:0表示随机取值, 1代表取第一个值,-1表示取所有符合条件的值
正则表达式:提取一个或多个参数的方法:
thttps://www.jb51.net/article/230612.htm
8、jmeter并发测试如何保证多线程多请求按照顺序执行
http://t.zoukankan.com/wangjunjiehome-p-14371520.html
由于第二个线程用到第一个线程的响应结果作为请求参数,如果第二个线程跑到第一个线程之前,就会有参数取不到的情况,所以对测试计划的设置做了修改,保证线程按顺序执行
jmeter自带了一个事物锁控制器。
官方把它定义为线程锁控制器(Critical Section Controller)
意思就是这个锁下面的请求,在相同的时间点只会有一个线程去执行它,也就意味着这个锁下面的事物在相同的时间点会给每个线程分配一个,不会产生竞争。
线程组>新增>逻辑控制器>线程锁控制器(临界部分控制器)