接口自动化测试方案设计
简介
在面试的过程中,和接口自动化测试相关的面试题常常会有以下这些:
- 写接口自动化测试用例时,你使用了什么库,大概使用到了哪些功能?
- 接口自动化实现思路?
- 接口产生的垃圾数据如何清理?
- 接口响应值嵌套较深,获取不方便怎么办?
- 接口的返回字段特别多,结构特别复杂时,如何做断言?
接口自动化测试的需求
自动化测试的需求
在《Google测试之道》中,对于自动化测试,Google 的测试工程师提出了以下的观点
每个测试和其他测试之间都是独立的,使它们就能够以任意顺序来执行。
测试不做任何数据持久化方面的工作。在这些测试用例离开测试环境的时候,要保证测试环境的状态与测试用例开始执行之前的状态是一样的。
测试自动化不仅仅是自动化测试程序的编写。如果想让这些测试程序有价值,必须要去考虑如何编译测试程序、执行、分析、存储和报告所有测试运行结果,这些都是自动化测试会遇到的挑战。
从以上Google的实践案例中,我们不难看出,在设计自动化测试过程中,需要考虑以下几点:
- 用例独立性。
- 用例的执行过程。
- 用例的结果报告。
- 用例的测试数据管理。
接口自动化测试的需求
而接口自动化测试的需求则在自动化测试的需求之上,需要基于接口测试本身做更多的处理。
- 接口的请求发送,接口测试本身便是根据不同类型的请求发送数据的,所以在自动化测试过程中,一定要非常方便的支持多种的自动化测试方式。
- 接口的断言处理,由于接口的数据极为庞大,所以需要有合理的断言的设计方案。
- 接口的鉴权处理,由于接口测试的特殊性,权限的校验通常有多种方案,都是由研发决定,有cookie、token等多种方式,不论哪种方式我们都需能正常处理。
- 接口测试的用例设计,由于形式的特殊性,在接口测试的过程中,针对于接口的业务场景,也要进行更为合理的用例的补充与设计。
接口自动化测试方案设计
技术选型
为了满足以上的需求,接口自动化测试的方案需要使用到以下相关的技术
类型 | 需求 | 框架 | 原因 |
---|---|---|---|
自动化测试 | 用例独立性 | pytest | pytest 的前置后置功能可以很好的将数据准备与清理功能结合 |
用例的执行过程 | pytest | pytest 标签功能(mark)可以很好的满足用例分类与筛选执行 | |
用例的结果报告 | pytest allure | pytest 的统计数据足够清晰,allure报告的展示较为美观 | |
测试数据管理 | pytest 其他数据管理工具 |
||
测试环境管理 | 环境变量结合pytest执行 | ||
接口自动化 | 接口的请求发送 | requests | 简单、上手快 |
接口的断言处理 | jsonpath jsonschema | 应用简单,满足需求 | |
接口的鉴权处理 | requests | 简单、上手快 |