1. 功能正确性维度
目标 :验证接口是否按照需求或契约(如OpenAPI文档)正确实现了业务逻辑。
覆盖点:
-
正常流程(Happy Path) :有效输入 → 预期成功响应。
示例:-
登录接口:输入正确的用户名和密码 → 返回200状态码和Token。
-
创建订单接口:输入有效商品ID和数量 → 返回订单号并扣减库存。
-
-
业务规则验证 :
示例:-
订单金额计算是否正确(含折扣、税费)。
-
库存超卖防护(并发下单时库存不能为负数)。
-
2. 输入验证维度
目标 :验证接口对输入数据的校验能力,包括参数格式、类型、必填性、边界值等。
覆盖点:
-
参数类型检查 :
示例:- 传递字符串类型的ID(如
"123"
)给需要数字型ID的接口 → 应返回400错误。
- 传递字符串类型的ID(如
-
参数格式检查 :
示例:- 邮箱字段传入
"user@example"
(缺少域名后缀)→ 返回400并提示"邮箱格式无效"。
- 邮箱字段传入
-
必填字段检查 :
示例:- 登录接口不传
password
字段 → 返回400并提示"密码为必填项"。
- 登录接口不传
-
边界值测试 :
示例:- 分页接口传入
pageSize=1000
(超过系统限制50)→ 返回400并提示"每页最多50条"。
- 分页接口传入
3. 错误处理维度
目标 :验证接口对异常场景的处理是否合理(如错误码、错误信息、日志等)。
覆盖点:
-
明确的错误码和消息 :
示例:-
访问不存在的资源ID → 返回404和"资源未找到"。
-
未授权访问 → 返回401和"请先登录"。
-
-
优雅降级 :
示例:- 依赖的第三方服务不可用时,接口返回503并提示"服务暂时不可用"。
-
错误信息安全性 :
示例:- 数据库错误时不应返回SQL细节(如
"SQL Syntax Error near..."
),而是通用提示"服务器内部错误"。
- 数据库错误时不应返回SQL细节(如
4. 安全性维度
目标 :验证接口的安全防护能力。
覆盖点:
-
身份认证(Authentication) :
示例:- 未携带Token访问需认证的接口 → 返回401。
-
权限控制(Authorization) :
示例:- 普通用户尝试删除管理员账号 → 返回403。
-
敏感数据保护 :
示例:- 返回的响应中不应包含明文密码、身份证号等字段。
-
注入攻击防护 :
示例:- 在输入框中提交
' OR '1'='1
→ 接口应拒绝请求并返回400。
- 在输入框中提交
5. 性能维度
目标 :验证接口在高负载、并发场景下的表现(通常需单独性能测试,但基础案例需覆盖)。
覆盖点:
-
响应时间基线 :
示例:- 单次查询接口的响应时间应<500ms。
-
并发处理能力 :
示例:- 100个并发用户同时下单 → 系统应正常处理,无超时或数据不一致。
-
幂等性(Idempotency) :
示例:- 重复提交同一笔支付请求 → 仅扣款一次。
6. 数据一致性维度
目标 :验证接口操作后,数据库、缓存等数据存储是否一致。
覆盖点:
-
数据库状态验证 :
示例:- 删除用户接口调用后 → 数据库中对应用户的
is_deleted
字段应标记为1。
- 删除用户接口调用后 → 数据库中对应用户的
-
关联数据更新 :
示例:- 订单创建成功后 → 商品库存应同步扣减。
7. 兼容性维度
目标 :验证接口对不同客户端、版本、协议的兼容性。
覆盖点:
-
版本兼容性 :
示例:- 旧版客户端调用新版API → 应返回兼容的响应或提示升级。
-
数据格式兼容性 :
示例:- 接口同时支持JSON和XML请求体。
8. 依赖服务维度
目标 :验证接口对依赖服务(如数据库、第三方API)的容错能力。
覆盖点:
-
依赖服务超时 :
示例:- 支付接口调用第三方支付网关超时 → 应记录日志并返回"支付处理中"状态。
-
Mock测试 :
示例:- 使用WireMock模拟第三方API返回500错误,验证接口的降级逻辑。
9. 幂等性和并发控制维度
目标 :验证重复请求或并发请求是否导致数据错误。
覆盖点:
-
重复提交 :
示例:- 连续两次发送相同的创建订单请求 → 仅生成一个订单。
-
乐观锁控制 :
示例:- 两个用户同时修改同一商品库存 → 后一个请求应失败并提示"库存已变更"。
10. 日志和监控维度
目标 :验证接口的关键操作是否记录日志,便于排查问题。
覆盖点:
-
关键日志记录 :
示例:- 用户登录失败时,日志应记录IP、用户名、失败原因。
-
监控指标 :
示例:- 接口的请求量、错误率、延迟应上报到监控系统(如Prometheus)。
总结:设计维度清单
维度 | 关键问题 | 示例场景 |
---|---|---|
功能正确性 | 接口是否实现了预期的业务逻辑? | 登录成功、订单创建、库存扣减 |
输入验证 | 接口是否校验了参数格式、类型、必填性? | 无效邮箱、缺失必填字段、超长字符串 |
错误处理 | 异常场景是否返回合适的错误码和提示? | 资源不存在、参数错误、服务不可用 |
安全性 | 接口是否防护了未授权访问、敏感数据泄露、注入攻击? | 未授权访问、SQL注入、返回密码明文 |
性能 | 接口响应时间、吞吐量、并发能力是否符合要求? | 高并发下单、慢查询优化 |
数据一致性 | 接口操作后数据库和缓存是否一致? | 订单状态更新后数据库同步 |
兼容性 | 接口是否兼容不同客户端版本或数据格式? | 旧版客户端调用、JSON/XML双支持 |
依赖服务 | 依赖服务失败时接口是否优雅降级? | 第三方API超时、数据库连接失败 |
幂等性/并发 | 重复或并发请求是否导致数据错误? | 重复支付、并发修改库存 |
日志/监控 | 关键操作是否记录日志?监控指标是否完备? | 登录失败日志、接口延迟监控 |
实际应用建议
-
优先级排序:先覆盖P0级功能(如登录、支付核心流程),再逐步覆盖其他维度。
-
工具辅助:
-
使用 Swagger/OpenAPI 文档生成基础测试用例。
-
利用 Postman Collections 或 自动化测试框架 管理案例。
-
-
持续完善:根据线上问题、需求变更补充测试场景。
通过多维度设计案例,可以显著提升接口的健壮性和可靠性。你是需要针对某个具体接口设计案例,还是想了解某个维度的详细示例?