美文网首页自动化测试自动化测试之路python自学
Jmeter性能实战--实现接口压测完整流程(一)

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

作者: orange_ade | 来源:发表于2019-11-19 10:50 被阅读0次
    一、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性能实战--实现接口压测完整流程(一)

        本文链接:https://www.haomeiwen.com/subject/rmhwictx.html