3 个版本

0.1.2 2024 年 1 月 20 日
0.1.1 2024 年 1 月 20 日
0.1.0 2024 年 1 月 19 日

#1430命令行实用程序

每月 22 次下载

MIT 许可证

245KB
790 代码行

⚓ Ballast

Ballast 是一个用于 API 快照负载测试的工具。

https://github.com/synoet/ballast/assets/10552019/25572acb-1f67-49fc-b88a-97d6a02be671

简介

安装

cargo install ballast

设置

在您的目录中创建一个 ballast.json 配置文件。

{
  "endpoints": [
    {
      "name": "GET test",
      "url":"https://127.0.0.1:8080/test",
      "method": "GET",
      "concurrent_requests": 5,
      "cycles": 10,
      "threshold": 100,
      "expected_status": 500,
    },
    {
      "name": "POSR test",
      "url":"https://127.0.0.1:8080/test",
      "method": "POST",
      "concurrent_requests": 5,
      "cycles": 10,
      "threshold": 100,
      "expected_status": 200,
      "headers": {
        "Content-Type": "application/json"
      },
      "body": {
        "payload": {}
      }
    },
  ]
}

运行

ballast # in the directory with ballast.json

为什么?

什么是快照测试?

快照测试是一种常用于测试 UI 框架(如 Jest + React)的技术。它涉及在特定点捕获 DOM 的“快照”,并在进行更改后将其用作比较的参考。

这如何应用于 API?

采用类似的方法,在运行负载测试时,ballast 会自动生成测试的快照。通过比较更改后的性能与快照,API 开发者可以评估这些更改对性能的影响。

配置

配置测试
name:您要给测试起的名字。
url:您正在测试的 HTTP 端点。
methodGET | POST | PUT | DELETE | PATCH | OPTIONS
concurrent_requests:每个测试周期运行的并发请求数量,您可以将测试中的总请求数量视为 concurrent_requests * cycles
cycles:测试中的周期数
threshold:这是测试成功可接受的平均响应时间偏差。默认为 250ms。如果所有其他预期值都匹配,则使用响应时间来衡量请求的成功。
headers (可选):要包含在请求中的标题映射
body (可选):要包含在请求中的 JSON 负载
expected_status (可选):如果端点正常工作,则预期的状态
expected_body (可选):端点的预期响应
expected_headers (可选):端点的预期响应头
ramp (可选):是否应该逐步增加请求(默认为 true)

依赖

~8–24MB
~329K SLoC