Jmeter性能实战–实现接口压测完整流程(一)
一、Jmeter软件下载及环境准备
官方下载地址:
http://jmeter.apache.org/download_jmeter.cgi
分享001.png
下载完成后直接解压进入bin目录找到jmeter.bat文件双击打开
分享002.png
看到图片上方可以看到需要Java环境,搜索jdk下载:
https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html
分享003.png
jdk安装:
1.系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(本人是 C:\Progrom Files\Java\jdk1.8.0_141);
2.系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
3.系统变量→新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)
系统变量配置完毕
4.检验是否配置成功 运行cmd 输入 java-version
二、Jmeter压测步骤
1、测试计划–右键add–Threads–Thread Group , 添加线程组
分享004.png
2、线程组的基本配置如下,表示开启5个线程,间隔1s发送,循环一次,具体数值可以根据自己的需要去修改;
分享005.png
3、线程组–右键add–ConfigElement–HTTP Header Manager,输入Content-Type=application/json,表示接口请求的默认设置;
分享006.png
4、线程组–右键add–Sampler–HTTP Request ,添加HTTP登录接口请求(数据请求格式有两种:Parameters、Body Data)
分享007.png
5、线程组–右键add–Assertions–Response Assertion ,给登录接口加个断言
分享008.png
6、线程组–右键add–Post Processors–-JSON Extractor ,获取登录接口返回的token
分享009.png
7、获取token的位置方法:(从结果树中查看接口返回数据)
分享010.png
例如:
要获取字段job_title_id,则为:$.user_info.job_title_id
{
"result": true,
"user_info": {
"job_title_id": 123,
"branch_office_name": "****上海分公司"
}
}
要获取数组中的creator_info,则为:$.data.result[0].creator_info $.data.result[*].creator_info则表示获取所有result下的creator_info
{
"result": true,
"code": 10000,
"data": {
"result": [
{
"branch_office_name": "广州",
"creator_info": "chen.tan",
"department": "产品部"
}
]
}
}
8、线程组–右键add–ConfigElement–-HTTP Header Manager,输入Content-Type=application/json,表示接口请求的默认设置,并将登陆接口中获取的token变量添加进去
分享011.png
9、线程组–右键add–Sampler–HTTP Request ,添加HTTP获取简历列表接口请求
分享012.png
10、线程组–右键add–Listener–View Result Tree ,添加察看结果树观察接口返回
完成脚本内容.png
三、优化
- 上面会有一个困扰很多人的问题。情景如下:业务流程:登录一个网站,反复访问简历列表。通常的做法是使用jmeter对登录和简历列表的接口进行反复的执行:
- 这样就会导致在进行压测的时候,可能把登录接口也一起压了。因此,就需要用到jmeter的逻辑控制器了。
- Jmeter官网对逻辑控制的解释是:Logic Controllers determine the order in which Samplers are processed。翻译一下:逻辑控制可以控制采样器(samplers)的执行顺序。
- 线程组–右键add–logic Controller–Once Only Controller–将其拖动到登陆接口上面–再将登陆接口移动到Once Only Controller中
- 线程组–右键add–logic Controller–Loop Controller–将其拖动到简历列表接口上面–再将简历列表接口移动到Loop Controller中
- 后面再执行就可以像上图中一样,登录接口只执行一次,简历列表接口执行多次了。实现正在的压测简历列表接口。
- 如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的下面的接口运行的次数为两个数值相乘的结果。
四、内容补充
1、解决jmeter中HTTP请求返回结果乱码的问题:进入Jmeter的bin目录下,找到jmeter.properties文件用文本或notepad++打开,找到sampleresult.default.encoding这个参数,此行默认是注释的。可以看到说明,默认值是ISO-8859-1,将ISO-8859-1修改成utf-8,去掉注释符号,重启Jmeter。问题解决
分享013.png
2、对传参进行参数化,例如:如果字段为可变的则用${****}形式表示
参数请求.png
3、线程组–右键add–ConfigElement–-CSV Data Set Config ,配置所传变量文件路径
分享015.png
4、手动新增好数据集文件,可以用excel文件造好数据后复制进txt文件中
分享016.png
如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。