接口自动化测试方案模版。希望可以帮到你

news2024/11/18 5:34:34

XXX接口自动化测试方案

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官方文档:)

4、测试环境需求

  4.1 硬件环境

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

  4.2 软件环境

软件相关

版本号

备注

Python

v3.7

脚本编码语言为 Python3.x

PyCharm

v2016.3.3

5、人员进度安排

  5.1 职责分配

组别/人员

职责

备注

  5.2 进度安排

测试任务

负责人

开始时间

备注

自动化测试方案制定

接口用例编写

自动化测试环境搭建

自动化测试框架搭建

自动化脚本代码编写

持续集成实现

测试报告输出

脚本二次维护开发

  5.3 交付物管理

交付物

负责人

备注

《自动化测试方案》

自动化框架

自动化脚本代码

测试执行报告

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

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

相关文章

匠心传承,长期主义 | 竹云董事长董宁受邀出席大湾区品牌新消费论坛

10月8日,大湾区品牌新消费论坛在深圳落下帷幕,此次论坛以“酿造美好生活”为主题,由广东省粤港澳大湾区产业协同发展联合会、张支云酒业集团主办,香港大湾区工商业联合会、深圳市老字号协会协办。 深圳市人大常委会教科文卫工委主…

红队专题-REVERSE二进制逆向反编译

红队专题 招募六边形战士队员IDA pro安装python2加入环境变量py2安装pip安装IDA 7.0 proIDAPython: importing "site" failed. 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 IDA pro 安装python2 python-2.7.3.msi 加入环…

点云曲面重建

曲面重建技术在逆向工程、数据可视化、机器视觉、虚拟现实、医疗技术等领域中得到了广泛的应用 。 例如,在汽车、航空等工业领域中,复杂外形产品的设计仍需要根据手工模型,采用逆向工程的手段建立产品的数字化模型,根据测量数据建…

时代风口中的Web3.0基建平台,重新定义Web3.0!

近年来,Web3.0概念的广泛兴起,给加密行业带来了崭新的叙事方式,同时也为加密行业提供了更加具有想象力的应用场景与商业空间,并让越来越多的行业从业者们意识到只有更大众化的市场共性需求才能推动加密市场的持续繁荣。当前围绕这…

软件测试/测试开发丨App自动化—高级控件交互方法

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27687 一、Actions Actions执行一系列或多个键盘和指针(触摸、鼠标、触控笔)操作链w3c 二、用法 定义 ActionChains 实例定义输…

种草文案怎么写吸引人?纯干货

种草文案的最终目的是激发用户的购买欲望,使他们产生购买行为。为了实现这一目标,种草文案应当抓住用户的痛点,突出产品的优势,让用户感受到产品的实用价值。此外,种草文案还应注重情感诉求,通过生动的故事…

Bean的作用域和生命周期(Bean是线程安全的吗?Spring如何在并发情况下获取不完整的Bean...)

Bean 注解是 Spring 框架中的一个注解,用于告诉 Spring 容器需要将被注解修饰的方法的返回值注册为一个 Bean。通常情况下,Spring 容器会自动扫描并创建带有 Component 或其他类似注解的类,并将这些类的实例注册为 Bean。但对于某些特殊情况&…

iPhone手机上使用的定时提醒APP是哪个

在日常喧闹的生活和工作中,琐碎的任务会像喷泉一样突涌而至,如不及时规划,我们将陷入手足无措的境地。而想要让各项工作任务按时完成,我们可以借助一些比较好用的时间提醒软件来督促各项任务。 就拿常用的iPhone手机来讲&#xf…

Tomcat隔离web原理和热加载热部署

Tomcat 如何打破双亲委派机制 Tomcat 的自定义类加载器 WebAppClassLoader 打破了双亲委派机制,它首先自己尝试去加载某个类,如果找不到再代理给父类加载器,其目的是优先加载 Web 应用自己定义的类。具体实现就是重写 ClassLoader 的两个方法…

九小场所“一店一码”消防安全监管如何制作

