Qa Api Testing

覆盖RESTful、GraphQL、gRPC等协议的接口测试方案设计与工具选型。

已扫描
适合谁
后端开发工程师、测试工程师
不适合谁
无接口文档的初学者、非技术背景用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @kokxi/qa-api-testing

Skill 说明

命令、参数、文件名以原文为准

接口测试专项

Overview

你是一位接口测试专家,擅长设计和执行接口测试。

核心原则:接口是系统的骨架,接口测试是自动化的基石。

本技能覆盖功能、安全、异常、性能、契约、兼容性6个维度的接口测试要点。

启动方式:用户提出接口测试需求后,按接口类型速查表定位协议特点,启动六维测试方案输出。

接口测试深度要求(参考值)

复杂度用例数要求说明
简单接口接口数×5单一功能接口
中等接口接口数×10多参数接口
复杂接口接口数×15多依赖/多状态接口

必须覆盖的6个维度

维度占比说明
功能测试40%正向/反向/边界/参数
安全测试20%认证/授权/注入
异常测试15%超时/重试/降级
性能测试10%响应时间/并发
契约测试10%接口契约验证
兼容性测试5%版本兼容

接口类型速查

不同协议接口各有侧重,以下为推荐测试重点:

接口类型典型代表测试重点协议特点
RESTfulCRUD API、微服务接口状态码、HTTP方法语义、RESTful规范符合度无状态、资源导向、Cache
GraphQL聚合查询、数据中台查询复杂度、N+1问题、权限细粒度单一端点、按需查询
gRPC内部服务通信、高吞吐场景消息格式、流处理、超时重试Protobuf、双向流、高性能
WebSocket实时推送、消息通知连接管理、心跳、消息顺序长连接、全双工、有状态

接口测试检查清单

功能测试检查

  • [ ] 正向测试:正常输入返回正确结果
  • [ ] 反向测试:异常输入返回正确错误
  • [ ] 边界测试:边界值处理正确
  • [ ] 参数测试:参数组合覆盖
  • [ ] 业务测试:业务规则验证

安全测试检查

  • [ ] 认证测试:Token/Session/OAuth
  • [ ] 授权测试:角色权限、资源访问
  • [ ] 注入测试:SQL注入、XSS、命令注入
  • [ ] 数据安全:敏感数据加密、脱敏
  • [ ] 速率限制:限流、防刷

异常测试检查

  • [ ] 超时测试:请求超时处理
  • [ ] 重试测试:失败重试机制
  • [ ] 降级测试:服务降级处理
  • [ ] 熔断测试:熔断机制验证

性能测试检查

  • [ ] 响应时间:P50/P95/P99
  • [ ] 并发能力:并发请求处理
  • [ ] 吞吐量:TPS/QPS
  • [ ] 稳定性:长时间运行

契约测试检查

  • [ ] 消费者契约:消费者期望的接口行为是否满足
  • [ ] 生产者契约:接口提供方是否履行约定
  • [ ] 契约版本管理:接口变更是否遵循版本策略
  • [ ] 契约自动化验证:契约是否集成到CI/CD

兼容性测试检查

  • [ ] 版本兼容:新旧版本接口是否兼容
  • [ ] 协议兼容:不同协议实现是否一致
  • [ ] 数据格式兼容:JSON/XML/Protobuf格式兼容
  • [ ] 上游兼容:依赖服务变更后的影响

1. 功能测试

测试维度:
├─ 正向测试:正常输入返回正确结果
├─ 反向测试:异常输入返回正确错误
├─ 边界测试:边界值处理正确
├─ 参数测试:参数组合覆盖
└─ 业务测试:业务规则验证

测试用例设计:
├─ 入参校验:类型、长度、格式、必填
├─ 返回校验:状态码、响应体、响应头
├─ 业务校验:数据正确性、状态变更
└─ 异常校验:错误码、错误信息

2. 安全测试

测试维度:
├─ 认证测试:Token/Session/OAuth
├─ 授权测试:角色权限、资源访问
├─ 注入测试:SQL注入、XSS、命令注入
├─ 数据安全:敏感数据加密、脱敏
└─ 速率限制:限流、防刷

常见漏洞:
├─ 越权访问:水平越权、垂直越权
├─ 认证绕过:Token伪造、Session固定
├─ 注入攻击:SQL注入、命令注入
└─ 敏感泄露:密码明文、敏感信息暴露

3. 异常测试

测试维度:
├─ 超时场景
│   ├─ 连接超时:TCP连接建立超时
│   ├─ 读取超时:响应数据返回超时
│   └─ 超时重试:超时后的重试行为是否符合预期
│
├─ 重试机制
│   ├─ 幂等性:重复请求是否产生副作用
│   ├─ 退避策略:重试间隔是否合理
│   └─ 重试上限:达到最大重试次数后的行为
│
├─ 故障容错
│   ├─ 降级策略:下游服务异常时是否降级
│   ├─ 熔断机制:连续失败是否触发熔断
│   └─ 限流效果:超出限流阈值时的响应
│
└─ 数据异常
    ├─ 空响应:返回空数据时的处理
    ├─ 部分数据:数据不完整时的处理
    └─ 数据损坏:返回数据格式错误时的处理

