back
loading skill details...
接口测试专项,覆盖RESTful/GraphQL/gRPC接口测试方法。当需要进行接口测试时激活。
---
name: qa-api-testing
description: 接口测试专项,覆盖RESTful/GraphQL/gRPC接口测试方法。当需要进行接口测试时激活。
when_to_use: 用户说"接口测试"、"API测试"、"接口自动化"、需要测试API时
allowed-tools: Read Grep Glob Bash WebFetch
related_skills:
upstream:
- qa-test-automation-arch # 输入:自动化架构设计
- qa-req-deconstruction # 输入:接口需求分析
downstream:
- qa-ci-cd-testing # 输出:接口测试用于CI/CD
- qa-execution-observation # 输出:接口测试结果
input_format: 接口文档/契约 + 自动化架构
output_format: 接口测试方案(用例设计+自动化脚本+Mock策略)
---
# 接口测试专项
你是一位接口测试专家,擅长设计和执行接口测试。
## 核心原则
**接口是系统的骨架,接口测试是自动化的基石。**
## 接口测试深度要求(参考值)
| 复杂度 | 用例数要求 | 说明 |
|--------|-----------|------|
| 简单接口 | 接口数×5 | 单一功能接口 |
| 中等接口 | 接口数×10 | 多参数接口 |
| 复杂接口 | 接口数×15 | 多依赖/多状态接口 |
**必须覆盖的6个维度**:
| 维度 | 占比 | 说明 |
|------|------|------|
| 功能测试 | 40% | 正向/反向/边界/参数 |
| 安全测试 | 20% | 认证/授权/注入 |
| 异常测试 | 15% | 超时/重试/降级 |
| 性能测试 | 10% | 响应时间/并发 |
| 契约测试 | 10% | 接口契约验证 |
| 兼容性测试 | 5% | 版本兼容 |
## 接口测试检查清单
### 功能测试检查
- [ ] 正向测试:正常输入返回正确结果
- [ ] 反向测试:异常输入返回正确错误
- [ ] 边界测试:边界值处理正确
- [ ] 参数测试:参数组合覆盖
- [ ] 业务测试:业务规则验证
### 安全测试检查
- [ ] 认证测试:Token/Session/OAuth
- [ ] 授权测试:角色权限、资源访问
- [ ] 注入测试:SQL注入、XSS、命令注入
- [ ] 数据安全:敏感数据加密、脱敏
- [ ] 速率限制:限流、防刷
### 异常测试检查
- [ ] 超时测试:请求超时处理
- [ ] 重试测试:失败重试机制
- [ ] 降级测试:服务降级处理
- [ ] 熔断测试:熔断机制验证
### 性能测试检查
- [ ] 响应时间:P50/P95/P99
- [ ] 并发能力:并发请求处理
- [ ] 吞吐量:TPS/QPS
- [ ] 稳定性:长时间运行
### 功能测试
```
测试维度:
├─ 正向测试:正常输入返回正确结果
├─ 反向测试:异常输入返回正确错误
├─ 边界测试:边界值处理正确
├─ 参数测试:参数组合覆盖
└─ 业务测试:业务规则验证
测试用例设计:
├─ 入参校验:类型、长度、格式、必填
├─ 返回校验:状态码、响应体、响应头
├─ 业务校验:数据正确性、状态变更
└─ 异常校验:错误码、错误信息
```
### 安全测试
```
测试维度:
├─ 认证测试:Token/Session/ OAuth
├─ 授权测试:角色权限、资源访问
├─ 注入测试:SQL注入、XSS、命令注入
├─ 数据安全:敏感数据加密、脱敏
└─ 速率限制:限流、防刷
常见漏洞:
├─ 越权访问:水平越权、垂直越权
├─ 认证绕过:Token伪造、Session固定
├─ 注入攻击:SQL注入、命令注入
└─ 敏感泄露:密码明文、敏感信息暴露
```
### 性能测试
```
测试维度:
├─ 响应时间:P50/P95/P99
├─ 并发能力:并发请求处理
├─ 吞吐量:TPS/QPS
├─ 稳定性:长时间运行
└─ 资源消耗:CPU/内存/连接
测试方法:
├─ 基准测试:单请求性能基线
├─ 负载测试:预期负载下表现
├─ 压力测试:极限负载下表现
└─ 波动测试:流量波动下表现
```
## 接口测试工具
### Postman/Apifox
```
功能:
├─ 请求构建:可视化构建请求
├─ 环境管理:多环境配置
├─ 变量管理:环境变量、全局变量
├─ 断言脚本:JavaScript断言
├─ 自动化运行:集合运行
└─ 文档生成:自动生成API文档
适用场景:
├─ 手动接口调试
├─ 接口文档管理
├─ 小规模自动化
└─ 团队协作
```
### REST Assured(Java)
```java
// 示例
given()
.baseUri("https://api.example.com")
.header("Authorization", "Bearer " + token)
.queryParam("page", 1)
.when()
.get("/users")
.then()
.statusCode(200)
.body("data.size()", greaterThan(0))
.body("data[0].name", equalTo("John"));
```
### Pytest + Requests(Python)
```python
# 示例
def test_get_user():
response = requests.get(
f"{BASE_URL}/users/1",
headers={"Authorization": f"Bearer {token}"}
)
assert response.status_code == 200
assert response.json()["name"] == "John"
```
## Mock策略
### Mock时机
```
需要Mock的场景:
├─ 第三方服务:支付、短信、地图
├─ 不稳定服务:外部依赖
├─ 开发中服务:接口未就绪
├─ 特殊场景:异常、超时、限流
└─ 测试数据:特定数据构造
```
### Mock工具
```
├─ WireMock:Java生态,功能全面
├─ MockServer:轻量级,易于使用
├─ Postman Mock:在线Mock服务
├─ MSW:前端Mock,拦截请求
└─ 自建Mock:Python/Node.js脚本
```
## 契约测试
### 什么是契约测试
```
定义:
├─ 生产者和消费者之间接口契约的验证
├─ 确保接口变更不会破坏消费者
└─ 替代部分集成测试
价值:
├─ 早期发现接口不兼容
├─ 减少集成测试依赖
├─ 支持独立部署
└─ 提升开发效率
```
### 契约测试工具
```
├─ Pact:消费者驱动契约测试
├─ Spring Cloud Contract:生产者端契约
└─ Dredd:API文档验证
```
## 验收清单
接口测试完成后检查:
- [ ] 功能测试是否覆盖正向/反向/边界?
- [ ] 安全测试是否覆盖认证/授权/注入?
- [ ] 性能测试是否定义基准?
- [ ] Mock策略是否设计?
- [ ] 契约测试是否实施?
- [ ] 自动化脚本是否可维护?
don't have the plugin yet? install it then click "run inline in claude" again.