一文彻底吃透自动化测试框架所有知识

news2024/11/28 4:38:45

定义测试自动化

  在任何行业中,自动化通常被解释为自动处理流程,而这些流程几乎不需要人工干预。在软件行业,测试自动化意味着使用许可版本或开源的自动化工具对软件应用程序执行各种测试。用技术术语来说,测试自动化框架是一组定制的交互式组件,它们有助于执行脚本化测试和全面报告测试的结果。

  不同类型的框架

  团队根据团队规模、经验水平、用户需求等因素来选择测试框架,可以分成不同的测试框架类型。

  1、线性框架

  这是最基本的框架类型。它通常被称为“记录和回放(record and playback)”框架。

  在这个过程中,测试代码的创建和执行是按线性或顺序编写的——测试人员手动记录每一个步骤,并自动回放记录的脚本。这些步骤包括导航、用户输入和检查点。它最适合小型应用程序或团队。

  在此过程中,测试代码的创建和执行以线性或顺序方式编写-测试人员手动记录每个步骤并自动播放记录的脚本。这些步骤包括导航,用户输入和检查点。最适合小型应用程序或小团队。

  优点:线性框架最大的好处是生成测试用例的速度快,直接录制;无须代码基础,无须手动编写测试代码,因此门槛较低、易于上手。

  缺点:然而线性框架的不足之处也很明显:录制的脚本是固定的(hardcode),不可重用。这意味着,当应用发生微小变化时,上一次录制的脚本可能就无法使用了,需要重新录制(rework),从而产生大量的后期维护成本。

  2、基于模块化的框架

  顾名思义,此框架允许将被测应用程序划分为单独的模块,单元或部分。每个模块都会为它们创建独立的测试脚本。因此,每个模块及其测试脚本的组合可以构建代表各种测试案例的更大的测试。

  优点:该框架在创建模块时使用抽象。因此,应用程序更改将只影响与它们相关联的测试脚本所涉及的模块,而不影响其他部分。

  高度的模块化,这使得维护更加容易且具有成本效益

  创建测试用例所需的精力最少,因为可以重复使用不同模块的测试脚本。

  缺点:如果没有语言开发基础,则建立框架可能会很困难。

  由于将数据硬编码到测试脚本中,因此无法重复使用数据集——因为测试是单独执行的。

  3、库结构框架

  该库体系结构框架建立在模块化框架的基础上,但具有其他好处。这样做的好处是,它不仅可以将被测应用程序划分为测试脚本,还可以将测试脚本中的相似任务划分为通用功能。

  然后创建一个库,该库构成了 AUT 的常用功能,可以在需要时由测试脚本调用。

  优点:高度的模块化,这使得测试维护简单且预算友好。

  它具有高度的可重用性,因为它的公共函数库可以被几个测试脚本使用。

  缺点:框架中引入的库使其更加复杂。

  测试数据也被硬编码到测试脚本中。因此,数据中的更改必须适用于测试脚本。

  测试脚本的开发需要更多的时间和技术。

  4、数据驱动框架

  在数据驱动框架中,测试数据和测试脚本是分离的。在许多测试场景中,需要使用不同的测试数据多次测试同一功能或特性。如果测试数据是 hardcode 进测试脚本的,那么每更换一次测试数据都需要修改测试脚本。这是很大的工作量。此时,可以使用数据驱动框架。具体来说,测试脚本是固定的,而测试数据可以从外部的数据文件,以 Excel、CSV、SQL 等形式作为参数传入测试脚本。这样,我们只需要维护一份脚本和一份数据文件即可。

  优点:总体来说,这种框架最大的好处就是易于维护。

  测试脚本中的任何更改都不会影响测试数据。因此,可以避免对数据进行硬编码。

  可以使用多组数据进行测试。

  可以通过更改外部数据库中的测试数据来测试各种测试方案,从而减少所需的测试脚本数量。

  缺点:准备和计划框架的通用测试脚本,识别与格式化测试数据需要花费时间。

  框架设计的使用需要经验丰富的测试人员,因为它的复杂性,需要具备多种编程语言知识。

  5、关键字驱动框架

  该框架是数据驱动框架的扩展。测试数据和测试脚本也被分离,不同的是,该框架要更进一步地将测试脚本中的通用功能剥离出来,形成关键词(keyword)。测试脚本本质上就是对一系列通用的或者自定义的关键词的调用。这样做的好处是关键词可以在多个测试中复用,并且测试脚本更加易于维护。不过,实现这样一个框架并非易事。

  优点:与数据驱动不同,运行此框架不需要脚本知识。

  可以独立于被测应用程序构建测试脚本。

  一个关键字可以在多个测试脚本中使用。因此该代码是可重用的。

  缺点:设计框架和维护关键字对自动化的专业知识要求比较高。

  实现该框架的成本相对较高,而且设置起来也比较耗时和复杂。

  综上所述,实现用于自动化测试的框架需要选择一种灵活的工具。该工具应支持广泛的应用程序,并满足测试要求。另外,应该有正确的策略来定义应该自动化哪些部分。

  自动化框架的主要组件

  大多数功能强大且性能卓越的测试自动化框架(无论是开源还是商业的),则必须考虑包括构成其核心的某些组件。

  基于各种测试的理想测试自动化框架的主要组成部分是:

  ·测试库

  · 单元测试

  · 单元测试库可用于塑造任何测试自动化框架的重要组成部分。需要它用于:

  · 通过特定的形式注释定义使用的测试方法

  · 执行影响自动化测试最终结果的断言

  · 运行简单明了的测试

