接口自动化测试方案

news2025/4/21 8:41:45

1、引言

  1.1 文档版本

版本

作者

审批

备注

V1.0

XXXX

创建测试方案文档

  1.2 项目情况

项目名称

XXX

项目版本

V1.0

项目经理

XX

测试人员

XXXXX,XXX

所属部门

XX

备注

  1.3 文档目的

    本文档主要用于指导XXX-YY项目常用接口自动化测试工作的开展。本文档的主要目的在于提供项目接口自动化测试的技术方案、实施方案和计划方案等。

2、接口自动化实施目标

  2.1 实施原则

    XXX-YY项目采用接口自动化测试,主要目的是为了应对迭代版本测试过程中的重复工作任务,以期达到效果如下:

  • 降低测试成本
  • 提高测试效率
  • 更频繁地执行覆盖重要接口
  • 提供更高的准确性和一致性
  • 节约时间成本

  虽然能达到上述预期效果,但实际实施过程中需要注意的是,接口自动化的高效应用,对于被测系统有着更高的要求,也需要遵循合理的方法流程,现总结如下:

  • 接口自动化的实施应该被用于解决测试过程中高重复性的工作,很大一部分是用于回归测试老的功能接口,否则其本身工作量投入会大于其收益,所以不能盲目对所有接口或功能追求自动化。
  • 对于提测版本,自身稳定性需要有一定程度的保障。过于频繁的接口变动,会加大后续接口自动化的实施难度,增加自动化脚本维护地成本。
  • 接口自动化的整体实现应采用分布进行,测试过程中优先覆盖功能稳定且比较重要的接口,进而逐步扩展到整体项目的接口回归。
  • 接口自动化测试是一个长期的过程,随着项目版本的不停迭代优化,项目本身的接口也会不断优化或新开发,所以后续自动化测试脚本的代码维护和调优也具有可观的工作量。

  2.2 接口自动化测试范围

    系统范围:

自动化实施阶段

被测模块

功能接口范围

第一阶段

登录获取token,YY标签页

第二阶段

    阶段范围:

      这里我们优先测试一下登录的接口和一些插入XXX功能的接口。

  2.3 接口自动化测试任务

  • 制定测试方案

脚本编码前,需要对项目有一个整体把握,合理预估接口数量与复杂度。结合版本迭代时间,预估自动化脚本开发时间,并制定出相应的接口自动化测试方案。

  • 提取分析测试点

根据前面写好的接口自动化测试范围,分析每个接口的测试点,包含请求方式,传入参数,请求头,返回状态,返回数据等。这个过程中,需要和相对应的开发对接清楚在测试范围内的接口的相关信息,并提前在postman中逐一确认调通,必要时生成相应的测试文档或编写进入测试用例中。

  • 搭建测试框架

    此次接口自动化测试框架采用的是以Python语言为脚本开发语言,选用unittest接口测试框架。目的希望达成可配置,能自动运行脚本,自动生成测试报告并将生成的测试报告发送到指定邮件。

  • 编写脚本代码

    脚本首次实现不需要覆盖到每个接口。先预计挑选几个重要接口进行覆盖测试,等整体测试框架搭建好后,整体流程确认调通无误后,再后续维护完善脚本,覆盖更多的功能接口。

  • 持续集成

    同上,初次脚本代码完成后,需要对现有自动化脚本进行升级持续集成开发,不断完成尚未覆盖到的接口,将这些接口加入到自动化测试的范围内,使得整体自动化程度进一步加深,更大程度上节约人力和时间成本。

  • 脚本维护

    脚本维护是在整体自动化脚本阶段性完成后,将现有生成的交付物归档整理好给相应的负责人管理,并进行阶段性的更新整理维护。包含项目日常版本迭代维护过程中对接口有改动的部分,和后续新加入接口得自动化覆盖等。

