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中
  • 后面再执行就可以像上图中一样,登录接口只执行一次,简历列表接口执行多次了。实现正在的压测简历列表接口。
  • 如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的下面的接口运行的次数为两个数值相乘的结果。

【备注】使用命令执行jmeter脚本
jmeter -n -t testplan/one.jmx -l testplan/result/result.txt -e -o testplan/webreport
testplan/one.jmx 为测试计划文件路径
testplan/result/result.txt 为测试结果文件路径
testplan/webreport 为web报告保存路径

四、内容补充

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

重新排版了下,哈哈

你可能感兴趣的:(Jmeter性能实战--实现接口压测完整流程(一))