• 巧用jmeter逻辑控制器,解决压测中的登录问题


    对一个系统的指定功能进行压力测试时,发现把登录接口一起做了压力测试,那么 如何在保持登录情况下,单独对指定接口进行压力测试呢?

    一、压力测试目标

    对接口A进行X次压力测试(本文示例压测10次)

    二、脚本设计思路


     

    1. 接口请求头

    2. 【系统登录】接口请求

    3. 【系统登录】接口断言

    4. 获取token

    5. 【子系统登录】接口请求

    6. 【子系统登录】接口断言

    7. 获取cookie

    8. 子系统的功能接口A请求:

    a) 添加请求cookie管理器

    9. 子系统的功能接口A断言

    10. 监听器

    三、脚本解说

    ✅ Logic Controller

    逻辑控制器,主要用于控制jmeter脚本运行的逻辑:

    1. Once Only Controller仅一次控制器:主要用于控制登录接口,确保压力测试过程中,登录接口只运行一次即可

    2. Loop Controller循环控制器:用于控制需要进行压力测试的接口,可以循环执行N次

    ✅ HTTP request

    HTTP接口请求,主要用于编辑接口请求的域名(server/IP)、路径(path)、请求数据(request body)

    ✅ HTTP Header Manager

    请求信息头,主要用于保存接口请求的header信息,规定接口响应数据的格式

    Content-Type=application/json;charset=UTF-8

    ✅ Regular Expression Extractor

    正则后置处理器,主要用于从接口的响应体内提取对应的token或cookie信息(需要掌握正则表达式基础语法)

    ✅ Debug PostProcessor

    后置调试器,用于调试查看后置处理器生成的变量信息;本文主要用于查看后置处理器Regular Expression Extractor提取成功的token和cookie变量值

    ✅ Assertion

    实现断言功能,从接口的响应体内提取指定的字段,赋值期望值,脚本运行时通过对比期望值和实际值是否一致,来验证接口请求是否成功。

    ✅  Listener

    监听器,通俗点说就是测试报告,jmeter提供了多种测试报告格式,本文主要使用View Results Tree、Aggregate Report两种格式,第一种用于查看接口请求的详细日志信息,第二种用于查看接口请求的耗时等性能信息。

    四、脚本正文

    1.脚本结构 


     

    2.HTTP request示例-post请求


     

    3.HTTP request示例-get请求 

    由于使用正则表达式匹配获取token,所以会匹配到多个数据,此时可在“调试器”内查看具体token在哪个变量上,引用时填入具体变量名称即可


     

    上图可看到,子系统登录接口请求需要的token在变量“tokenlist_g1”上,故接口入参直接引用变量${ tokenlist_g1},如下图:


     

    4.HTTP request(压测接口)

    1) 添加cookie管理器


     

    2) 发起请求时会自动获取cookie信息

    接口请求配置与上面两个http请求一致,均需要包含域名、路径、请求方法、请求体


     

    5.JSON Assertion

    由于本文案例的接口请求响应数据都是json格式,所以使用json断言。

    响应结果如下:


     

    上图可知,通过判断响应结果的description字段值,来判断接口请求是否成功

    对应的断言配置:


     

    其他接口的断言也可按上述方法设置。

    6.逻辑控制器

    接口完整请求编辑好后,引入逻辑控制器来控制“登录模块”以及“需要进行压测的接口模块”

    将登录相关接口,移动到“Once Only Controller”下,确保执行脚本时,该脚本仅运行一次

    将需要进行压测的接口,移动到“Loop Controller”下,确保可以循环运行。


     

     

    7.监听器

    本文使用两种监听器存储测试报告

    监听器要添加在线程组(Thread Group)上,才可监听所有请求的测试报告,如下图


     

    五、脚本运行结果


     

     


    作  者:兜里有糖

    出  处:微信公众号:自动化软件测试平台

    版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

  • 相关阅读:
    struts2标签处理下拉列表
    JS中parseInt使用问题解析
    使用jquery异步无刷新删除
    html中table标签的td标签居中左(右)对齐
    struts2拦截器来防止sql注入
    在S2SH中调用返回参数的存储过程
    使用jquery的getJSON从服务器端获得数据
    【vue】vuecli中 对于public文件夹的处理
    oracle10新建表时大小定问题
    会议记录
  • 原文地址:https://www.cnblogs.com/testfan2019/p/13998189.html
Copyright © 2020-2023  润新知