3、接口自动化技术选型

  3.1 整体体系

    结合测试金字塔(从下到上依次是:单元测试,服务测试,用户界面测试)以及XXX-YY项目本身的流程特性考量,本次自动化实现主要是以接口自动化的形式来开展。整个自动化脚本以 Python3.X 中 requests 库为核心机制,以 unittest 为测试组织,以 HTMLTestRunner 生成最终测试报告,Jenkins 实现持续集成,并选取 Python3.X 作为编程语言实现。

 

  3.2 核心技术

    3.2.1 接口自动化执行库--Requests

    首先,Requests 是使用 Python 语言编写,基于 urllib,采用 Apache2 licensed 许可证的 HTTP 库。它比一般的 urllib 等库更加方便、简洁,可以节约我们大量的工作,完全满足HTTP 测试需求,总结为一句话:Requests 是 Python 实现的简单易用的 HTTP 库。其次,Requests 库安装和导入非常方便。

    pip3 install requests  ## 安装 Requests 库

    import requests ## 导入 Requests 库到项目中

    我们可以使用该库实现以下各种方法:

    requests.get("https://url.cn")              # GET请求

    requests.post("http://url.cn")              # POST请求

    requests.put("http://url.cn")               # PUT请求

    requests.delete("http://url.cn")            # DELETE请求

    requests.head("http://url.cn")              # HEAD请求

    requests.options("http://url.cn")           # OPTIONS请求

    3.2.2 测试组织和断言机制--unittest

    unittest 模块是 Python 中自带的一个单元测试模块,我们可以用来做接口自动化代码级别的测试组织和断言机制。其中比较重要的小组件模块有:TestCase,TestSuit,TestLoader,TextTestRunner,TextTestResult等。

    TestCase:用来编写逐条的测试用例,是所有测试用例的基类,他是 unittest 模块中最基本的组成单元。一个 testcase 就是一个测试用例,是一个完整的测试流程,包括测试前的环境搭建准备 setUp,执行测试代码和断言机制,以及测试一条用例完成后的环境还原 tearDown 等。

    TestSuit:多个TestCase就组成了一个TestSuit(测试用例集),这是用来存放一条一条测试用例的集合。

    TestLoader:是用来将逐条的测试用例 TestCase 加载到用例集合 TestSuit 中,其中加载的方式有多种,就是从脚本项目中寻找到单独的用例,创建他们的实例,然后加载到一起,组成TestSuit,再返回一个TestSuit的实例。

    TextTestRunner:是用来执行用例集 TestSuit 中的测试用例。

    TextTestResult:用来保存测试结果,包含执行了多少条测试用例,成功与失败用例的条数等信息。

    示意图如下(网络来源图):

 

    3.2.3 测试报告生成--HTMLTestRunner

    当我们批量执行完用例集 TestSuit 中的接口用例后,生成的测试报告是dos端文本格式展示的,不是很直观,这里我们引入一个第三方库--HTMLTestRunner,使用这个第三方库我们可以生产成 HTML 网页格式的测试报告。

 

    3.2.4 持续集成机制--Jenkins

    这里我们脚本持续集成选择  Jenkins 来实现,通过使用 Jenkins,我们能够实现脚本自动化执行,包含定时执行自动化测试脚本,和自动化脚本运行后的测试报告发送到指定的邮箱中。

  3.3 框架思想

    3.3.1 封装思想

    整个接口自动化测试脚本采用面向对象的封装思想,尽量将一些可配置的模块单独提取出来,便于后续操作配置,使得整体项目更加灵活多变,便于后续地迭代维护和二次开发。封装思想主要体现在测试环境可配置,测试用例可导入,测试数据和脚本分离,文件路径采用相对路径表示等,具体我们会在实际编码分层中得到体现。

    3.3.2 数据驱动实现

    数据驱动这里我们采用的是 Python 中的装饰器--DDT(Data Driven Tests)来体现。通过他我们可以复用我们的脚本代码,达到数据驱动测试的目的。官方对DDT的描述是:DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。

    这里官方网站中对DDT的介绍做一个简单描述。首先,DDT主要是由一个类装饰器 @ddt(用于我们脚本中的TestCase子类)和两个方法装饰器(用于我们想要批量处理的测试数据)分别是 @data(这里需要保持提供参数和被测参数个数一致)和 @file_data(将从JSON 或者 YAML 文件中加载测试数据)。其次,关于data修饰的方法传入的参数,会被当做一个整体传入,如果这些参数像是元组一类的参数,那么你必须将他们分解开传入到你的测试中。另外,你可以使用另一个装饰器 @unpack,来解压缩分解你的参数为多个参数。(附:DDT官方文档:Welcome to DDT’s documentation! — DDT 1.5.0 documentation)

