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
安装 buf(shrt 需要它在 PATH 中)
- 2
使用 Go 1.26 或更高版本安装 shrt
go install github.com/N4darae/shrt/cmd/shrt@latest - 3
检查已安装的版本
shrt version - 4
在后端项目中初始化 shrt 并进行检查
shrt init
使用前须知
- 需要 Go 1.26 或更高版本,并且 buf 必须在 PATH 中。
- 只支持说 Connect 协议的服务,不支持仅 gRPC 的服务。
- 流式 rpc 只读取到第一条消息。
- shrt init 会猜测哪个 rpc 是登录接口,因此需要人工核对结果。
收录于专题
标签
常见问题
- 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 数据每日更新。
相关项目
面向 gRPC 服务的命令行工具,类似 curl,使用 JSON 调用 RPC 方法。
一个命令行工具,可启动网页界面,交互式地向 gRPC 服务发送请求,类似面向 REST 的 Postman。
终端 API 客户端,把 HTTP、GraphQL、gRPC、WebSocket 和 SSE 请求保存为可放入 git 管理的 .http 文件。
用 Go 编写的原生本地优先 API 客户端,支持 REST、gRPC、GraphQL 和 WebSocket,并内置流量代理。
开源负载测试工具,用 JavaScript 编写性能测试脚本,由 Go 编写的程序执行。