Jmeter多接口关联并发测试

接口描述

    首先,我拿到接口文档对需要进行压测的接口进行分析和调试,这里我用到jmeter和postman,postman主要是对单个接口进行调试,然后再用jmeter对接口进行关联。
    接口描述:项目中用到是http接口,请求方式是post,参数传递采用json格式
    异步执行接口:http://xxxxx.:xxxx/rest/runner/asyncRunApp
    异步查询接口:http://xxxxx.:xxxx/rest/runner/getRunState
    异步执行结果接口:http://xxxxx.:xxxx/rest/runner/getRunResult
    异步删除接口:http://xxxxx.:xxxx/rest/runner/deleteRun

postman接口调试

我对这几个接口进行梳理,首先根据开发人员提供的信息,我需要用json的格式传递接口数据给异步执行接口,然后再利用异步执行接口的返回值runID,传给其他的接口:
1、异步执行接口
在这里插入图片描述
需要在header处添加请求头部信息,告知该接口,我给你的参数是json格式
Content-Type:application/json
然后我们再拿到runID传给下面的几个接口
2、异步查询接口
在这里插入图片描述
这里的username与上一个接口的参数是一致的,所以只需要获取runID就行,当然header部分仍然要添加参数说明,申明是json格式:
Content-Type:application/json
3、获取结果

在这里插入图片描述
4、删除异步任务
在这里插入图片描述
这里为什么要删除任务,因为在执行APP任务时,任务会一直存在缓存中,不删除此任务,后面进行并发操作会导致大量缓存任务,造成阻塞,所以我们在调试的时候,需要执行一次就要删除一次,以免资源被占用

重头戏:Jmeter关联4个接口

描述
采用jmeter对以上异步执行、异步获取状态、异步结果、异步删除四个接口进行关联,为的是在执行测试计划时,自动根据接口sampler顺序发送请求;

一、jmeter测试架构
设计思路:
1、异步执行接口需要将用户数据参数化,
2、然后利用jmeter后置处理器json提取器,提取响应数据runID的值;
3、将提取的runID值作为变量,供异步查询、异步结果、删除任务这三个接口调用;
4、异步查询需要获取到状态变为Finnished,才能发送获取异步结果请求;
5、结果接口返回success后,执行删除任务,这里加了一个json判断,判断结果是否为success!在这里插入图片描述

详细描述:
首先:添加一个线程组
其次:添加四个sampler-HTTP请求,每个HTTP请求添加一个HTTP信息头管理器,将
Content-Type:application/json填进去
然后:根据接口文档配置每个HTTP请求的处理逻辑
我这里主要有一下几个点
1、需要对用户数据进行参数化
我这里创建一个name1.txt的文件,
在这里插入图片描述
用户数据从test1-test100
配置文件-CSV文件读取
在这里插入图片描述
申明变量user,jmeter如何对变量进行提取
在这里插入图片描述
按照json格式填写参数;在引用变量username处填写“${user}”则可以将txt文本中的用户数据一次引用到username中;

2、参数传递
我要根据异步执行结果接口的返回值,取到runID,然后将runID作为一个变量传给异步执行状态、异步执行结果、删除异步任务这三个接口;
操作步骤:
给异步执行接口添加后置处理器-json extractor(json处理器)
这个地方jmeter有很多后置处理器可以满足,我这里用到时json处理器,因为返回值格式也是json,比较方便,通常正则表达式提取器是万能的
返回参数

{
    "data": {
        "status": "SUCCESS",
        "message": "已进入执行队列",
        "result": {
            "runId": "xxxxxxxxxxxxx"
        },
        "code": 2000
    },
    "result": {
        "code": "2000",
        "message": "",
        "status": "OK"
    }
}

json处理器在sampler鼠标右键-添加后置处理器-json extractor在这里插入图片描述
jmeter如何使用变量这个就不多说了,下面是异步执行接口调用上一步的用户数据和json提取器的runID
在这里插入图片描述这个时候需要等待异步查询接口返回finished,才能进行下一个请求的发送,所以我在这里设置了一个循环,需要判断查询接口的返回值status=finished,否则继续循环查询
同样还是要提取status的值,用到json提取器
在这里插入图片描述
while循环控制器
在这里插入图片描述
获取结果,这里需要用到json断言判断结果是否为success
在这里插入图片描述

并发测试

我们的要求是要达到400个用户并发,一共分配了8个端口,我只用到6个接口,每个接口作为一个线程组。
脚本编写完成后,要执行脚本然后分析各种原因
脚本写好后也需要对脚本不断的调整,才能达到预期的目标;
有什么问题的话欢迎大家指正。这个脚本主要就是解决网上大部分jmeter的压测脚本都只是停留在初级使用阶段,没有加入实际项目中,本脚本是根据公司的软件设计架构进行真实的场景进行处理而编写的。
主要解决了jmeter多请求如何进行关联、如何根据上一个请求的响应值作为下一个请求的参数,以及如何加入逻辑处理。
后面还会涉及到性能瓶颈分析、性能监控、这些东西都需要全项目的人参与,包括数据库连接、服务器CPU监控、请求日志、中间件性能等等。
交流问题请加QQ:137485917一起探讨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章