一、乱码解决方案
1、jmeter查看结果树乱码
(1)在jmeter的bin目录下找到jmeter.properties这个文件,添加上
sampleresult.default.encoding=utf-8
(2)重启jmeter
2、jmeter body data里面有乱码怎么解决
(1)在jmeter的bin目录下找到jmeter.properties这个文件,添加上
jsyntaxtextarea.font.family=Hack
(2)重启jmeter
二、使用jmeter做接口测试
测试接口之前,得有一个接口文档。我们用以下接口文档来讲解:
账号:xiaohei
密码:123456
打开jmeter,依次添加:线程组、HTTP请求、查看结果树
1、请求方式:get
范例:获取学生信息接口
2、请求方式:post
范例:登录接口
3、请求方式:post,入参是json类型
范例:添加学生信息接口
4、添加cookie
范例:学生金币充值
学生金币充值接口文档: http://doc.nnzhp.cn/index.php?s=/6&page_id=11
5、如何添加header信息
范例:获取所有学生信息
6、文件上传接口
三、jmeter的参数化
1、第一种方法:用户定义的变量
这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
2、第二种方法:函数生成器
函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
(1)随机函数__Random
(2)计数函数__counter
此函数从1开始,每调用这个函数一次它就会自动加1
第一个参数:True,那么每个用户有自己的计数器,可以用于统计每个线程各执行了多少次。False,全局计数器。
第二个参数:重用计数器函数创建值的引用名。测试人员可以这样引用计数器的值:${test}。这样一来,测试人员就可以创建一个计数器后,在多个地方引用它的值。
(3)时间函数__time
hh代表12小时制,HH代表24小时制,如果函数的值什么都不写,则值取时间戳。
注释:时间戳,从计算机发明的那一天到现在过了多少秒(可以百度时间戳转换工具,转换成时间)。jmeter是java开发的,java里面的时间戳默认是精确到毫秒,所以要除以1000才是真正的时间戳
(4)唯一id函数__UUID
这个就是每次会生成一个随机的uuid,都是唯一的
3、第三种方法:从文件中读取
文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码都是我们事先注册好的
添加--配置原件--CSV data set config-添加文件,取名字,在参数中用${你取得名字}代替。
小提示:
如果把文件放在bin目录下,可以只写文件名,不用放绝对路径了。
四、jmeter的关联
调用第一个接口,从接口的返回数据中拿到某个值,放到第二个接口里面来用
举例:登录得到的cookie,传给金币充值接口
1、登录时得到如下返回
{
"error_code": 0,
"login_info": {
"login_time": "20180811173721",
"sign": "f9ed588147c86ca4c600a0bac2b13179",
"userId": 1
}
}
2、于是得到函数(&代表大括号):
$.login_info.sign
3、登录接口下添加“后置处理器--JSON Extractor”,在哪个请求获取数据,就放在哪个请求的下面。
小提示:当返回不是json格式时,可以用正则表达式提取器
4、把函数复制过去,取一个名字比如sessionid
5、在金币充值下添加“HTTP信息头管理器”,在HTTP信息头管理器中添加Cookie
6、填写好金币充值接口
7、执行,我们看到debug已经取到sessionid了,说明执行成功!