keploy:零改码的 API 测试用例生成与离线录制回放测试

发布时间:2026/9/10 4:21:20
keploy:零改码的 API 测试用例生成与离线录制回放测试 keploy零改码的 API 测试用例生成与离线录制回放测试【免费下载链接】keployOpen-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.项目地址: https://gitcode.com/GitHub_Trending/ke/keploy测试环境难搭数据库版本与线上不一致、消息队列没起、外部接口不稳定手工编写的用例维护成本高mock 数据容易过时。keploy 是一个开源的 API 与集成测试工具它用 eBPF 捕获应用网络流量免改码完成录制回放测试用例生成与依赖 mock录制的流程可以离线确定性重放。两步跑通第一个用例安装并顺手完成录制curl --silent -O -L https://keploy.io/install.sh source install.sh keploy record -c python main.py第一行下载 keploy 可执行文件并配置 PATH 环境变量执行完运行keploy version应能打印版本号。第二行把keploy record作为应用启动命令的前缀CMD_TO_RUN_APP换成你的启动命令Go 应用写go run main.go应用退出后录制结束生成的测试用例与 mock 数据写入项目目录下的keploy文件夹内容是 YAML 文件可以查看和手工编辑存储逻辑见 pkg/platform/yaml/testdb/db.go。离线回放测试keploy test -c python main.py --delay 10keploy test以同样方式再次启动应用但这次所有出站请求被录制时生成的 mock 拦截不需要真实数据库、队列或外网。--delay指定应用启动后等待多少秒就绪再开始测试避免端口尚未监听导致的误报。终端会打印每个用例的通过情况失败用例附带响应 diff。不改一行代码是如何做到的keploy 启动时把 eBPF 程序注入内核在网络层挂钩 socket 调用进程收发的所有流量都会经过这些钩子。流量按协议分类HTTP 请求进入用例生成流程数据库、队列等协议流量交给对应的 wire 协议解析器拆成 mock 流。捕获点位于 SDK 与应用代码之下因此与实现语言、框架无关业务代码不需要引入任何依赖。eBPF 钩子实现在 pkg/agent/hooks/linux/hooks.go录制编排逻辑在 cli/record.go。它能替身哪些依赖keploy 不只 mock HTTP 端点可接管的依赖包括类别支持组件回放时的行为关系型数据库PostgreSQL、MySQL按序重放录制的查询语句与结果集无需真实数据库文档数据库MongoDBmock 文档读写操作流 / 队列Kafka、RabbitMQ以存根方式重放 produce/consume 事件外部服务第三方 HTTP API返回录制时的响应测试不依赖外网以 MySQL 为例wire 协议的录制与匹配实现在 pkg/proxy/integrations/mysql/ 目录其余组件有对应的集成模块。从单个用例到流水线对于人工难以枚举的场景keploy 基于现有录制内容和 Swagger/OpenAPI Schema 发现边界值、缺失或多余字段、错误类型、乱序序列、重试与超时等情况keploy utgen运行后新增的测试用例会补充进用例集扩大 schema 与分支覆盖。CI 流水线GitHub Actions、Jenkins、Kubernetes里跑与本地相同的keploy test仓库中随代码提交的keploy目录就是依赖环境GitHub Actions 配置如下- name: Install keploy run: curl --silent -O -L https://keploy.io/install.sh source install.sh - name: Run keploy tests run: keploy test -c CMD_TO_RUN_APP --delay 10适合谁不适合谁适合外部依赖多数据库、队列、第三方 API的服务测试环境搭建和维护成本高已有真实流量、希望把线上请求转化为回归用例的团队不想为每次 API 变更拉起全套基础设施需要快速验证的流水线不适合只需要单个函数单元测试的场景eBPF 捕获的是进程级网络流量纯计算逻辑用传统单测更直接非 Linux 的本地环境eBPF 钩子依赖 Linux 内核macOS 与 Windows 需通过 Docker 运行命令参数与环境变量的完整说明见官方文档keploy docs仓库内 docs/ 目录收录了环境变量与 mock 匹配契约等参考资料实现可以从 cli/ 与 pkg/agent/ 两个源码目录入手阅读。项目接受 issue 与 PR 形式的社区贡献贡献流程说明在 docs/contributing/ 目录中。【免费下载链接】keployOpen-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.项目地址: https://gitcode.com/GitHub_Trending/ke/keploy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考