Jmeter性能实战–实现接口压测完整流程(一)

  • Post author:
  • Post category:其他


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,有任何问题可以随时来咨询我。



版权声明:本文为PythonCS001原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。