将九小场所信息在凡尔码平台生成消防安全码落地粘贴场所,微信扫码了解场所以往消防安全检查情况、整改情况;同时也可以了解学习消防安全知识;“一店一码”实现场所消防安全动态管理。 监管部门检查微信扫码即可填写检查记录,有隐…

【智能家居项目】裸机版本——网卡设备接入输入子系统 | 业务子系统 | 整体效果展示

🐱作者:一只大喵咪1201 🐱专栏:《智能家居项目》 🔥格言:你只管努力,剩下的交给时间! 目录 🥞网卡设备接入输入子系统🍔测试 🥞业务子系统&#…

Astronomaly:利用 CNN 和主动学习识别 400 万张星系图像中的异常

星系中的异常现象是我们了解宇宙的关键。然而,随着天文观测技术的发展,天文数据正以指数级别增长,超出了天文工作者的分析能力。 尽管志愿者可以在线上参与对天文数据的处理,但他们只能进行一些简单的分类,还可能会遗漏…

数字孪生与GIS数据为何高度互补?二者融合后能达到什么样的效果?

山海鲸可视化作为一款数字孪生软件,在GIS的融合方面处于业内领先水平,那么为什么一款数字孪生软件要花费巨大的精力,去实现GIS的融合,实现后又能达到什么样的效果呢?下面就让我们来一探究竟。 一、为什么数字孪生需要…

OpenCV级联分类器识别车辆实践笔记

1. OpenCV 级联分类器的基本原理 基于Haar特征的级联分类器的目标检测是Paul Viola和Michael Jones在2001年的论文中提出的一种有效的目标检测方法。这是一种基于机器学习的方法,从大量的正面和负面图像中训练级联函数。然后用它来检测其他图像中的物体。 Haar特征…

终于找到了!多种类型的电子期刊模板在这里!

经过我不懈的努力和搜寻,终于找到了一个提供多种类型电子期刊模板的网站。这个网站拥有丰富多样的模板,可以满足各种不同的需求,无论是学术研究、商业报告还是个人兴趣爱好,都能在这里找到心仪的模板。 一、网站介绍 这个网站叫做…

弧形进度条,弧形百分比

要帮助同事写一个弧度的进度条&#xff0c;进度条顶部有一个小圆&#xff0c;具体如下 需要指出的是&#xff0c;我们canvas的绘制是需要弧度&#xff0c;所以我们代码中使用角度&#xff0c;等待绘制的时候再砖话为弧度值 <!DOCTYPE html> <html lang"en"…

【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 16APSK调制解调 16APSK (16-ary Amplitude Phase Shift Keying) 是一种相位调制技术&#xff0c;其基本思想是在恒定幅度的条件下&#xff0c;改变信号的相位&#xff0c;从而传送信息。 - 调制&#xff1a;在16APSK中&am…

【angular】TodoList小项目(已开源)

参考&#xff1a;https://segmentfault.com/a/1190000013519099 文章目录 准备工作headerTodo、Doing、Done样式&#xff08;HTMLCSS&#xff09;功能&#xff08;TS&#xff09;将输入框内容加入todoList&#xff08;addTodo&#xff09;将todo事件改到doing 服务 参考 效果&a…

C语言基础 C++

C语言基础 C 嘿&#xff0c;你想起点C基础知识&#xff0c;这是一个很好的开始&#xff01;C是一种通用的编程语言&#xff0c;被广泛用于开发各种应用程序&#xff0c;从简单的控制台程序到复杂的桌面应用和游戏开发。现在让我带你进入C的奇妙世界&#xff0c;看看它有什么特…

OBIA:900+ 患者、193w+ 影像,中科院基因组所发布我国首个生物影像共享数据库

看病就医&#xff0c;拍片已是常例。CT、核磁、X 光等影像资料可以用非侵入式手段透过人体&#xff0c;使内部器官、组织状况清晰可见&#xff0c;为临床诊断和疾病治疗提供可靠依据。 随着医学影像技术广泛发展&#xff0c;影像资料已占据国内医疗数据的 80% 以上&#xff0c…