-
一、接口测试作用
- 提前介入测试,更早发现问题
- 发现更底层的问题
- 检查服务器的异常处理能力,提高接口健壮性
-
二、接口测试流程
-
需求评审(参与人:产品、研发、测试、设计、埋点等)
-
技术方案评审(参与人:研发、测试等)
- 了解技术实现:技术选型、架构、数据库表设计、前后端交互、技术难点、风险点、涉及哪些接口/服务改动、是否需要并发测试
-
研发开发接口,提供swagger接口文档
-
测试编写接口测试用例
- 编写原则:接口测试用例设计应该满足需求文档,且对异常场景进行友好处理;且测试这个接口是否按照接口文档开发。
-
测试接口文档&初步测试接口
- 接口文档评审,规范的接口文档需要包含(主要分析请求与响应):
- 接口名称、url、请求方式,请求参数(名称、含义、类型,是否必填,是否有默认值,取值范围,示例demo)
- 响应状态码、响应参数(名称、含义、类型、取值范围、示例demo)
- 接口文档评审,规范的接口文档需要包含(主要分析请求与响应):
-
前端接口测试&Mock数据
- 接口层面的测试,确保前端按照后端的要求正确地进行了调用
- 可以利用Charles对前端发送的请求进行抓包
-
后端接口测试&业务逻辑覆盖
-
接口性能调优
-
接口异常机制
-
接口版本控制
-
开始做接口自动化
-
-
三、接口测试用例设计
- 用例设计流程:需求分析->接口文档分析->用例设计->划分用例优先级
- 用例设计要素:
- 功能模块、描述、优先级、前置条件、请求方式、请求路径、请求头、请求参数、预期状态码、预期结果、实际结果、是否通过
- 用例设计优先级
- 优先级-针对所有接口
- 1:暴露给其他系统、第三方调用的接口
- 2:系统内部调用的核心功能
- 3:系统内部调用的非核心功能
- 优先级-针对单个接口
- 正向测试用例优先,逆向用例次之
- 是否需要满足前提条件 > 是否携带默认值参数 > 参数是否必填 >参数类型校验 > 参数数据类型自身的数据范围值限制校验
- 优先级-针对所有接口
- 用例设计思路
- 输入
- 接口处理逻辑
- 输出
- 状态码
- 接口超时
- 未进行超时处理,导致流程阻塞
- 超时后又收到接口返回,导致逻辑出现
- 安全和访问权限测试
- 敏感信息是否加密(身份证号、密码等,前后端数据传输是否加密,日志信息是否加密)
- 越权测试
- 横向越权:获取同级别角色的权限(用户A可以访问用户B的敏感资源,如地址)
- 纵向越权:低权限角色获得高权限角色的权限
- sql注入
- 请求频率
- url是否包括敏感信息
- 文件漏洞
- 文件类型限制,文件大小限制、文件个数限制、MinmeType检测、文件重置
- 性能测试
- qps
- 响应时间
- 吞吐量
- 并发数量
- 服务器资源使用率(cpu、memory、IO、Network)
- 异常测试
- 幂等(重复提交)
- 并发测试
- 事务测试
- 分布式测试
- 环境异常
- 大数据量测试(同时处理大批数据的测试、DB数据量很大时,测试DB操作)
- 第三方服务异常(在后端代码中调试模拟第三方服务异常)
- 用例编写工具
- 使用excel:可通过代码读取excel数据,使自动化更方便
- 使用xmind:层级清晰,易读性高
-
四、接口测试方式
- 手动测试
- postman
- 代码测试
- python的requests
- Java的httpclient
- 手动测试
-
五、测试数据
- 在数据库中改
- 通过代码调用业务接口生成
- 通过easymock模拟接口
-
六、接口测试质量评估标准
- 业务功能覆盖是否完整
- 参数校验是否达到要求
- 接口异常场景覆盖是否完整
- 接口覆盖率是否达到要求
- 代码覆盖率是否达到要求
- 性能指标是否满足要求
- 安全指标是否满足要求
接口测试流程和用例设计
于 2022-02-19 09:42:16 首次发布