设置中文编码集
Jmeter默认是不支持中文的,如果出现中文会出现乱码
可进入到Jmeter的安装目录/bin下,修改jmeter.properties文件
找到注释的这段代码
#sampleresult.default.encoding=ISO-8859-1
向下复制一行,打开注释,修改值为utf-8
重新打开Jmeter,即可生效
顺序执行和并发执行
勾上是顺序执行,否则是并发执行
优先和最后执行线程组
setUp是优先执行线程组,tearDown是最后执行线程组
与是否勾上顺序执行和并发执行没关系
Http请求默认值
配置统一请求选项,避免重复操作
在里面配好统一的配置
之后再构建新的请求时只需要填变化的部分
Http消息头管理器
在发送post请求添加数据时,需要再请求头中添加一些内容,这些内容就填在这
其他的如授权头也一样
用户自定义的参数
-
定义数据
-
使用数据
CSV批量添加参数
-
CSV
逗号分隔值,是一种简洁且常见的数据存储格式
-
创建方式
使用记事本新建一个文件,使用逗号将数据分隔
另存为,另存的时候要设置字符集为utf-8
-
使用Jemter打开对应文件
第三条是变量名配置,与文件里的对应,使用的时候写${变量名即可} -
使用一个post请求测试
-
需要注意的是,在线程组的配置中,将循环次数勾选上永远,这样csv中有多少条数据,就会执行多少次
添加用户参数
用户参数是用户手动添加的变量参数数据
修改线程组配置,有几条数据就创建几条线程
填入参数
测试结果
函数
打开函数助手
需要什么函数选择,配置,生成,复制,将复制的代码复制到需要使用的地方
比如用在名称上
比较常用的函数有:
count:计数器函数,可选是全局计数还是独立计数
random:随机数函数,可选最小值和最大值,是闭区间
time:时间戳函数,从1970开始计算的毫秒数,可配置时间格式
直连数据库
导入连接数据库所需jar包,可以去maven仓库里找,添加到下面
添加完成后,创建jdbc连接测试
添加jdbc连接配置,配置连接池和数据库信息
平时怎么配就怎么配,Variable Name是连接池的名字,随便取
配完信息后就在回到jdbc请求的中间区域里填需要测试的sql语句即可
测试结果
将数据库得到的结果设为变量使用
添加调试取样器
设置变量前缀,随便取
测试结果
可以看到获取到的结果前面都加上了自定义的前缀,相当于将查询到的结果绑定到前面的变量里
添加一个http请求测试,使用变量
响应断言
添加响应断言
响应文本,也就是响应的信息,配置规则里有多种匹配方式
如下图可见,响应成功,但因为不符合我们设置的断言规则,所有报红
响应代码也就是响应码,例如200是响应成功,一样的使用
大小断言
就是判断响应内容大小的断言
具体大小可以看响应里
一样的设置参数即可
值得注意的是,这里填的数字标识的是byte字节数,不是具体的数字
持续时间断言
也就是判断响应的时间,单位是毫秒
if逻辑控制器
将需要就行if逻辑控制的请求拖到控制器下方
添加用户变量
配置if逻辑控制
记得把下面的勾去掉,判断的语法是某个变量==某个值
如果不相等就不会执行
比如当前==“aaa”,所以不会执行http请求
只有当"${name}"=="xiaohong "时才会执行
foreach逻辑控制器
该控制器会循环的使用自定义变量里的数据
添加foreach逻辑控制器和用户自定义变量
配置foreach逻辑控制器
第一个参数是自定义配置里的前缀,后面有个勾选,程序会自动添加’_’
第二个参数是开始下标,开区间
第三个参数是结束下标,闭区间
第四个参数是循环到的结果该辅组给什么变量,自定义名字
使用foreach逻辑控制器
循环逻辑控制器
如果直接在线程组里配置循环次数
请求1和请求2都会执行10遍
如果想实现请求1循环2次,请求2循环5次
就需要使用循环控制器
第一个循环控制器配2,第二个配置5即可
但记得要先把线程组里的循环次数改为1
xpath提取器
提取器的作用是从响应结果的中提取标签中的内容
添加xpath提取器
将提取器放到需要提取的请求下方
配置xpath提取器
勾上该选项才会取匹配标签查找
第一个参数是将提取到的结果赋值该什么变量,自定义变量名
第二个参数是xpath语法,这里的意思是匹配title标签里的值
第三个参数是获取第几个匹配到的值,-1表示所有,0代表随机,1代表第一个
第四个参数是如果没有找到填什么值
使用xpath,将xpath得到结果用于百度查询
正则提取器
添加正则提取器
配置正则提取器
第一个参数是提取结果存放变量
第二个参数是正则表达式
第三个是使用哪个正则模板,我们这里只有一个正则表达式,所以就只填 1 1 1,一般也就只是这个
第四个参数是获取匹配到的第几个值,-1所有,0随机,1第一个
第四个是没有匹配结果的时候的值
测试
略。。。。
跨线程池传值
创建两个线程池
给第一个线程池加一个xpath提取器,将提取到的结果存储到val中
要想在第二个线程池中拿到第一个线程池中提取的val,就需要将val存储到全局的变量中,同时,还需要设置线程是顺序执行的
设置全局变量
打开函数帮助窗口,选择设置setProperty函数,配置好需要设置的参数
将生成好的表达式复制进去
那如何取出定义的变量呢?
来到另一个线程池中
打开函数帮助面板
将生成的表达式粘贴到需要使用的地方
测试
成功获取到值
高并发测试
需求: 同一时刻100个请求去访问服务器,统计服务器的平均响应时间以及错误率
创建请求
创建100个线程,代表100条请求
创建同步定时器,设置每组100条请求,也就是每次100条并发
超时时间不要写0,不然当总请求数除不尽每组请求数时会一直等
添加聚合报告
测试
测试高频率
需求:一个用户以20QPS(1秒钟20次)访问服务器,持续15秒,统计服务器的平均响应时间
设置请求,添加聚合报告
略
添加常数吞吐量计数器
配置常数吞吐量定时器,这里的值是每分钟的,也就是20x60
配置线程数,按题目要求,也就是说一个线程(一个人)一共访问了300次(20x15)
测试结果(我这还没跑完)
分布式测试
多台机协作,以集群的方式完成测试任务,可以提过测试效率
环境搭建:
- 不同的测试机器上安卓Jmeter
- 配置基础环境,统一操作系统、JDK、Jmeter等
- 核心:控制机如何与执行机通信?关键点:端口号
- 控制机中设置执行机的IP
在控制机的Jmeter的安装目录/bin/jmeter.properties里
找到remote_hosts=执行机的IP:端口号,执行机B的IP:端口号…
5. 控制机和执行机都设置远程访问的相关属性
server.rmi.ssl.disable=true
6. 执行所有Jmeter的jmeter.bat
7. 点击控制机的运行,远程执行所有
弱压力测试练习
模拟半小时之内1000个用户访问服务器资源,要求平均响应时间在3000ms内,且错误率为0
生成图像化测试报告
将需要生成的的脚本文件放到Jmeter的bin目录下
在当前目录打开cmd
执行以下命令
jmeter -n -t 脚本文件 -l 日志文件 -e -o 输出目录
-n 无图形化运行,也就是命令行运行
-t 被运行的脚本
-l 将运行信息写入日志文件,如果写的文件不存在,会自动创建,如果存在,需要保证是个空文件
-e 生成测试报告
-o 指定报告的输出目录,如果写的目录不存在,会自动创建,如果存在,需要保证是个空目录
执行命令
找到输入的目录下
浏览器打开index.html即可看到图形化报告了