接口自动化测试方案设计

接口自动化测试方案设计

简介

在面试的过程中,和接口自动化测试相关的面试题常常会有以下这些:

  1. 写接口自动化测试用例时,你使用了什么库,大概使用到了哪些功能?
  2. 接口自动化实现思路?
  3. 接口产生的垃圾数据如何清理?
  4. 接口响应值嵌套较深,获取不方便怎么办?
  5. 接口的返回字段特别多,结构特别复杂时,如何做断言?

接口自动化测试的需求

自动化测试的需求

在《Google测试之道》中,对于自动化测试,Google 的测试工程师提出了以下的观点

每个测试和其他测试之间都是独立的,使它们就能够以任意顺序来执行。

测试不做任何数据持久化方面的工作。在这些测试用例离开测试环境的时候,要保证测试环境的状态与测试用例开始执行之前的状态是一样的。

测试自动化不仅仅是自动化测试程序的编写。如果想让这些测试程序有价值,必须要去考虑如何编译测试程序、执行、分析、存储和报告所有测试运行结果,这些都是自动化测试会遇到的挑战。

从以上Google的实践案例中,我们不难看出,在设计自动化测试过程中,需要考虑以下几点:

  1. 用例独立性。
  2. 用例的执行过程。
  3. 用例的结果报告。
  4. 用例的测试数据管理。

接口自动化测试的需求

而接口自动化测试的需求则在自动化测试的需求之上,需要基于接口测试本身做更多的处理。

  1. 接口的请求发送,接口测试本身便是根据不同类型的请求发送数据的,所以在自动化测试过程中,一定要非常方便的支持多种的自动化测试方式。
  2. 接口的断言处理,由于接口的数据极为庞大,所以需要有合理的断言的设计方案。
  3. 接口的鉴权处理,由于接口测试的特殊性,权限的校验通常有多种方案,都是由研发决定,有cookie、token等多种方式,不论哪种方式我们都需能正常处理。
  4. 接口测试的用例设计,由于形式的特殊性,在接口测试的过程中,针对于接口的业务场景,也要进行更为合理的用例的补充与设计。

接口自动化测试方案设计

技术选型

为了满足以上的需求,接口自动化测试的方案需要使用到以下相关的技术

类型 需求 框架 原因
自动化测试 用例独立性 pytest pytest 的前置后置功能可以很好的将数据准备与清理功能结合
用例的执行过程 pytest pytest 标签功能(mark)可以很好的满足用例分类与筛选执行
用例的结果报告 pytest allure pytest 的统计数据足够清晰,allure报告的展示较为美观
测试数据管理 pytest
其他数据管理工具
测试环境管理 环境变量结合pytest执行
接口自动化 接口的请求发送 requests 简单、上手快
接口的断言处理 jsonpath jsonschema 应用简单,满足需求
接口的鉴权处理 requests 简单、上手快