Repolode
N4darae

N4darae/shrt

一个回归测试工具,用人工批准的基线回放 API 调用链,发现版本之间的接口变化。

Star
2,388
Fork
164
未关闭 Issue
6
最近提交
12天前

这是什么?

shrt 通过 YAML 定义的 API 调用链测试后端,例如登录、创建商品、补充库存再读取结果。人工批准一次通过的运行作为基线,之后每个版本都会按这个基线重放。字段发生变化时,它会指出对应的步骤、字段以及可疑的写操作。

契约文件描述每个 rpc 需要哪些字段、取值来源、如何拒绝非法请求,以及写操作对数值字段的影响。shrt 可以据此生成调用链,覆盖边界值、缺失或错误的 token、不存在的 id 和重复数据等情况。它通过 HTTP POST 使用 Connect 协议,适配 connect-go 构建的服务,不支持只提供 gRPC 的服务。支持一元和服务端流式调用,流式调用只读取第一条消息。

该工具用 Go 编写,编译 .proto 文件需要 buf。凭据从环境变量读取,并在运行记录中脱敏。默认只向 localhost 发送请求,除非目标主机已在配置中列出。它面向由编码智能体驱动的场景设计,所有命令也可手动使用。

核心功能

  • 01调用链以 YAML 文件定义,每次发布时重放。
  • 02人工批准的基线会记录响应字段,包括没有断言检查的字段。
  • 03契约文件可生成覆盖边界值、鉴权失败和重复数据的探测调用链。
  • 04失败时会指出对应步骤、变化的字段以及可疑的写操作。
  • 05请求默认仅发往 localhost 或显式允许的主机,以保护生产数据。
  • 06提供 CI 门禁命令,失败时以非零状态码退出。

适用场景

  • 在 connect-go 后端的版本迭代之间发现回归问题。
  • 在 CI 中对每个新构建运行 API 回归检查。
  • 让编码智能体在人工审核下编写和维护 API 测试契约。

快速上手

  1. 1

    安装 buf(shrt 需要它在 PATH 中)

  2. 2

    使用 Go 1.26 或更高版本安装 shrt

    go install github.com/N4darae/shrt/cmd/shrt@latest
  3. 3

    检查已安装的版本

    shrt version
  4. 4

    在后端项目中初始化 shrt 并进行检查

    shrt init

使用前须知

  • 需要 Go 1.26 或更高版本,并且 buf 必须在 PATH 中。
  • 只支持说 Connect 协议的服务,不支持仅 gRPC 的服务。
  • 流式 rpc 只读取到第一条消息。
  • shrt init 会猜测哪个 rpc 是登录接口,因此需要人工核对结果。

收录于专题

标签

#testing#api-testing#regression-testing#go#connect-rpc#grpc#ci-cd#ai-agent

常见问题

shrt 是什么?
一个回归测试工具,用人工批准的基线回放 API 调用链,发现版本之间的接口变化。 shrt 通过 YAML 定义的 API 调用链测试后端,例如登录、创建商品、补充库存再读取结果。人工批准一次通过的运行作为基线,之后每个版本都会按这个基线重放。字段发生变化时,它会指出对应的步骤、字段以及可疑的写操作。
shrt 可以免费使用吗?用的什么许可证?
shrt 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
shrt 还在维护吗?
活跃维护中。shrt 最近一次提交是在 2026年10月26日。
shrt 适合用来做什么?
在 connect-go 后端的版本迭代之间发现回归问题。 在 CI 中对每个新构建运行 API 回归检查。 让编码智能体在人工审核下编写和维护 API 测试契约。
shrt 怎么安装和运行?
安装 buf(shrt 需要它在 PATH 中) 使用 Go 1.26 或更高版本安装 shrt: go install github.com/N4darae/shrt/cmd/shrt@latest 检查已安装的版本: shrt version 在后端项目中初始化 shrt 并进行检查: shrt init
在哪里获取 shrt?
源代码和安装说明在 GitHub 上:https://github.com/N4darae/shrt

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目