4、测试环境需求

  4.1 硬件环境

  目前暂未涉及到性能相关或者需要分布式执行的内容,因此对硬件要求不是很高,日常办公硬件即可。如果后续有涉及性能相关内容,硬件环境需要再另外的性能测试方案中体现。

  4.2 软件环境

软件相关

版本号

备注

Python

v3.7

脚本编码语言为 Python3.x

PyCharm

v2016.3.3

5、人员进度安排

  5.1 职责分配

组别/人员

职责

备注

  5.2 进度安排

测试任务

负责人

开始时间

备注

自动化测试方案制定

接口用例编写

自动化测试环境搭建

自动化测试框架搭建

自动化脚本代码编写

持续集成实现

测试报告输出

脚本二次维护开发

  5.3 交付物管理

交付物

负责人

备注

《自动化测试方案》

自动化框架

自动化脚本代码

测试执行报告

Python接口自动化测试零基础入门到精通(2023最新版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1137033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据隐私保护与合规性:现代企业的数据安全策略

第一章:引言 在当今数字化时代,数据已经成为企业最宝贵的资源之一。然而,伴随着大规模数据收集和处理的增加,数据隐私保护和合规性问题也日益凸显。本文将深入探讨数据隐私保护和合规性对现代企业的重要性,并提供一些…

重大突破!国内首个ASIL D认证MCU在底盘域量产上车

中国本土车规级MCU再次实现了重要突破。 近日,芯驰科技的高性能车规MCU——E3搭载在明然科技悬架控制器(CDC)批量下线,并且成功在奇瑞瑞虎9、星途瑶光等车型上正式量产,成为了国内首个应用在主动悬架的车规控制芯片。…

行业追踪,2023-10-26

自动复盘 2023-10-26 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

干货很干:5个有效引流方法,让客户找上门

如何才能把用户引流到私域?是很多老板,店主,线上创业者的卡点,今天分享5个实用方法: ✅线下导流 ✅巧用搜索 ✅同行互推 ✅社群引流 ✅内容输出 所以引流不仅需要知道方法,还需要知道底层逻辑,也…

分布式事务(Seata)——Seata分布式事务XA模式、AT模式、TCC模式的介绍和对比 结合案例分析AT模式和XA模式【源码】

前言 事务(TRANSACTION)是一个不可分割的逻辑单元,包含了一组数据库操作命令,并且把所有的命令作为一个整体向系统提交,要么都执行、要么都不执行。 事务作为系统中必须考虑的问题,无论是在单体项目还是在分布式项目中都需要进行…

从零开始:开发知识付费小程序的入门指南

当下,知识付费小程序成为了一个独具潜力的领域。本篇文章将为您提供一份从零开始的知识付费小程序开发入门指南,让您能够进入这个领域并开始赚取您的专业知识。 第一步:什么是知识付费小程序? 知识付费小程序是一种基于微信小程…

数据创建与数据管理

原文:Dataset Creation and Curation Introduction to Data-Centric AI 为监督学习创建数据集需要样本以及样本的标签。课程专注于分类任务,但是把这些原理运用到其它监督学习的任务也是可以的。 数据收集 寻找训练数据时的关键问题: 1.…

c#学习相关系列之构造函数

目录 一、构造函数的作用 二、构造函数的特征 三、三种构造函数介绍 1、实例构造函数 2、静态构造函数 3、私有构造函数 一、构造函数的作用 构造函数用来创建对象,并且可以在构造函数中对此对象进行初始化。构造函数具有与类相同的名称,它通常用来…

每日一练 | 网络工程师软考真题Day45

阅读以下说明,答复以下【问题1】至【问题4】 【说明】 某公司有1个总部和2个分部,各个部门都有自己的局域网。该公司申请了4个C类IP地址块 202.114.10.0/24~202.114.13.0/24。公司各部门通过帧中继网络进行互联,网络拓扑结构如图1-1所示。 【…

如何在线去除图片上的水印?一分钟教你一键去除

想要去除图片上的水印?不妨试试在线图片水印去除工具!在个人生活或工作中,我们常常需要使用他人的图片,然而图片上的水印却常常成为阻碍,若你正为此烦恼,那么在线图片去水印工具将成为你的救星,…

禁止使用U盘的方法

禁止使用U盘的方法 说到保护电脑数据安全,无论是个人还是企业,这都是一个很重要的问题,大家都会想到设置电脑开机密码,但这还远远达不到我们的要求,有很多种方法可以跳过开机验证,直接进入电脑。所以我们还…

代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球

LeetCode T860 柠檬水找零 题目链接:860. 柠檬水找零 - 力扣(LeetCode) 题目思路: 这道题我们只要顺序按照数组判断是否能有钱找零即可,我们定义三个变量来记录每张钞票目前的数量,其中我们知道给10元得找5元,给二十元得找515元,而15元的组合有10元5元和…

算法通过村第十七关-贪心|青铜笔记|贪心也很简单呕

文章目录 前言难以解释的贪心算法贪心问题发放饼干柠檬水找零分发糖果 总结 前言 提示:我像接纳变甜的果实一般迎接此时。 --朱塞培翁加雷蒂《享受》 贪心的思想很难用理论去解释,这里我们通过案例感受下,怎么思考贪心的问题。 难以解释的贪心…

threejs(5)-详解灯光与阴影

一、Gsap动画库基本使用与原理 npm 地址:https://snyk.io/advisor/npm-package/gsap import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import…

设备巡检怎么规范流程?如何做好后勤管理工作?

后勤巡检对于企业和高校来说,就像一台电脑上的安全防护软件,它会定期或不定期地扫描和检查系统,找出存在的问题,例如垃圾文件和病毒风险。巡检的目的是为了检查公司和高校的各项设施、设备和环境等,以发现潜在的环境安…

React之服务端渲染

一、是什么 在SSR中 (opens new window),我们了解到Server-Side Rendering ,简称SSR,意为服务端渲染 指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可…

【C++】类与对象 第一篇(class,this)

目录 什么是类? 类的引入 class 类的两种定义方式: 声明与定义分离 类的访问限定符号 访问限定符​编辑 C中struct和class的区别是什么? 封装 类的作用域 类的实例化 类对象模型 如何计算类对象的大小 this指针 C语言和C实现Stack的对比 C语言实现…

程序员新手村常见问题

到今年已经工作十一个年头了,把这些年自己出现在自己身上或者同事身上的问题记录下来。 手里有锤子,看神马都是钉子 新人程序员很容易手段目的化,战术战略化。学了一门新技术后,不管具体的技术场景,哪里都想拿出来比…

2023年【广东省安全员A证第四批(主要负责人)】考试题及广东省安全员A证第四批(主要负责人)考试内容

题库来源:安全生产模拟考试一点通公众号小程序 广东省安全员A证第四批(主要负责人)考试题是安全生产模拟考试一点通总题库中生成的一套广东省安全员A证第四批(主要负责人)考试内容,安全生产模拟考试一点通…

CNN 网络结构简介

本文通过整理李宏毅老师的机器学习教程的内容,介绍 CNN(卷积神经网络)的网络结构。 CNN 网络结构, 李宏毅 CNN 主要应用在图像识别(image classification, 图像分类)领域。 通常,输入的图片大小相同&am…