大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
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、sb-test。
CI:mvn test 跑 *ControllerTest 即 API 回归门禁。
练习
- 为 GET /tracks/{slug} 设计 4 条 API 用例(含 404)
- 用 MockMvc 或 REST Assured 实现其中 2 条
- 导出 Postman Collection 描述 tracks 相关 3 个接口
小结
API 测试快而准,守契约与业务规则;MockMvc 开发首选,REST Assured 黑盒补充。 下一课进入移动端测试:Appium、Espresso 与 Detox。