目录
一、测试计划
jmeter中测试计划是用来管理我们jmeter中要进行的元件的
常用的八大元件有
配置元件:主要是配置一些jmeter运行需要用的一些基础数据
前置处理器:请求前置处理,类似于postman中的scripts中的pre request
定时器:控制请求与请求之间的时间间隔
后置处理器:对请求完成之后响应的数据进行处理的,类似与postman中的scripts中post response
断言:用程序代替人工来判断响应结果是否符合预期不符合
监听器:用来展示jmeter运行的结果的
逻辑控制器:用来控制jmeter脚本运行的逻辑的。
取样器(采样器):用来提交接口信息的
二、基本的操作步骤
接下来介绍基本的操作步骤
1、添加一个测试计划
2、在测试计划中添加一个线程组
3、在线程组下添加一个http取样器
4、在取样中添加一个监听器,查看结果树
常见的元件执行顺序:
配置元件 -> 前置处理器 -> 定时器 -> 取样器 -> 后置处理器 -> 断言 -> 监听器
jmeter中常见元件的作用域
取样器:作用域作用到本身
逻辑控制器:他的作用域是对其内部的子节点起作用
其他六类元件有着共同作用域特点:
当这六类元件的父节点是取样器的时候,那么他们只对这个取样器起作用。
当这六类元件的父节点不是取样器的时候,那么他们会这父节点还有父节点下子节点还有子节点子节点起作用
线程组
是用来产生虚拟用户的,当我们做接口测试的时候,这个时候,线程组不需要做任何设置
线程组中,他的线程属性分别代表什么意思
线程数:指的就是我们要模拟的虚拟用户数
ramp-up时间 准备时长 启动虚拟用户所需要的时间
循环次数:虚拟用户要执行脚本次数,如果选择永远,则脚本会一直运行
调度器:选择调度器后可以指定脚本的运行时长,但是要配合循环次数永远一块使用
持续时间:脚本要运行的时长
启动延迟:点击开始后,推迟多少秒开始执行脚本
注意:如果有多个线程组同时存在,则他们在运行的时候是并行运行。如果我们想要线程组按照先后顺序执行,怎么我们可以在测试计划中选择独立运行每个线程组
setup线程组和teardown线程
他们两个是特殊的线程组,特殊点在于他们运行的先后顺序上,默认执行先执行setup线程,然后执行普通线程组,然后再执行teardown
在测试计划中选中独立运行每个线程组也不会对setup和teardown有影响
取样器
协议:就是接口url地址中协议
服务器名称或ip地址:接口地址中的域名或ip地址
端口号:接口中端口号
请求方法:接口中提交方法是什么,我们就选择对应的提交方式
路径:接口中的端口号后面的资源地址
内容编码:防止提交的数据中文乱码一般写入utf-8
如果选择自动重定向则将来结果只展示最后一个请求信息
如果选择跟随冲抵想则将来结果会展示所有经历过的请求
对post使用multipar/form-data 做文件上传或者下载时候要把这个选项选中
参数:就是接口要提交数据,get类型的提交或者是post类型的表单提交,可以把数据写到这个地方
参数添加
无论是get还是post表单提交,都是在这里写值的,不需要和postman一样切换
如果有上传文件的操作,我们就点击文件上传
关于MIME类型可以参看如下:
两种主要的 MIME 类型在默认类型中扮演了重要的角色:
text/plain 表示文本文件的默认值
application/octet-stream 表示所有其他情况的默认值。
常见的 MIME 类型
超文本标记语言文本,html、.html:text/htm1
普通文本.txt: text/plain
RTF 文本 .rtf:application/rtf
GIF 图形 .gif:image/gif
JPEG 图形 .jpeg、jpg:image/jpeg
au 声音文件.au: audio/basic
MIDI音乐文件 mid、.midi: audio/midi、audio/x-midiRealAudio 音乐文件 .ra、.ram:audio/x-pn-realaudi0
MPEG文件.mpg、.mpeg:video/mpeg
AVl 文件.avi:video/x-msvideo
GZIP 文件 .g2:application/x-gzip
TAR 文件 .tar:application/x-tar
如有需要更详细的可以参考菜鸟文档
全局变量
有时候我们有很多个接口要写,所以一个一个写地址会非常麻烦,jmeter也可以跟postman一样配置全局变量直接使用,这里介绍三种方式
第一种
直接在测试计划中找到全局变量,点击添加即可,添加内容跟postman一样
使用方法:
跟postman不一样的是postman使用是"{{}}",而jmeter是"${}"
第二种
找到 "用户定义的变量" 中添加全局变量
使用方法跟第一种一样
第三种
这种最实用最简单
创建一个 HTTP请求默认 的元件,在里面输入我们想要的内容
然后在下面使用中你定义的默认值都不用写了,空着就是代表默认是HTTP请求默认元件中的内容,如果你加上了东西,比如改成了www.baidu.com,他就优先是你改的
关闭某一个测试
有时候我们想让某一个测试的接口不执行,我们不需要删除,只需要把它 "注释" 掉即可,等以后再用了就取消 "注释"
选中你想 "注释" 的测试接口,点击红框中的,编程灰色了就说明已经 "注释" 掉了,再执行的时候就不会再执行了
全部执行
我们上面都是把结果树放到了取样器中了,这样只能执行这一个,如果想要执行线程组中的所有接口一起测试的话在线程组同一级下面添加一个结果数就可以了
然后点击结果树,点击上面的运行即可运行此线程组中所有的取样器
关联
jmeter提供的有一个类似于postman关联的元件,可以用来做需要登录才能操作的接口,原理依旧是提取登录的token值
我们先添加一个边界提取器
引用名称可以随意命名,但是不能是中文
左右边界指的是你要提取的内容的左边和右边,这中间的是我们要的token值
匹配数字,指的是如果有多个匹配这个边界值内的值的话我们提取哪一个值
-1 提取所有值
0 提取随机值
1 提取第一个值
2 提取第二个值
...
这里只有一个值,所以 -1,0,1都可以
缺省值:没有对应的值的话就给一个默认值,这里我就写一个 null
登录的值有了接下来对需要传值的接口添加一个 HTTP信息头管理器
这里面第一写我们的token,注意这个不是乱写的,跟Key值是一样的,后面跟刚才的边界提取器中的 "名称引用"
最后我们看到结果
提取信息查看
上面是提取了token值拿来用了并没有输出,如果我们想要内容中的比如说名字,我们也可以用边界提取器
比如这里我想要名字
我就开始提取,步骤跟上面的一样
这里要提取全部的,就写 -1
然后添加一个Debug Sampler(调试取样器),在这里面再添加一个查看结果树元件
然后我们运行,看结果
数据已经提取出来了
下一篇会继续讲