集成和端到端测试

在执行集成和端到端测试自动化时,通常建议保证现有测试库提供的功能是稳定的。由应用程序的 UI 驱动的 API 级别的测试需要使与被测应用程序进行交互变得更加容易的组件,因为它不可避免的需要用到编码的工作。因此可以花更多精力专注于其他方面的工作。

行为驱动开发

专用于 BDD 的库以行为规范为目标,以可执行代码的形式创建可执行规范。在这里,可以将不同的功能和预期行为场景转换为代码,尽管它们不能像测试工具直接与被测应用程序进行交互那样工作。它们可作为 BDD 流程的支持,以创建与自动化测试的范围和意图一致的实时文档。

测试数据管理

软件测试自动化和测试创建过程中,最大的挑战是利用测试数据管理系统。随着自动化测试数量的增加,始终存在确保执行特定测试所需的某些测试数据可用或创建的问题。面临的挑战是,没有针对此问题的万无一失的解决方案,这需要一种可靠的测试数据管理方法来使自动化工作取得成功。

解决此问题的一种方法是使用 moco 工具,以使数据更加简化,清晰和易于消化。

软件测试中的虚拟化

在探索和研究自动化测试的许多想法时,可能会遇到以下情况:

想将模块与通常在单元测试中经历过的连接组件隔离开

需要处理应用程序的集成或端到端测试中常见的繁琐和关键的依赖关系

在这种情况下,测试人员会觉得创建反映所连接组件行为模式的 mock 和 Stubs 以及虚拟化至关重要。处理这些内容是一项艰巨的任务,在开发自动化测试框架的过程中选择有用的虚拟化工具至关重要。

测试结果报告

在选择用于将测试结果报告到自动化框架中的库或机制时,应该主要关注将要阅读或查看所生成报告的目标受众。在这方面,我们可以提出几个注意事项:

诸如 JUnit 和 TestNG 之类的单元测试框架生成的报告主要针对诸如 CI(持续集成)服务器之类的接收系统,这些系统最终会对其进行解释并以其他软件可使用的 XML 格式进行呈现。

当我们寻求具有人类最易理解的语言的报告功能的工具时,需要考虑使用与单元测试框架兼容的商业工具,例如用于 Junit 的 UFT Pro、NUnit 和 TestNG。

另一种选择是利用第三方库,该库以人类易于理解的格式创建测试结果报告,包括通过饼图,图形或图像进行的视觉解释。

源代码管理

与手动测试一样,自动化测试也涉及编写和存储源代码和测试用例版本。每个开发公司都有一个源代码和版本控制系统来保存和保护源代码。自动化测试需要完善的源代码管理系统,该系统在处理生产代码时会派上用场。

创建依赖关系管理器

依赖关系管理器的主要目的是协助收集和管理在自动化软件解决方案的功能中使用的现有依赖关系和库的过程。某些工具(例如 Maven 和 Gradle)同时充当依赖项管理器并帮助构建工具。构建工具旨在帮助您从源代码和支持库开发自动化软件,并运行测试。

建立和实施框架的过程

有几种方法可以计划实现自动化测试解决方案的方法。

从用户的角度探讨自动化的实际适用性。从各个角度检查它是否如 PPT 中所讲(避免 PPT 自动化的最佳实践),在使用中的技术上对其进行测试。

密切关注被测系统的技术,以找到能够完美模拟用户行为的最合适的测试自动化工具,这一点至关重要。

建议采用基于阶段的实现方法,其中每个阶段都具有交付自动化测试脚本的优先级,同时添加框架功能以实现预期的脚本执行。

在启动软件测试自动化之前,为确保正确执行自动化决策,必须首先计算和估算实施后的投资回报率,运行手动回归或冒烟测试的时间以及每个版本的运行周期。

(1)新一代博客平台,可以全新的创作和管理体验;颜值最高的博客平台;新时代学生用WRITE-BUG;

(2)QQ群、微信群,内部分享文件的好去处:WRITE-BUG云频道,超大空间、在线预览、协同编辑;新一代的“轻社交”平台,专业做大学生交流!

(3)代码托管不用翻墙、不用魔法,不需要学习GIT命令,直接上传/下载代码,支持GIT版本管理、内置代码质量评估,一键为代码体检

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

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

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

相关文章

css自学框架之图片灯箱展示

实现的功能是页面中的图片单击,在灯箱中显示,单击按钮上下切换,单击灯箱退出展示,效果如下GIF展示。 实现步骤还是老样子,三方面工作一是CSS、二是JavaSxcript,三是HTML,下面开始一步一步实现&…

助眠小程序源码系统搭建

一直比较热门的项目,这款系统支持流量主和会员体系的。 用抖音伴侣直播也不错,然后间接引流到自己的小程序,后期还可以卖项目等, 也适合拿来做流量矩阵小程序。也可以用来做其他的声音音乐类的项目 大致功能: 支持流量主支持会员…

运维Shell脚本小试牛刀(五):until循环|循环控制break|continue

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

Photoscan/Metashape 2.0.0中的地面激光扫描处理

在Metashape(原Photoscan)2.0.0, 结构化地面激光扫描和非结构化航空激光扫描都可以使用导入点云(文件>导入>导入点云)命令导入。导入时会保留所有点属性(包括结构化信息)。 本文讨论以下主题 如何将激光扫描数据导入项目&am…

高忆管理:六连板!我乐家居累计涨超77%,公司:存在估值较高风险

