Jmeter

RunnerGo

接口压测实践 | Apipost

https://github.com/Apipost-Team/runnerGo

压测值 含义 计算方法
总请求数 总共发送送请求总数 并发数*轮次
执行时间 压测任务执行时间 任务结束时间-任务开始时间
成功请求数 http请求code为200的请求数量
失败请求数 http请求code非200或者连接异常请求数量
错误率 压测出错比例 失败次数/总请求数 * 1000
总接收数据 总结接收到数据总字节数 累加每次返回结果的字节数量
每秒请求数 每秒平均请求数量 请求总次数/请求总时间
每秒成功请求数 每秒平均成功请求数量 成功请求总次数/成功请求总时间
每秒接收字节数 每秒接收平均字节数 总接收字节数/总请求时间
最大响应时间 最大请求执行时间 所有请求中执行最长的时间
最小响应时间 最小请求执行时间 所有请求中执行最小的时间
平均响应时间 平均响应时间 请求总时间/请求总次数
10% 前10%请求完成时间 所有请求花费时间正序排序,取10%位置的执行时间
25% 前25%请求完成时间 所有请求花费时间正序排序,取20%位置的执行时间
50% 前50%请求完成时间 所有请求花费时间正序排序,取50%位置的执行时间
75% 前75%请求完成时间 所有请求花费时间正序排序,取75%位置的执行时间
90% 前90%请求完成时间 所有请求花费时间正序排序,取90%位置的执行时间
95% 前95%请求完成时间 所有请求花费时间正序排序,取95%位置的执行时间

k6

https://github.com/grafana/k6

K6 是一个现代化的、开源的负载测试框架,可以帮助开发者和测试人员对 Web 应用程序、API 以及微服务进行性能测试。K6 基于 JavaScript 编写,简单易学,不需要额外的编程语言或工具。同时该框架社区生态也很好,有很多拓展可以根据需要灵活的进行选择。

指标类型

名称 描述
Counter 计数器,对值进行累加
Gauge 最小值、最大值和最后一个值。
Rate 百分比
Trend 最小值、最大值、平均值和百分位数的统计数据指标

K6 始终都会收集的指标

名称 类型 描述
vue Gauge 当前活动的虚拟用户数
vue_max Gauge 虚拟用户的最大数量
iterations Counter 脚本中的函数被执行的次数
data_received Counter 接收到的数据量大小
data_sent Counter 发送的数据量大小
iteration_duration Trend 完成默认/主函数的一次完整迭代所花费的时间。
checks Rate checks 项的成功率

HTTP 特有的指标

名称 类型 描述
http_reqs Counter 总请求数量
http_req_blocked Trend 在发起请求之前被阻塞的时间
http_req_connecting Trend 建立到远程主机的TCP连接所花费的时间。
http_req_tls_handshaking Trend 与远程主机握手建立TLS会话所花费的时间
http_req_sending Trend 将数据发送到远程主机所花费的时间
http_req_waiting Trend 等待远程主机响应所花费的时间
http_req_receiving Trend 从远程主机接收响应数据所花费的时间
http_req_duration Trend 请求的总时间。它等于http_req_sending + http_req_waiting + http_req_receiving(即,远程服务器处理请求和响应花了多长时间,而没有初始DNS查找/连接时间)
http_req_failed Rate 失败请求率

每一个 http 都会返回一个 HTTP Response 对象,下面是常用的一些属性。

属性 类型
Response.body HTTP 响应正文
Response.cookies 响应 cookies ,属性是 cookie 名称,值是 cookie 对象数组
Response.error 发送请求失败后的错误信息。
Response.error_code 错误码
Response.headers 标头,键值对
Response.status 从服务器收到的 HTTP 响应代码
Response.timings 耗时(以毫秒为单位)
Response.timings.blocked = http_req_blocked
Response.timings.connecting = http_req_connecting
Response.timings.tls_handshaking = http_req_tls_handshaking
Response.timings.sending = http_req_sending
Response.timings.waiting = http_req_waiting
Response.timings.receiving = http_req_receiving
Response.timings.duration = http_req_duration

ApacheBench(ab)

ab 命令进行压力测试。ab 是 Apache HTTP 服务器的一个工具,可以用于测试 Web 服务器的性能。该命令需要在终端中执行。

以下是 ab 命令的基本用法: