zoukankan      html  css  js  c++  java
  • 使用jmeter进行审批类接口并发测试

    背景:

    页面上单据审核操作,单据并发操作时会多笔成功提交,出现提交多个支付申请的问题

    难点:

    • 数据自动创建
    • 接口请求需要登录后执行
    • 动态获取审核单据的请求参数
    • 最大限度模拟并发操作,降低请求间隔

    解决思路:

    • 使用数据抛送接口创建数据
    • 使用jmeter头和cookie管理器,保存登录session
    • 通过查询类接口,获取审核请求所需参数
    • 线程组添加同步定时器,确保请求的同时性

    具体实现:

    1. 使用数据抛送接口,来进行数据的创建,有以下注意点
    • 随机生成项目单据号,确保数据可创建成功
    • 保存创建数据的项目单据号,方便之后查询接口使用

      2. 在实现登录和提交操作时,进行了两种场景模拟

    场景a:

    使用单用户登录,模拟同一用户多浏览器登录进行并发提交。起初将登录和提交请求放到同一线程组中,但是发现在短时间内使用同一用户进行单点登录时,会有部分登录报错,故将登录请求单独放置在一个线程组中,提交请求放在另一线程组,之后将登录线程组中cookie传输到请求线程组中(此种方式其实是模拟单用户在同一浏览器多开并发)。

    由于登录和发送请求设置不同线程组,需要在线程组间传递cookie,具体为需要修改jmeter.properties文件,设置CookieManager.save.cookies=true,取出登录后cookie参数,并传递到执行审核请求的线程组

    整体结构:

     

    声明参数为全局变量:

     

    拼接cookie信息:

     

    设置同步计时器,确保单据并发提交:

     

    场景b:

    在真实场景中,单用户并发操作的较少,同时操作同一单据的场景,更多的是多个不同用户。模拟此种场景,要做到的是多线程时,每个线程使用不同的用户登录并进行操作。此处的实现方式,是获取线程编号,然后为线程指定登录账号(如线程1读取账号1,线程2读取账号2),在这种不同用户的场景下,就需要将登录和提交请求放置在同一线程组中,顺序执行操作即可

           整体结构:

        

           获取线程ID并指定账号:

          

  • 相关阅读:
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Python位运算符
  • 原文地址:https://www.cnblogs.com/alansheng/p/7641168.html
Copyright © 2011-2022 走看看