9月4日,家具板块继续活泼,同花顺家具板块涨幅达5.46%,顶固集创(300749.SZ)20CM涨停,美之高(834765)涨超12%,帝欧家居(002798.SZ)、亚振家居(603389.SH&#x…

day04_基本数据类型丶变量丶基本数据类型转换

前置知识 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制,是人为定义的带进位的计数方法 。不同的进制可以按照一定的规则进行转换。 进制的分类 十进制&#x…

sqlserver数据库链接mysql服务器访问数据

sqlserver数据库链接mysql服务器访问数据 关于SqlServer数据库怎么链接mysql数据库我一直不明白,今天项目碰到一个问题需要链接,我就研究了一下,然后就成功了,在这里记录一下。也欢迎朋友互相学习交流借鉴。 1.使用navicat打开S…

推荐6款普通人搞副业做自媒体AI工具

hi,同学们,我是赤辰,本期是赤辰第5篇AI工具类教程,文章底部准备了粉丝福利,看完可以领取!身边越来越多的小伙伴靠自媒体实现财富自由了!因此,推荐大家在工作之余或空闲时间从事自媒体…

windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

文章目录 通过端口号查看进程号netstat通过进程号定位应用程序tasklist 通过端口号查看进程号netstat 在Windows系统中,可以使用 netstat 命令来查看端口的占用情况。以下是具体的步骤: 打开命令提示符(CMD):按WinR组…

听厂家聊聊:劳保鞋何时该报废?

在现代工业社会里,劳保鞋作为一种较为常见的劳保用品,被广泛用于各行各业。劳保鞋,也称安全鞋,是保护使用者脚部免受意外事故引起的伤害,可以对足部起到一定的防护作用。不管是防砸还是防静电,甚至是耐高温…

进程、线程与构造方法

进程、线程与构造方法 目录 一. 进程与线程1. 通俗解释2. 代码实现3. 线程生命周期(图解) 二. 构造方法 一. 进程与线程 1. 通俗解释 进程:就像电脑上运行的软件,例如QQ等。 线程:…

robot framework入门案例

Robot Framework是一个完全基于关键字测试驱动的框架; 关键字可以理解为一个能实现特定功能的对象(如ssh连接、登录、新增配置等) 有了关键字后,就可以通过关键字组合成案例; 所以入门案例只需要两个文件 &#xf…

AcWing 788. 逆序对的数量(归并排序)

基本思想 归并排序是用分治思想,分治模式在每一层上有三个步骤: (1)分解:将n个元素分解成n/2个元素的子序列。 (2)解决:用合并排序法对两个子序列递归排序。 (3&…

护眼灯的色温是多少比较好?如何选择护眼台灯

色温是台灯的一个重要指标,它可以表示光线中包含颜色的成分,从理论上简单来讲,色温从低到高对应着光线从黑到红,再到黄、白,最后到蓝色光。色温也可以对应大众所熟悉的色调,色温越高,光线偏白色…

开学哪种电容笔好用?推荐的ipad手写笔

如果你希望通过iPad进行绘画,那么Apple Pencil就很重要了。不过,苹果原装电容笔的售价实在是太高了,许多人无法承受。因此,最佳方法是选择一款平替电容笔。我以前一直用iPad平板,也是个数码爱好者,这两年我…

AJAX学习笔记6 JQuery对AJAX进行封装

AJAX学习笔记5同步与异步理解_biubiubiu0706的博客-CSDN博客 AJAX请求相关的代码都是类似的,有很多重复的代码,这些重复的代码能不能不写,能不能封装一个工具类。要发送ajax请求的话,就直接调用这个工具类中的相关函数即可。 用J…

jar包冲突: java.lang.NoSuchFieldError: REFLECTION

接入第三方时,导入了第三方的SDK,导致项目其他功能读取本地xml时出错,根据具体日志查看发现是具体某个jar包版本的问题 根据上图可看到,问题在com.sun.xml.bind包,于是根据便向着把我导入的SDK下所属的该jar过滤掉&am…

MySQL递归查询所有子集

在 MySQL 数据库中,WITH RECURSIVE 是递归查询的一种语法。然而,MySQL 并不支持 WITH RECURSIVE 语法。相反,MySQL 提供了另一种递归查询的方法,即使用 CONNECT BY 和 START WITH 语法。 如果您需要执行递归查询,建议…

C++多态虚析构和纯虚析构

虚析构和纯虚析构 多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用子类的析构代码 注释:父类指针在释放时,只会调用父类自己的析构函数,而无法调用子类的析构函数 解决方式:将父类的…

诚实守信、专业严谨、合规自律、公开透明——嘉泰实业

每一次暖心的沟通都是一次公益,真诚不会因为它的渺小而被忽略;每一声问候都是一次公益,善意不会因为它的普通而被埋没。熟悉嘉泰实业的人都知道,这家企业不但擅长在金融理财领域里面呼风唤雨,同时也非常擅长在公益事业当中践行,属于企业的责任心,为更多有困难的群体带来大爱的传…