如何在Gatling中获取并校验请求与响应的大小
Gatling 实现请求/响应大小查看与校验方案

响应大小查看与校验
Gatling 内置了bodyLength检查方法,可以直接提取响应体的字节大小,既支持直接配置校验规则,也支持存入会话后打印查看,示例代码如下:
// 导入必要依赖 import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.duration._ class ResponseSizeTest extends Simulation { val httpConf = http.baseUrl("https://你的测试服务地址") val testScenario = scenario("响应大小测试") .exec( http("获取测试接口") .get("/api/test") .check( // 校验响应大小为固定值,单位为字节 bodyLength.is(1280), // 也可校验大小范围 bodyLength.between(1000, 1500), // 将响应大小存入会话,后续可打印或执行自定义逻辑 bodyLength.saveAs("respSize") ) ) // 打印当前请求的响应大小 .exec(session => { println(s"当前请求响应体大小:${session("respSize").as[Int]} 字节") session }) setUp(testScenario.inject(atOnceUsers(1))).protocols(httpConf) }
请求大小查看与校验
Gatling 没有内置的请求体大小提取方法,你可以在构造请求体时预先计算大小,存入会话后校验、查看即可,示例如下:
class RequestSizeTest extends Simulation { val httpConf = http.baseUrl("https://你的测试服务地址") // 提前构造请求体并计算大小 val postBody = """{"username":"test","password":"123456"}""" val reqSize = postBody.getBytes("UTF-8").length val testScenario = scenario("请求大小测试") .exec( http("提交测试接口") .post("/api/login") .body(StringBody(postBody)) // 可结合响应大小校验一起配置 .check( bodyLength.between(500, 800), // 将请求大小存入会话 session => session.set("reqSize", reqSize) ) ) // 同时打印请求和响应大小 .exec(session => { println(s"当前请求体大小:${session("reqSize").as[Int]} 字节") println(s"当前响应体大小:${session("respSize").as[Int]} 字节") session }) setUp(testScenario.inject(atOnceUsers(1))).protocols(httpConf) }
批量统计查看
所有请求的响应大小会自动汇总到Gatling生成的HTML测试报告中,你可以在报告的请求详情页查看每个接口的平均、最大、最小响应体大小,满足批量统计的需求。
如果需要统计包含请求头、响应头的完整报文大小,可以通过自定义HttpListener监听器获取完整报文自行计算。
内容的提问来源于stack exchange,提问作者shrusthip
相关产品推荐
相关产品推荐

