压力测试 chiab

介绍

chiab 是一款类似于ab的简单压力测试工具,使用go语言编写的第三方库。ab是一个独立的命令行工具,chiab是嵌入在代码当中执行的函数。chiab的代码仅仅只有100行左右。

为什么要写chiab?

  1. 生成准确测试时间的标准报告文件

  2. 在go语言中直接调用更方便

测试http请求

func TestGet(t *testing.T) {
   var concurrency int64 = 20
   var requests int64 = 10000
   RequestStart(concurrency, 60*time.Second)
   Run(func(id int64) bool {
      _, err := Get(id, "http://127.0.0.1:8100/profile", nil, "")
      if err != nil {
         return false
      } else {
         return true
      }
   }, concurrency, requests, "测试HTTP服务", false)
}

测试代码段

Run方法

参数:

  • handler 被测试的代码段

  • concurrency 并发数

  • requests 请求数

  • title 报告标题

  • save 报告是否存为文件

返回值

返回true表示成功

测试报告

文件名:测试函数执行效率_2022-12-05 11:39.txt

实现

定义Request

任务分配

给每个并发平均分配任务,如果不能平均最后一个协程会分配的多一些。

启动协程池

发令枪

让所有的协程先预热跑起来,等待发令枪,发令枪响,所有协程开始跑被分配的工作单元。

日志写入文件

等待每一个任务结束

报告

P90

百分之90的用户访问速度

地址

https://github.com/langwan/chiab

最后更新于