Keploy 是一款创新的开源 AI 测试工具,它彻底改变了传统测试用例的编写方式。从用户流量自动生成测试Keploy能录制真实的生产或测试环境 API 调用,并自动将其转换为:可执行的测试用例、相应的模拟数据。这解决了编写和维护测试用例的成本问题,尤其适合复杂业务逻辑和微服务架构。
Keploy的一些概念
记录模式
Kepoy 作为一个中间件或侧车应用运行,拦截您的应用程序所有进出的 API 请求和响应。它会自动将这些交互捕获为 “测试用例”。
测试模式
在此模式下,Keploy 会回放之前录制的测试用例,验证您的应用程序是否仍然产生与录制时相同的响应。它还会为应用程序的外部依赖(如数据库、第三方 API)生成 “模拟数据”,保证了软件测试的速度。
测试用例
不再是手写的代码,而是自动生成的 YAML 文件,其中包含了完整的请求和预期响应。
模拟数据
同样是自动生成的 YAML 文件,模拟了应用程序在录制期间调用的所有外部服务。
安装与运行
Keploy 提倡无缝集成,推荐使用Docker方式运行。
使用 Docker Compose 运行(推荐)尤其适合微服务。
创建一个 docker-compose.yml 文件:
version: '3.8'
services:
# 你的应用程序服务
your-app:
image: your-application-image:latest
ports:
- "8080:8080" # 你的应用端口
# 其他你的应用需要的配置...
# Keploy 服务
keploy:
image: keploy/keploy:latest
container_name: keploy
ports:
- "6789:6789" # Keploy 前端端口,用于访问控制台
volumes:
- ./keploy:/keploy # 将测试用例持久化到本地
- /var/run/docker.sock:/var/run/docker.sock
environment:
- KEPLOY_DB_PATH=/keploy
network_mode: "host" # 关键:让 Keploy 能捕获主机网络流量
启动服务
docker-compose up -d
下图展示了 Keploy 从记录测试到运行测试的完整工作流:
记录模式-捕获测试用例,确保你的应用程序和 Keploy 正在运行(通过上述 Docker Compose)。
生成流量:像正常用户一样使用你的 API。你可以:
手动调用 API(使用 Postman, curl 等)。
运行前端应用并与之后端交互。
运行现有的集成测试套件。
示例:假设你的应用有一个 GET /users 接口。当你通过 curl http://localhost:8080/users 调用它时,Keploy 会自动在 ./keploy 目录下生成一个 YAML 文件(如 test-1.yaml),内容大致如下:
version: api.keploy.io/v1beta1
kind: Http
name: test-1
spec:
metadata: {}
req:
method: GET
url: /users
header:
Accept: "*/*"
User-Agent: "curl/7.68.0"
body: ""
timestamp: 2025-01-15T10:00:00Z
resp:
status_code: 200
header:
Content-Type: application/json
body: |-
[
{"id": 1, "name": "John"},
{"id": 2, "name": "Jane"}
]
timestamp: 2025-01-15T10:00:01Z
测试模式 - 运行测试,停止所有不必要的流量,确保测试环境干净。
切换到测试模式。通常这需要通过环境变量或 API 通知 Keploy。查看 Keploy 控制台(http://localhost:6789)或文档以了解具体操作。有时,只需重启 Keploy 服务并指定模式即可。
触发测试执行。当你再次向你的应用发送请求或在 Keploy 控制台中点击运行时,Keploy 会:
读取所有生成的测试用例 YAML 文件。
将请求回放到你的应用程序。
使用生成的模拟数据来隔离你的应用(例如,即使数据库是空的,它也会返回录制好的用户列表)。
将应用程序的实际响应与 YAML 文件中记录的预期响应进行比较。
查看结果:测试报告会在 Keploy 控制台或 CLI 中显示,明确指示每个测试用例是通过还是失败。
集成到开发流程,在 CI/CD 流水线中运行 Keploy,你可以在 CI 环境中以测试模式运行 Keploy,将其作为自动化测试套件的一部分。任何代码更改如果破坏了现有行为,都会导致 Keploy 测试失败,从而防止回归。
管理测试用例
将生成的 keploy/ 目录纳入版本控制。这样,测试用例就成为了你的“活文档”,并与代码同步演化。
在 Pull Request 中,你可以看到 Keploy 测试用例的变化,这本身就是对 API 变更的绝佳审查。
处理敏感数据
Keploy 录制的数据可能包含敏感信息。使用其内置的或自定义的脚本对 YAML 文件中的敏感字段(如身份证号、令牌)进行脱敏处理。
Keploy 的使用可以概括为:部署并录制 -> 生成测试与模拟数据 -> 集成到CI/CD -> 持续回归防护。