API 测试
Postman、REST Assured、Karate。
35 分钟
API 测试
API 测试 在 HTTP 层验证契约:状态码、JSON 结构、业务规则与错误处理。比 UI 测试 更快、更稳,是 backend 回归的主力。对照 /roadmaps/qa「API Testing」节点,本课覆盖 Postman、REST Assured 与 Karate。
学习目标
- 设计 REST API 测试用例(正常、边界、异常)
- 用 REST Assured 或 MockMvc 编写可 CI 运行的 API 测试
- 了解 Postman 集合与 Newman CLI 在团队协作中的角色
- 将 API 测试嵌入 Spring Boot 与 CI 流水线
核心概念
用例维度
| 维度 | 示例 |
|---|---|
| 正常 | GET /tracks/git-essentials → 200 + slug 匹配 |
| 边界 | 空列表、分页最后一页、超长 slug |
| 异常 | 404、401、422 校验失败 |
| 契约 | 字段类型、必填项、错误码格式 |
REST Assured 示例
@Test
void getTrack_bySlug_returns200() {
given()
.baseUri("http://localhost:8080")
.when()
.get("/tracks/git-essentials")
.then()
.statusCode(200)
.body("slug", equalTo("git-essentials"))
.body("title", not(emptyString()));
}
需 @SpringBootTest(webEnvironment = RANDOM_PORT) 或独立起服务;开发期更快的是 MockMvc(不绑端口)。
Postman 与 Karate
- Postman:手工调试 + Collection 共享;Newman 命令行跑集合进 CI
- Karate:Gherkin 语法 + 内置断言,适合 BDD 风格 API 场景
与 MockMvc 选型
| 方式 | 优点 | 缺点 |
|---|---|---|
| MockMvc | 快、无真实端口 | 非完整 HTTP 栈 |
| REST Assured + 真端口 | 接近生产 | 慢、需起容器 |
| Postman | 非开发友好 | 版本化、CI 需 Newman |
与 testing-essentials/Spring 对照
本站 backend API 测试 首选 MockMvc:test-mockmvc + @MockBean Service。
集成层 用 Testcontainers 真 DB:test-integration。
REST Assured 适合跨服务黑盒或 QA 独立仓库;Spring 切片见 test-spring、。