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并指定账号:

          

  • 相关阅读:
    UVALive 4764 简单dp水题(也可以暴力求解)
    poj 2151 概率DP(水)
    poj 2299 归并排序求逆序数 (可做模板)
    poj2388 更水
    poj1936 假期计划第一水
    poj 3080 kmp求解多个字符串的最长公共字串,(数据小,有点小暴力 16ms)
    UVA315:Network(求割点)
    POJ1236:Network of Schools (思维+Tarjan缩点)
    SPOJ
    HDU4305:Lightning(生成树计数+判断点是否在线段上)
  • 原文地址:https://www.cnblogs.com/alansheng/p/7641168.html
Copyright © 2011-2022 走看看