目录:
3.3.11 传参的使用(get、post、files、upload)
Apache JMeter是Apache组织开发的基于Java的压力测试工具。
开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件
支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,
入门简单相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
多平台支持,可在Linux,Windows,Mac上运行
支持多协议
接口测试
性能测试
压力测试
Web自动化测试
数据库测试
windows 下 jmeter下载安装
登录 http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件
安装JDK, 配置环境变量
验证jdk是否配置成功
win + r:进入cmd 没窗口
将下载jmeter 文件解压, 打开/bin/jmeter.bat
注意:在windows环境下启动时黑窗口一定不要关闭,否则,jmeter 无法启动
/bin 目录 (常用文件介绍)
examples:目录下包含Jmeter使用实例
ApacheJMeter.jar:JMeter源码包
jmeter.bat:windows下启动文件
jmeter.sh:Linux下启动文件
jmeter.log:Jmeter运行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下启动负载生成器服务文件
jmeter-server:Linux下启动负载生成器文件
/docs目录——Jmeter帮助文档
/extras目录——提供了对Ant的支持文件,可也用于持续集成
/lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
/licenses目录——软件许可文件,不用管
/printable_docs目录——Jmeter用户手册
第三方插件目录路径:D:installjmeterapache-jmeter-4.0libext
测windows服务器:
测linux服务器性能指标:
首先需要知道所有东西都是基于测试计划去执行操作额,也就是说这个测试计划相当于根目录
组件1:线程
标红的 jp@ 开头的是第三方插件,原本是没有的
第三方插件主要位置如下
1)右击添加一个线程组
2)右击线程组查看监听器------》第三方插件
3)查看CPU和内存的插件
4)查看TPS 的插件
5)线程组用来测试数据库的功能按钮
6)预期结果和实际结果的对比
7)接口较多时需要用到定时器,他们之间需要有一个等待的时间
8)前置处理器====》用户参数:用户的设置在用户参数里配置好了的
9)后置处理器===》正则表达式提取器:多个接口之间有关联的,第一个接口响应的数据可能是第二接口请求的参数
10)配置原件:接口和本地数据的关联
11)监听器:监听接口的返回数据,常用的是查看结果和聚合报告
这里使用免费测试接口===》测 qq 吉凶 来演示
验证测qq吉凶这个接口通不通,操作如下
1)比如说你拿到的接口文档如下
2)使用jmeter,http 请求进行测试
3)启动测试脚本
保存接口脚本
4)查看测试结果
此时证明接口是通的,那么我们就可以进行并发操作了!!!
5)聚合报告参数详解
label: 显示接口名字
samples:跑了多少并发 (可通过点击线程组进行设置)
average:平均响应时间,单位是毫秒
median:50%的人请求响应时间
90%line:90%的人请求响应时间
95%line:95%的人请求响应时间
min:最小响应时间
max:最大响应时间
error%:错误率
throughput:吞吐量,单位时间内请求的次数
1)右击测试计划在取样器中找到线程组并添加
2)线程属性使用详情(结合查看结果树和聚合报告使用)
添加一个http请求演示
运行结果如下
这里设置开启10个线程,规定1秒内完成,循环次数为2,所以最后结果相当于将百度的http请求循环了20次,也就是请求了20次
1)添加
2)结合压测使用
3)清空之前的数据
4)运行结果如下
1)添加
2)设定时间为3秒
3)运行查看结果
你会看到其他请求响应变慢,3秒后请求成功
3.3.4.1 响应断言
1)添加
2)添加你想要的结果,测试响应后的内容中是否包含
3)运行查看效果
添加无效的关键词的返回结果(爆红证明没有)
添加有效关键词
3.3.4.2 json 断言
聚合报告------QQ测吉凶
1)添加对应的http 请求
2)测试接口通不通
3)添加json断言
4)填写对应的断言信息
默认勾选的是 正则表达式
5)查看运行结果
6)修改返回值为错误的并运行看结果
这里使用免费测试接口,测试星座运势
https://www.juhe.cn/box/index/id/58
1)添加csv 数据文件设置
2)在本地新建一个 txt 文件并写入内容
3)指定本地的 txt 文件
4)更改http 请求中的参数为自定义参数
使用下方的手动填充参数时,需要勾选编码
5)运行测试查看结果
是否再次循环处于打开状态(true)
txt 文件中的参数有 5 行及对应的日期
设置循环次数为6次
结果如下
你会发现第6次返回的结果和第一次的结果是一样的
是否再次循环处于关闭状态(false)
你会发现第6次的结果为空,请求不到数据了
测试百度为例
1)添加循环控制器
2)将百度请求下拉到(添加到)循环控制器
注意:如果不把请求添加到循环控制器,那么你的循环效果是无效的
无效:
有效:
3)添加循环次数并查看效果
1)添加
2)在事务控制器下添加3个http请求
3)具体使用
勾选Generate parent sample
此时它会将这个3个http请求看成一个整体
运行结果如下
不勾Generate parent sample
此时运行后会请求3次并且加一个事务控制器,也就是显示4项内容
运行结果如下:
在使用过程中,本地建的txt 路径粘贴到函数助手,点击生成字符串时有可能会出现报错,我们可以将报错信息中的路径复制一下重新粘贴到需要粘贴路径的位置,其实两个路径都是一样的,但是报错了,所以我们就用报错中的路径,如果还是不能解决问题,我们可以将txt文件放在jmeter的bin目录下,这样就能够彻底解决问题了
1)添加http请求以及聚合报告和查看结果树
2)以测试新闻头条为例
找到函数助手并添加本地txt文件的路径
选择 _CSVRead
找到本地 txt 文件的路径
注意:使用函数助手生成函数字符串时,解析出来的中文是乱码,需要自己上网解决
粘贴到名称对应的值中(值为0,第一个参数)
粘贴到名称对应的值中(值为1,第二个参数)
修改http 请求中的参数值为生成的字符串
设置开启的线程数为7 (txt文件中参数共6条)
运行效果如下
1)添加 http 请求
2)添加用户自定义变量
3)调用自定义变量
4) 复制当前http请求,多复制几个,方便看效果
5)查看运行结果
运用Jmeter正则提取器,可以从请求的响应结果中取到需要的内容,从而实现关联。关联是请求与请求之间存在数据依赖关系,需要从上一个请求获取下一个请求需要回传回去的数据
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
示例:
第一个接口返回值可能是第二个接口请求的参数
这里以测试新华字典和成语词典为例
比如:
汉字:为
成语:为所欲为
我们使用正则提取成语的为
1)添加基本请求以及聚合报告和察看结果树
2)测试俩个接口通不通
返回结果都是绿色的并且在响应数据中也能看到对应的内容,此时证明这俩个接口都是通的
3)添加正则表达式提取器
4)编辑正则表达式
5)调用正则提取器中的引用名称并填在成语词典的请求参数中
6)运行看看效果
如果想要对比一下的话,可以再将参数改成"为"
说明:
1.引用名称:
下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
2.正则表达式:
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
3. 模板
用 $$引用起来,如果在正则表达式中有多个正则表达式,则可以是 $2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值
4. 匹配数据
0代表随机取值,1代表全部取值,通常情况下填0
5. 缺省值
如果参数没有取得到值,那默认给一个值让他取。
3.3.11 传参的使用(get, post, files, upload)
get传参
post 传参
post传递的是一个json串,而且你在接口文档中复制粘贴的json串可能会出现一些小错误,是开发那边编辑接口文档时不规范造成的,所以说一般情况下我们测接口是不用jmeter的,使用postman更方便!!!
files upload 用来传文件的