如何使用JMeter正确测试接口的TPS

394 阅读2分钟

和朋友聊天,聊到了测试,他问我如何用JMeter给很多很多测试数据测试接口的TPS呢? 我说你这问对人了, 之前我就学过JMeter的使用,下面我以一个对合同录入接口做压测来做演示

背景介绍:
1W条测试用例放到保存为一个csv文件,一行记录为一个参数整体,中间不分割,每行记录都是一个json字符串
线程组设置5秒内并发500个请求为一个循环,循环20次
Content-Type = application/json
压测这期间的接口TPS性能

1.JMeter的测试用例都是保存在csv中的,在线程组中添加CSV文件配置

C266CD2B-318F-4cf2-B55F-1222B7BCFAAE.png

  1. 如何获取 csv 的测试数据?
    通过设置分隔符,将各个部分绑定不同的变量,在HTTP请求里就可以用了

    首先第一个文件名,引入测试数据的csv文件
    其他配置项看字面意思按需配置
    关键是变量名称和分隔符这两项,分隔符分割的是csv的一行数据,变量就是你给分割出来的各个部分起的名字,按顺序中间用英文逗号连起来填进去

    *特例:
    如果一行数据是一个整体,一行记录就是一个json字符串,中间不分割怎么设置
    注释已经写的很清楚了(就是以制表符分割,但用\t替换制表符) 可千万别写\n

如何获取csv中的数据并赋值.jpg

  1. 如何在HTTP请求中使用csv中的变量?
    通过设置分隔符,将各个部分绑定不同的变量,在HTTP请求里就可以用了

在HTTP请求中获取csv分割的变量.jpg

  1. 启动测试

  2. 查看测试结果
    通过聚合报告查看 平均TPS
    通过图形结果查看 吞吐量 通过jp@gc Transaction-Per-Second插件查看 实时TPS

TPS截图.png

吞吐量截图.png

实时TPS截图.png

小贴士 : TPS 和 吞吐量的关系

相同点 :
1.都是描述处理能力的指标
2.都是计算的平均值

只有先算出来一段时间内的处理量(吞吐量),才能计算出平均TPS,而实时TPS是不断变化的

例子:
一个工人一秒最多搬10块砖(最高TPS),一个小时最多能搬36000块砖(最高吞吐量),但是他不能每时每刻都工作在最高速率下,可能一会儿搬得快,一会儿搬得慢(实时TPS是不断变化的),假如他一小时搬了26000块砖(实际吞吐量),那他在这一小时内的平均一秒搬大约7块砖(平均TPS)