少写一半 API 测试:Keploy 用流量录制自动生成可运行测试
【免费下载链接】keployOpen-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.项目地址: https://gitcode.com/GitHub_Trending/ke/keploy
Keploy 是一个开源的 API 与集成测试工具。你只需要运行keploy record,它就能把应用真实的 API 调用、数据库查询、消息队列事件录制下来,重放为可反复运行的测试用例与数据存根(Data Mocks)。适合任何需要为 Go、Python、Java 等任意语言服务补测试的开发者,核心价值是 API 测试自动生成,全程不写一行测试代码。
它解决了什么
先看两个熟悉的场景。
第一个场景:一个中台服务有 80 个接口,其中大量逻辑藏在「请求 → 数据库 → 响应」的完整链路里。手工写测试,你要先理解业务,再为每个依赖造数据,最后还要维护这些测试。接口一改,测试全红。
第二个场景:团队里同时跑着 Go 后端、Python 脚本和 Java 服务。每种语言一套测试框架、一套 mock 库,CI 里还要再拉一套数据库环境。测试环境的搭建和维护成本,常常超过写测试本身。
传统单元测试覆盖不了链路行为,纯手工集成测试又维护不动。这是大多数团队测试覆盖上不去的真实原因。
它是怎么做到的
Keploy 的思路是录制-重放(Record & Replay)。
它不靠 SDK、也不读你的代码。底层用 eBPF 钩子挂在操作系统的网络层,应用发出的每一个包都在这里被捕获。因此它无需改代码、语言无关:无论应用用 Go、Python 还是 Java 写,只要流量过了网络层,Keploy 就能录下来。
录制阶段,你像平时一样启动应用并打请求:
keploy record -c "go run main.go"Keploy 会把这次运行中出现的 API 调用、数据库语句(PostgreSQL、MySQL、MongoDB)、Kafka 消息等一并记录,生成测试用例和对应的 mock 文件。
重放阶段,外部依赖全部换成录下来的 mock:
keploy test -c "go run main.go" --delay 10应用照常启动,但所有出站请求命中 mock 并返回录制时的真实响应。测试在离线、确定的环境下跑,不依赖任何真实基础设施。动态值(时间戳、UUID、token)会被模板化处理,避免测试因为随机字段而变红。
关于 eBPF 钩子的实现细节,可以看 pkg/agent/hooks/README.md。
适合谁、怎么用
普通开发者—— 给已有服务快速补上 API 级回归测试,不写断言。最短命令:
keploy record -c "CMD_TO_RUN_APP"多语言团队—— Go、Python、Java、Node 服务共用同一套测试与 mock,CI 里不再需要各语言各异的测试基建。运行方式完全一致,keploy test即可。
容器化部署—— 用官方镜像把 Keploy 跑在 Docker 里,录制容器应用:
keploy record -c "docker run <app_image>" --containerName "<name>"镜像与挂载细节见 README.md 的 Docker 部分。
快速上手
一行安装(Linux amd64),随后即可开始录制:
curl -sL https://keploy.io/install.sh | bash keploy record -c "CMD_TO_RUN_APP"录制完成后用keploy test重放。更多选项(mock 格式、环境变量、报告)参见 docs/env-vars.md。
它凭什么不一样
不挑语言,因为拦截点在网络层。eBPF 钩住的是系统内核的网络调用,不是应用进程,所以任何运行时都适用,源码中可直接看到 hook 定义(pkg/agent/hooks/linux/)。
mock 的不只是 HTTP。只有接口 mock 的工具很多,但数据库协议、Kafka、Redis、gRPC 都能录下来并确定性重放。mock 的生命周期模型(会话级 / 连接级 / 单测试级)见 docs/explanation/mock-lifetimes.md。
用自己的流程测自己。Keploy 团队的 CI 每次 PR 都重放录好的 API 流量,失败时自动重新录制、模板化稳定用例并强制覆盖率。这条「录制 → 重放 → 重新录制」链路没有人工维护测试的环节,完整说明见 adopters/organizations/keploy.md。
🔒 使用 AI 相关能力时,Keploy 默认对接你可自选的 LLM 后端(含私有部署),只有源代码与测试代码会发送到你配置的后端,其余流量数据留在本地。
接下来
克隆仓库,跑通你的第一条录制:
git clone https://gitcode.com/GitHub_Trending/ke/keploy然后从keploy record开始,把真实流量变成你的第一批测试。更多能力(覆盖率、CI 集成、mock 注册表)可在仓库 docs/ 目录中查阅。
【免费下载链接】keployOpen-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.项目地址: https://gitcode.com/GitHub_Trending/ke/keploy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考