jmeter接口测试
jmeter是java开发的开源的性能测试工具。需要安装jdk,修改java环境变量,windows操作系统直接执行jmeter中bin目录下的jmeter.bat文件(免安装)
1.解决乱码问题的配置修改:
jmeter返回中文乱码:
1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把sampleresult.default.encoding=UTF-8加到最下面
2、重新打开jmeter
jmeter bodydata里面中文乱:
1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把jsyntaxtextarea.font.family=Hack加到最下面
2、重新打开jmeter
2.jmeter接口测试常规步骤:
testplan>>线程组>>取样器下的 http请求>>监听器下的 查看结果树
例1 get方法:
例2 post方法
如果需要有cookie信息的,则需要在登录操作之后获取cookie值,例如用谷歌浏览器,获取到cookie信息,然后加入到jmeter的消息头管理里。
例如:需要获取QQ群成员的信息,网址:https://qun.qq.com/member.html#gid=XXXX(qq群号)
将cookie值添加到消息头管理器中:
填写数据,在谷歌上查到发送的数据如下:
在jmeter的http请求里添加参数:
例3 通过post方法上传文件:
在输入完协议,服务器名称,方法,路径后,点击“文件上传”,点击“添加”,在参数名称那里输入接口文档中上传文件的参数名,然后点击“浏览”,在本地选择文件,mine类型如图所示。
例4 参数为json格式:
当接口文档中明确指出数据类型为json格式时,必须选择"消息体数据"
五.jmeter三种参数化的方法:
1.csv data set config:
csv数据文件设置是在"配置元件"下,是一种通过导入外部文件的形式将数据参数化,方便进行大批量的参数化,或者多个参数取值顺序相同的,比如取值的顺序为同一行。
文件编码:如果文件中的数据包含中文,则在下拉框中选择“编辑”然后手动输入GBK,一般都是utf-8格式
变量名称:多个变量名称需要用逗号隔开,一个变量则不需要
忽略首行:如果首行有变量名(比如从数据库复制过来带有字段名),则可以选此项,一般不会有
是否允许带引号:文本数据取值后自动带上引号,一般不用
线程共享模式:所有线程表示所有线程共用一份数据,依次取值,其他模式都是多份数据,有几个线程就有几分数据文件,每个线程可以取相同的值
遇到文件结束符再次循环:文件结束符为EOF,该设置要在“遇到文件结束符停止线程”选择“false”的情况下才有效,此时如果遇到文件结束符再次循环选择“true”,则一份文件的数据可以循环用,如果选择“false”,则数据会取值“EOF”
2.用户参数:
取值灵活,对取值顺序没有要求,可以在任何地方取值,在“前置处理器”中选择。
3.函数助手:
在里面常用的有随机数和时间,以随机数为例:
找到__Random函数,按照要求输入范围,在这里为1-99的随机值,然后点击“生成”,函数生成为${__Random(1,99,)}。
常用的函数还有时间戳:从计算机诞生的那一天到现在过了多少秒,__time 取当前的时间戳,如果要取格式化好的时间,YYYY MM dd HH mm ss,格式可以自定义拼接。
在jmeter里,变量的使用方式是在需要替换的地方用${变量名}。
六.jmeter关联:
关联是从服务器响应结果里提取值作为一个变量,需要关联的数据是服务器每次返回的一个动态变化的,但是要给后续业务进行提交校验的一个值。
jmeter的关联有两种常用格式:josn提取和正则提取。 josn的提取只用在返回的数据为josn格式的情况下。正则没有格式限制。
1.josn提取:
例如一个抽奖接口:如要传入的参数是在用户登录的时候,返回的用户id和sign值,这种情况下就需要关联:
返回的数据是josn格式,所以可以用josn提取:线程组下添加后置处理器中的json提取器
登录成功后,服务器返回结果如下:
在此我们要获取sign和userid,要设置两个json提取,其中的apply to有几个选择,main sample and sub-samples是在有重新向跳转的时候选,一般选
main sample only.
2.正则提取:
josn格式返回是键值对,但是里面的键值对是无序排列的,可以看出,最后一个键值对没有以逗号结尾,在用正则写的情况下会比较麻烦,如果写的不好,当每次键值对顺序不一样会导致提取不成功,所以josn格式最好用josn提取,在此用上面个例子写出正则提表达式(在此不接受正则表达式规则)。
如下图中,“模板”是以$N$的形式,N是代表数字,一个正则表达式里可以提多个值,数字可以是1,2,3,表示从第几个正则表达式里提,模板之间也可以拼接,例如有3个正则提取,则正则表达式里有三个()的形式,例如分别要提取年月日,则模板可以写成$1$-$2$-$3$,则提取出来就是2018-11-08的形式。
“匹配数字”用于一个正则提取有多个值得形式(正则表达式有贪婪和非贪婪模式,贪婪模式下可以获取多个结果),数字表示匹配到的第几个结果,0是随机一个。
提取出来的结果传入抽奖接口: