Skip to content

【实战】接口测试企业微信

简介

学习目标

  • 掌握接口测试设计思路与方法。
  • 掌握常用接口测试工具 Postman。
  • 掌握常用抓包工具 Charles。
  • 掌握接口手工 mock 技术。

学习的这些知识其实都是企业中所具备的需求。

实战练习-企业微信接口测试实战

  • 被测产品介绍
  • 需求说明
  • 实战思路
  • 实战演练

实战目标

  • 了解接口测试的价值。
  • 掌握接口测试设计思路。
  • 掌握常用接口测试工具 Postman。
  • L1 接口协议与接口测试
  • L2 常用抓包工具
  • L3 Mock 工具使用
  • L4 Mock 工具与定制化

被测产品介绍

  • 企业微信
    • 企业微信是腾讯微信团队打造的企业通讯与办公工具。
    • 具有与微信一致的沟通体验,丰富的 OA 应用,和连接微信生态的能力。
    • 可帮助企业连接内部、连接生态伙伴、连接消费者。专业协作、安全管理、人即服务。

环境准备

需求说明

  • 完成企业微信部门管理接口测试:
    • 编写接口测试用例:创建部门。
    • 使用 postman 编写接口测试用例与断言。

企业微信其实开放很多接口,这里我们使用的是通讯录管理中部门管理的接口来做演练。

我们需要完成的目标是: - 编写接口测试用例:创建部门。 - 使用 postman 编写接口测试用例与断言。

相关知识点

形式 章节
知识点 接口测试价值与体系
知识点 常见的接口协议
知识点 接口测试用例设计
知识点 postman 基础使用
知识点 【实战】postman 实战练习
知识点 【实战】接口测试实战练习

什么是接口测试

在了解接口测试之前,必须先知道什么是接口

接口

不同的系统之间相互连接的部分,是一个传递数据的通道。

大家都知道,咱们现在的产品基本都是前后端分离开发的。也就是 UI 界面和后端服务是分开开发的。这样的开发模式,就决定了如果前端要和后端进行数据交互的话,必须要有一个桥梁来进行沟通。那这个桥梁其实就是我们说的接口。

要进行数据交互的时候,前端会先发送对应的请求给接口,接口收到请求后会去调用对应的后端方法得到响应结果,然后接口再把响应结果返回给前端。

通过这些接口,我们的客户端和服务端之前进行了一系列的数据交互。这种接口也叫做程序内部接口。

除了内部接口之外,还有外部的接口。外部接口常见的例子就是通过第三方登录、第三方支付等,通过调用第三方的忌口并返回当前的系统。

知道了什么是接口之后,我们再来看什么是接口测试。

接口测试

检查数据的交换、传递和控制管理过程。

接口测试本质是基于某种协议,发送一个请求给服务器,然后服务器返回一个响应数据,通过对响应的分析,判断是否与我们预期的返回一致,从而验证功能是否正确,这就是接口测试。

在这个过程中,通常的关注点如下:

  1. 接口的功能测试。
  2. 接口的性能测试。
  3. 接口的安全测试。

接口测试价值

到这里,可能部分同学纳闷的地方在于,手工点点点,貌似已经可以覆盖到全部的流程了,为什么还需要接口测试呢?

测试金字塔

重点可以关注一下这张图片,讲的其实是分层测试,在分层测试体系中,有一个大家共识的结论就是:

  • 越往上,发现 Bug 的时间越晚,成本越高
  • 接口测试(Service)相比 UI 测试,可以更早发现问题,更快的质量反馈
接口测试不能完全取代功能测试
  1. 接口测试虽然有很多优点,但是保证的是后端工程师的产出质量,不能解决移动端的质量。
  2. 前端工程师的产出质量只能通过前端测试保证。

如何完成接口测试

uml diagram

这几本就是实际工作中,我们做接口测试的流程。它其实是包含在整个测试工作流程中的一部分。

下面,我们就按照这个流程来完成接口测试实战演练。

接口文档分析

在文档分析的时候,需要详细关注以下几个方面

  1. 业务场景
  2. 字段限制:
    • 长度
    • 非空
    • 类型
    • 其他内容

企业微信接口文档:https://work.weixin.qq.com/api/doc/90000/90135/90664

接口测试用例设计

uml diagram

接口测试主要关注的内容分为以下几个部分:

  1. 基本功能流程测试(正向功能验证)
    • 冒烟测试。
    • 正常流程覆盖测试。
  2. 基于输入域的测试
    • 边界值测试
    • 特殊字符校验
    • 参数类型校验
    • 必选参数校验
    • 组合参数校验
    • 排重逻辑
    • 接口幂等性
  3. 故障注入测试
    • Redis 故障降级测试。
    • 服务故障转移测试。

大部分的验证点其实都很好构造,其中有几个非功能角度的测试点给大家强调一下:

  • 幂等测试:

幂等性测试常见于以下场景:

  1. 用户重复提交: 非常容易发生,前端、后端均需要控制
  2. 网络重发: 容易遗漏,但有可能发生

幂等性测试可以使用以下两个方法完成:

  1. 前端:注意按钮的多次快速点击;
  2. 后端:多次发送同一参数的请求,查看服务端响应。
  • 缓存数据库 Redis 测试

如果研发在架构设计的过程中,使用了Redis 技术栈。那么则需要注意 Redis 常见的一些测试点,主要包含以下几种:

  1. 缓存击穿:https://ceshiren.com/t/topic/23163
  2. 缓存穿透:https://ceshiren.com/t/topic/23163
  3. 缓存雪崩:https://ceshiren.com/t/topic/24558
  4. 缓存失效:https://ceshiren.com/t/topic/23278
  • DB 故障注入
  1. 开发配合制造DB数据丢失场景,启动数据恢复策略,规定时间段内数据恢复。
  2. 开发配合制造DB崩溃场景,DB 多活策略启动,功能无影响。

接口测试用例编写

  • 用例名称
  • 接口地址
  • 请求方式
  • 前置条件
  • 请求头部
  • 请求参数
  • 响应状态码
  • 预期响应结果

课堂练习

  • 补充完成企业微信部门管理接口测试用例设计。

接口测试执行

接口测试过程中有以下常见工具:

  • Charles、Fiddler(代理工具,用来抓包或者 mock)
  • postman(推荐)
  • Jmeter(性能测试工具)
  • loadRunner(商业收费工具,不推荐)
  • python:Requests、HttpRunner(脚本实现)
  • Java:HttpClient、RestAssured(脚本实现)

接下来,使用 Postman完成对应实战:

  1. Postman 构建接口请求
  2. Postman 编写断言
  3. Postman 创建测试集