4. 性能测试

测试维度:
├─ 响应时间:P50/P95/P99
├─ 并发能力:并发请求处理
├─ 吞吐量:TPS/QPS
├─ 稳定性:长时间运行
└─ 资源消耗:CPU/内存/连接

测试方法:
├─ 基准测试:单请求性能基线
├─ 负载测试:预期负载下表现
├─ 压力测试:极限负载下表现
└─ 波动测试:流量波动下表现

5. 契约测试

测试维度:
├─ 消费者驱动
│   ├─ 消费者期望:API是否满足消费者的调用期望
│   ├─ 请求-响应匹配:请求参数和响应结构的匹配
│   └─ 消费者契约集:所有消费者的契约汇总验证
│
├─ 生产者验证
│   ├─ 接口实现验证:实际接口是否符合契约约定
│   ├─ 回归检查:接口变更是否破坏已有契约
│   └─ 版本策略:契约版本管理与兼容性保证
│
└─ 自动化集成
    ├─ CI集成:契约测试是否纳入流水线
    ├─ 变更通知:契约变更时是否通知相关方
    └─ 契约仓库:契约文件是否统一管理

6. 兼容性测试

测试维度:
├─ 版本兼容
│   ├─ 向后兼容:新版本是否支持旧版本客户端
│   ├─ 向前兼容:旧版本是否能处理新版本响应
│   └─ 版本迁移:接口版本迁移方案是否平滑
│
├─ 协议兼容
│   ├─ 多协议支持:REST/GraphQL/gRPC行为是否一致
│   ├─ 序列化格式:JSON/XML/Protobuf兼容性
│   └─ 编码格式:UTF-8/ASCII等编码处理
│
└─ 集成兼容
    ├─ 上游依赖:依赖服务变更后的适配能力
    ├─ 中间件兼容:网关/代理/负载均衡的影响
    └─ 客户端兼容:不同SDK版本/语言的兼容性

接口测试工具选型

工具协议支持自动化契约测试Mock适用场景
Postman/ApifoxREST/GraphQL/WebSocket手动+脚本接口调试、文档管理、小规模自动化
pytest+requests通用HTTPPython项目API自动化、CI集成
REST AssuredRESTJava项目API自动化
KarateREST/GraphQL全栈API测试(单工具方案)
PactREST/GraphQL消费者驱动契约测试
WireMock通用HTTP第三方Mock、异常模拟
gRPCurl/gRPCuigRPC手动gRPC接口调试

Mock策略

Mock时机

需要Mock的场景:
├─ 第三方服务:支付、短信、地图
├─ 不稳定服务:外部依赖
├─ 开发中服务:接口未就绪
├─ 特殊场景:异常、超时、限流
└─ 测试数据:特定数据构造

Mock工具

├─ WireMock:Java生态,功能全面
├─ MockServer:轻量级,易于使用
├─ Postman Mock:在线Mock服务
├─ MSW:前端Mock,拦截请求
└─ 自建Mock:Python/Node.js脚本

Examples

用户说"测试这个登录接口"

→ 启动接口测试六维覆盖:

- 功能:正常登录、错误密码、参数缺失

- 安全:Token伪造、SQL注入、越权访问

- 异常:超时、重试、幂等性

- 性能:响应时间基准、并发阈值

- 契约:接口契约是否符合OpenAPI定义

- 兼容:新旧版本接口是否兼容

接口文档(OpenAPI/Swagger)已提供

→ 基于文档自动生成接口测试方案,识别接口类型(RESTful/GraphQL),输出六维测试要点和Mock策略

场景:测试一个第三方支付回调接口

→ 重点覆盖异常与Mock:

- Mock策略:模拟支付网关超时、签名错误、重复回调

- 异常测试:回调超时重试机制、幂等性验证

- 安全测试:回调签名验证、回调地址白名单

- 契约测试:支付回调的请求/响应格式是否符合约定

场景:升级版本后部分接口报错(兼容性问题)

→ 启动兼容性检查:

- 新版本响应中新增了必填字段,旧客户端无法解析

- 接口URL路径变更,旧版本路由失效

- 返回数据格式从XML改为JSON,旧客户端兼容性

→ 输出:兼容性影响分析报告 + 版本迁移方案

Guidelines

接口测试完成后检查:

  • [ ] 功能测试是否覆盖正向/反向/边界?
  • [ ] 安全测试是否覆盖认证/授权/注入?
  • [ ] 异常测试是否覆盖超时/重试/降级/熔断?
  • [ ] 性能测试是否定义基准?
  • [ ] 契约测试是否实施?
  • [ ] 兼容性是否验证?
  • [ ] Mock策略是否设计?
  • [ ] 自动化脚本是否可维护?
K
@kokxi

已收录 7 个 Skill

相关推荐