一文详解自动化测试框架知识

news2024/11/24 22:35:08

前言

自动化测试因其节约成本、提高效率、减少手动干预等优势已经日渐成为测试人员的“潮流”,从业人员日益清楚地明白实现自动化框架是软件自动化项目成功的关键因素之一。

我们将从什么是真正的自动化测试框架、自动化脚本如何工作以及自动化测试框架会如何在测试过程中为你提供竞争优势三个方面进行阐述,让您通过这一篇文章,踏入自动化测试框架的领域。

自动化测试的优势

1、最短时间-最大收益 构建任何可行的自动化测试框架和自动化脚本都可以最大程度地减少编写和运行测试所花费的时间,从而可以在短时间内获得最大的输出。另外,拥有优秀的自动化测试框架后,人力就可以从诸如同步、错误管理、本地配置,报告生成、解释等这些常见问题中解脱出来。

2、可重复使用和可读的自动化代码 当你使用现有组件库中提到的代码时,大可以放心,它在以后的时间内仍然是可读和可重复使用的,并且所有相关任务(如报告、同步和故障排除)都将变得更易访问。

3、资源优化 一些公司没有如设想的一般从自动化实施中受益,因为从自动化测试中获得的效益取决于采用它的灵活性。如果自动化系统是灵活的,并且与从事各个组件的不同团队兼容,那么在资源优化和知识共享方面可以提供巨大的收益。

4、自动化测试框架的定义 在其他很多行业中,“自动化”指的是通过智能算法自动处理流程,流程运行是很少或完全不需要人工干预。而在软件行业中,自动化测试指的是通过自动化工具(授权版本或开源版本皆可)对软件应用程序进行各种测试。从技术角度来说,自动化测试框架是一组定制的、可以用来执行脚本化测试和全面报告测试结果的交互式组件。

要成功地构建自动化测试框架,需要考虑到软件质量保障专家的建议,他们可以帮助观察并帮助控制整个测试过程,提高测试结果的准确性。经过精心设计的自动化测试框架能让测试人员以一种实用、简化的方式执行自动化测试。

自动化测试框架的类型

以工具为中心的框架

不管是商业自动化工具和开源自动化工具,都有有助于在测试环境中生成报告、测试套件和分布式测试执行的系统基础设施。比如Selenium自动化框架,该框架具有主要组件WebDriver——基于Web浏览器的插件,用于控制和操作Web浏览器中的应用程序的DOM模型。Selenium测试自动化框架还拥有实用的编码库和记录回放工具。

另外一个专用于工具的重要框架是Serenity,它是围绕SeleniumWeb驱动程序构建的加速器。在这种情况下,为加快测试自动化实施过程的速度,社区将特定组件组合在一个公共实体中。

诸如TestComplete,RanorexHPQTP这些工具专用框架时,就很难做出明确的判断,因为它们都是由带有动作模拟器、报告和脚本IDE的已部署基础架构预先构建的。

以应用为中心的框架

这种类型的框架是为实现某个特定应用程序项目自动化而定制的。以应用为中心的框架支持某个指定目标的应用程序实现测试自动化的需求,由从开源库构建的组件驱动。这种框架可以围绕SUT创建友好的测试环境来运行一些基本功能,包括部署开发的应用程序、运行应用程序、测试用例执行、直接测试结果报告和便于编码的包装器控件。以应用为中心的框架还会有一个组件来支持在不同操作系统和浏览器上跨各种云环境的测试运行。

关键字驱动框架

关键字驱动框架主要可以吸引缺乏编码经验的新手开发和测试人员,它既可以是以工具为中心的框架,也可以是以项目为中心的框架。关键字驱动框架可以让编码不熟练的员工参与编写、理解自动化脚本。用于编码的关键字集(如Login、NavigateToPage、Click、TypeText)作为关键字存储库安装在代码库里,根据提供的关键字引用编写脚本的电子表格将被传递到关键字解释器来执行测试

理想的自动化测试框架的主要组件

如果要实现功能强大且性能卓越的测试自动化框架(无论是开源还是商业的),就必须把包括构成其核心的某些组件考虑在内。有些框架可能包括所有组件,也有些框架只包括其中几个,所以不必在每个框架中都涉及到下面提到的所有组件。

1.测试基础组件

单元测试

单元测试基础组件可以作为任何自动化测试框架的基本部分。它可以用于以下情况:

通过@test或[test]等特定的形式来定义正在使用的测试方法

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

l运行简单明了的测试

无论是从命令行、IDE、专用工具还是CI(持续集成)系统运行测试,为了确保单元测试以简单的方式运行,单元测试库都提供了测试运行器。

单元测试库支持几乎所有编程语言,比如以下这些:Java的JUnit和TestNG,.NET的NUnit和MSTest,Python的unittest(前身为PyUnit)。

b ) 集成和端到端测试

在执行集成和端到端测试自动化的同时,也非常合适去实践现有测试库提供的功能。由应用程序UI驱动的API级测试需要有消除不必要的编码负担的组件,这样能让与被测应用程序的交互变得更容易。因而,测试人员就不会受到连接到应用程序、发送请求、接收结果响应这些编码工作的困扰。

这种类型的几个重要测试组件有:Selenium(可用于主要语言)、protractor(特定于JavaScript)、KarateDSL(Java特定的API级集成测试)。

C ) 行为驱动开发(BDD)

专门用于BDD的组件以行为规范为目标,以可执行代码的形式创建可执行规范。在这部分,测试人员可以将预测行为的不同特性和场景转化为代码。尽管不像其他测试工具哪有直接跟被测应用程序交互,但可以作为BDD过程的支持,创建与自动化测试的范围和意图相一致的活动文档。BDD组件的典型例子有:cucumber(支持主要语言)、Jasmine(JavaScript)、SpecFlow(http://for.NET)。

2、测试数据管理

在软件测试自动化和测试创建过程中,最大的困难是如何利用测试数据管理系统。随着自动化测试数量的增加,始终存在这样一个问题:确保执行特定测试所需的某些测试数据在执行测试时可用或可创建。目前对这种情况并没有一个万无一失的解决方案,这就要求采用可靠的测试数据管理方法来让自动化工作成功运转。

因此所采用的自动化测试框架需要配置充分,以便能提供基本的补救措施来进入或创建、清除要执行的测试数据。解决这一问题的方法是使用适当的模拟工具,使数据更加简化、更加清晰、更易于理解。

3、mock、stubs和虚拟资产

在对自动化测试进行实践和探索的历程中,可能会出现以下情况:

希望将模块与在单元测试中有经验的已连接组件隔离

处理在现代应用程序的集成,或端到端测试中常见的繁琐而关键的依赖关系

在这些情况里,就会觉得创建mock、stubs和虚拟资产来反映连接组件的行为模式是非常必要的,还可能会发现处理mock和stub是一项大范围、大体量的任务。无论如何,测试人员都会意识到,在开发自动化测试框架期间选择有用的虚拟化工具是件十分重要的事。

测试结果报告

在选择将测试结果报告到自动化框架中的库或机制时,需要将查看这份报告的目标受众考虑在内。在这方面,需遵循以下几个注意事项:

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

当寻求使用大多数人都能理解的语言作为进行报告的工具时,你可能需要考虑使用与单元测试框架兼容的商业工具,比如用于Junit、NUnit和TestNG的UFT-Pro。

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

源代码管理

与手动测试一样,自动化测试也涉及编写和存储源代码版本。每个开发公司都有一个精选的源代码和版本控制系统来保存并保护源代码。自动化测试需要完善的源代码管理系统,该系统在处理生产代码时会非常方便。典型的源代码管理示例有Git和Subversion。

创建依赖管理器

依赖性管理器的主要目的是协助收集、管理现有的已经应用在自动化软件解决方案的功能中的依赖性和库。某些工具(例如Maven和Gradle)同时充当依赖管理器并帮助构建工具。构建工具旨在帮助您从源代码和支持库开发自动化软件并运行测试。这方面的工具包括Ant,npm和NuGet。

框架的搭建和实施过程

以下是规划实现自动化测试解决方案的几种方式:

从客户的角度探讨自动化的实际适用性、从各个角度检查其外观是否良好、并在未充分使用的技术上进行测试。与之相比,如果自动化开发的努力大大超过预期的优势,那自动化测试就没有什么必要。

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

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

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

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

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

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

相关文章

three.js——辅助器AxesHelper和轨道控制器OrbitControls的使用

辅助器AxesHelper和轨道控制器OrbitControls的使用 前言效果图1、辅助器AxesHelper:是物体出现辅助的x/y/z轴2、轨道控制器OrbitControls2.1导入OrbitControls文件2.2 使用2.3 如果OrbitControls改变了相机参数,重新调用渲染器渲染三维场景 前言 1、AxesHelper 官网…

搭建GraphQL服务

js版 GraphQL在 NodeJS 服务端中使用最多 安装graphql-yoga: npm install graphql-yoga 新建index.js: const {GraphQLServer} require("graphql-yoga")const server new GraphQLServer({ typeDefs: type Query { hello(name:String):String! …

由于找不到vcruntime140_1.dll怎么修复,详细修复步骤分享

在使用电脑过程中,可能会遇到一些错误提示,其中之一是找不到vcruntime140_1.dll的问题。这使得许多用户感到困扰,不知道该如何解决这个问题。小编将详细介绍vcruntime140_1.dll的作用以及解决找不到该文件的方法,帮助你摆脱困境。…

前端进阶--深入理解JavaScript

1、JS的作用域和作用域链 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问,通过作用域链,我们可以访问到外层环境的变量和函数。作用域链的本质上是一个指向变量对象的指针列表。变量对象是一个包含了执行环境中所有变量和函数的对象…

openpnp - use STM32 arduino on SchultzController

文章目录 openpnp - use STM32 arduino on SchultzController概述笔记官方的起始文档增加arduino第三方开发板库索引地址改好后, 能编译过的工程SchultzController.inoFeeder.hFeeder.cpp再验证一下内存是否够用补充 - 如果是自己做的板子END openpnp - use STM32 arduino on S…

开发者福利!李彦宏将在百度世界大会手把手教你做AI原生应用

目录 一、写在前面 二、大模型社区 2.1 加入频道 2.2 创建应用 一、写在前面 1. “把最先进的技术用到极致,把最先进的应用做到极致。” 2. “每个产品都在热火朝天地重构,不断加深对AI原生应用的理解。” 3. “这就是真正的AI原生应用,这…

深度学习修炼(三)卷积操作 | 边界填充、跨步、多输入输出通道、汇聚池化

文章目录 1. 卷积基本操作2 现代卷积进阶武器操作2.1 边界 填充2.2 跨步 步幅2.3 多输入输出通道2.4 汇聚 池化 3. 卷积层设计 之前我们讲了 线性分类器 深度学习修炼(一)线性分类器 | 权值理解、支撑向量机损失、梯度下降算法通俗理解_Qodi的博客-CSDN博…

看完这篇 教你玩转渗透测试靶机Vulnhub——Toppo: 1

Vulnhub靶机Toppo: 1渗透测试详解 Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:①:信息收集:②:SSH登入:③:SUID提权(python2.7):④&#x…

JAVA面经整理(2)

一)解决哈希冲突的方法有哪些? 哈希冲突指的是在哈希表中,不同的键值映射到了相同的哈希桶,也就是数组索引,导致键值对的冲突 1)设立合适的哈希函数:通过哈希函数计算出来的地址要均匀的分布在整个空间中 2)负载因子调节: 2.1)开放…

Python yaml 详解

文章目录 1 概述1.1 特点1.2 导入 2 对象2.1 字典2.2 数组2.3 复合结构 3 操作3.1 读取3.2 写入 1 概述 1.1 特点 yaml 文件是一种数据序列化语言,广泛用于配置文件、日志文件等特点: ① 大小写敏感。② 使用缩进表示层级关系。缩进时不允许使用 Tab 键…

【VastbaseG100】 FATAL: The account has been locked.

使用VastbaseG100 数据库,查询数据报错。 org.postgresql.util.PSQLException: FATAL: The account has been locked. 帐户已被锁定。 解锁账户呗 ALTER ROLE doc ACCOUNT UNLOCK;ALTER ROLE 用户名 ACCOUNT UNLOCK; 修改密码 ALTER ROLE doc IDENTIFIED BY ZhangS…

【实战项目之个人博客】

目录 项目背景 项目技术栈 项目介绍 项目亮点 项目启动 1.创建SSM(省略) 2.配置项目信息 3.将前端页面加入到项目中 4.初始化数据库 5.创建标准分层的目录 6.创建和编写项目中的公共代码以及常用配置 7.创建和编写业务的Entity、Mapper、…

【操作系统笔记】并发安全问题

用户态抢占和内核态抢占 内核中可以执行以下几种程序: ① 当前运行的进程:陷阱程序(系统调用) 和 故障程序(page fault) ,进程运行在内核态的时候,其实就是在执行进程在用户态触发的…

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…

第一个 Go 程序“hello,world“ 与 main 函数

第一个 Go 程序"hello,world" 与 main 函数 文章目录 第一个 Go 程序"hello,world" 与 main 函数一.创建“hello,world”示例程序二. “hello,world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…

selenium+python实现基本自动化测试

安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回…

坚鹏:浙江农商联合银行同业核心产品解读与差异化分析培训第7期

浙江农商联合银行同业核心产品解读与差异化分析培训第7期 1952年,浙江第一家农村信用社成立。2004年4月18日,浙江省农信联社成立,承担对全省农信社的管理、指导、协调和服务职能。2021年10月,经国务院批准同意、银保监会批复&…

多目标优化算法:基于非支配排序的鱼鹰优化算法(NSOOA)MATLAB

一、鱼鹰优化算法 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 Python:鱼鹰优化算法(Osprey optimization algorithm&a…

自动驾驶中的决策规划

参考: 【干货篇】轻舟智航:自动驾驶中的决策规划技术(附视频回放 PPT 下载) - AIQ 如图所示, 各模块介绍 定位模块主要负责解答的问题是“车现在在哪里”,是在道路上还是在路口,是在高架桥上还是在停车场里。 感知…

图像锐化,求图像锐化后的图像(数字图像处理大题复习 P6)

文章目录 1. 梯度差分方法 & 罗伯特差分法梯度差分方法罗伯特差分法使用梯度差分法解决本题 2. 有阈值 (T4) 的二值图像输出 用不同图像输出方法求图像锐化后的图像 g(x, y) 梯度图像直接输出设阈值 T4,求二值图像输出 1. 梯度差分方法 & 罗伯特差分法 梯度…