详解自动化测试框架特点和原理

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程,一周学完让你面试通过率提高90%!(自动化测试)

今天捡一些比较典型的工具型自动化框架来介绍,主要围绕历史、特点和原理来讲解,至于使用教程,网络上已经有很多资料,这里就不加以展开。

Quick Test Professional

图片

如果时光倒流二十年,QTP 在自动化领域绝对是王者一般的存在。它诞生于 03 年,由 Mercury Interactive 发布,前身是 Astra Quick Test,和同出一门的 LR(LoadRunner)并称当时测试工具界的倚天剑和屠龙刀。08 年卖给了惠普,17 年又卖给了 MicroFocus,现在的名字叫 UFT(Unified Functional Testing)。

Mercury 早在 95 年还做过另一款自动化工具叫 WinRunner,使用比较流行的录制回放模式,曾经也是风靡一时。但它的生命周期却不算很长,数年之后即被同门兄弟 QTP 超越,渐渐退出历史舞台。

之所以说 QTP 是一个标杆性的产品,是因为它在很多方面提供了较为先进的方法,对后来的其他自动化工具产生了很强的影响,特别是关键字驱动测试,至今仍然是自动化测试领域的一个重要设计方式。

QTP 使用 VB 做为脚本语言,学习成本比较低。通过加装各种插件,可以支持多平台的自动化测试,可以实现对 Excel、XML 等常用文件的操作。这种时代适应性和易用性,可能是 Mercury 为什么在有 WinRunner 之后,还要开发 QTP 的原因。

但是随着开源风潮的到来,各种免费的自动化工具越来越成熟,QTP 的没落似乎也成为了一种必然。B/S 几乎已经是 Selenium 的天下,C/S 虽说还有它的一席之地,不过缺乏创新的 QTP,前景恐怕也是不容乐观。

Selenium

图片

如果说 QTP 是最具代表性的商业自动化工具,那么 Selenium 无疑是最具代表性的开源自动化工具。Selenium 这个名字其实也在暗暗“致敬” QTP,因为 Mercury 的意思是汞,Selenium 的意思是硒,而硒是汞的解毒品。不得不说老外玩起梗来,也是很有内涵的。

Selenium 的出生比 QTP 略晚。04 年的时候,ThoughtsWorks 的程序员 Jason Huggins 出于对回归测试的需要,使用JavaScript 写了一个自动化测试工具叫 JavascriptTestRunner。后来同事们用着感觉都不错,就正式改名为 Selenium Core 并开源。

由于浏览器的同源策略,当时 Selenium Core 还存在着诸多问题。所谓的同源策略,是浏览器本身的一个“规则”,粗略地说就是其他来源的 JS 脚本,不能对主站文档进行操作。因此早期的 Selenium Core,很难被大范围地应用,为了解决这个问题,又有一位程序员发展出了 Selenium RC。

RC(Remote Contol)的思路是:即然同源策略无法改变,那想办法变成“同源”就行了。网上的架构图画得比较复杂,我们可以这么简单理解:RC 做为一个中间代理,向目标发起请求,获得页面内容后,注入 Selenium Core,再一起返回给调用方。这样对于调用方而言,就拥有一个附带“同源”脚本的页面文档了。

再后来,随着 Selenium 群体的不断壮大,Selenium IDE 和 Selenium Grid 也先后加入进来,弥补了录制回放能力和分布式测试方面的空白。Selenium RC + Selenium IDE + Selenium Grid 这一整套东西,就是 Selenium 1.0。

代理的方式虽说可行,但整个过程实在复杂,稳定性和速度都不是很理想。好在 WebDriver 的加入,大大简化了这个过程。由 Selenium 主持的 WebDriver Wire Protocal,提供了一套客户端和浏览器的通信标准,各个浏览器基于协议分别实现自己的 API,比如 ChromeDriver,FirefoxDriver 等。由于它们是官方提供的接口,自然就没有同源策略的问题。

但是正如 JS 和 CSS 标准一样,WebDriver 无线协议也只是字面规范,实际上各个浏览器的 Driver 实现,多少会存在一些差异。所以 Selenium 在其中也承担了一定的“兼容”角色,尽可能(有些还做不到)地隐藏这样差异,并向用户提供统一的调用方式。Selenium 1.0 + WebDriver,就是 Selenium 2.0。

有了 WebDriver 之后,Selenium 也不再需要通过代理的方式进行调用,但出于对历史兼容的需要,2.0 并没有抛弃 RC,直到 3.0 才彻底移除。所以 Selenium 2.0 - RC + 一些优化,就是 Selenium 3.0。

现如今,Selenium 也迎来了 4.0 的时代,在标准化、IDE、Grid 等多个方面都有新的变化。Selenium 当下仍然保持着强大的生命力和社区群体,在可预见的未来内,它还会是较为主流的自动化工具框架之一。

Appium

图片

Appium 是 Selenium 的好兄弟,一个是移动端自动化测试的利器,一个是网页端自动化测试的利器。肯定会有人好奇它们的关系到底是什么,为何都叫 xxium,又为何都支持 WebDriver。接下来就讲讲这个神奇的故事。

这次的主人公是 Dan Cuellar,11 年加入 Zoosk 做 Test Manager,在职期间研究了 iOS 的自动化测试,因不满足于 Apple 自带的 UIAutomation 方案,自行研发了一款自动化工具叫 iOSAuto。iOSAuto 使用 C# 编写测试代码,语法风格上大量借鉴 Selenium,它就是 Appium 的前身。

12 年的时候,Dan 参加了 Selenium 大会,对外展示了这款 iOSAuto 工具,引起了参会者的兴趣,并建议他晚些时候再进行一次演讲,以便具体解释这款工具的运作方式。意外的是,Dan 第二天的演讲遇到了技术故障,只讲了五分钟就结束了,因此 iOSAuto 在当时并没能引起较大的反响。

然而在 4 个月之后,Jason(就是最早做 Selenium 的那哥们,大会主持人)找到了 Dan,原来他在 Sauce Labs 为客户提供 iOS 测试支持,想起了 Dan 演讲过的 iOSAuto。两人在酒吧里见面,Dan 展示了 iOSAuto 的源码,Jason 鼓励 Dan 将代码开源,并修改语言以便吸引更多的潜在贡献者。

同年 9 月,Dan 上传了基于 Python 的新版本,而 Jason 通过 HTTP 实现了 WebDriver Wire Protocal,使得 iOSAuto 可以直接使用 Selenium WebDriver。Jason 认为它应该在 11 月的移动测试峰会上展示,但要先确定一个新名字。两人讨论之后决定命名为 Appium(Application + Selenium,即 APP 版的 Selenium)。

13 年 1 月,Sauce Labs 决定全力支持 Appium,团队认为 Appium 需要一次重构,最终选择了 Node.js 做为框架。新版本的 Appium 在 13 年的 Google 测试大会上首次亮相,后来又发布了 Android 和 Selendroid 支持,直到 14 年正式发布 Appium 1.0。

与 Selenium 一样,Appium 也要解决目标操作权限的问题。它采用的办法是向终端安装一个本地执行器,在 Android 上叫 bootstrap.jar,在 iOS 上叫 bootstrap.js,它们分别与 UIAutomator(2) 以及 UIAutomation 进行通信,以实现对终端设备的操作。

我们可以近似等价地理解为:UIAutomator/UIAutomation = WebDriver,但由于移动端的特殊性,Appium 天生就只能以 Server/Client 的模式来运行,这和 Selenium 的情况有所不同。Selenium 在只需要进行本地浏览器测试的时候,可以没有 Selenium Server,从这方面来看,Appium 似乎比 Selenium 更加“云原生”。

Appium 在 21 年发布了它的 2.0 版本,最核心的改变是将 Appium 视为一个生态系统而非单一的项目,允许更多开发者自行研发驱动和插件。同时 Appium 也是 OPENJS 基金会的重要项目,这种开放性的特点,也许是 Appium 为什么具有如此旺盛生命力的原因。

未来的工具型框架

由于篇幅的关系,其他工具型自动化框架就不多介绍了。现有的测试方案大多依托于本地工具和团队内部的二次开发,但在不久的未来,我相信“上云”必然是工具型框架要走的道路。

原因有这么几点:首先,云服务在国内已经很成熟,基础条件上已经具备这样的可能性;其次,云能够提供成本更低的解决方案,比如设备成本、管理成本、人员成本;再者,云在专项领域,能够为中小企业设计更加专业的服务,比如专项性能测试、安全测试等。

还有一个重要的原因是,随着智能化时代的到来,测试智能化所需的专业能力和机器算力,已经不是一般企业能够负担得了的,所以 AI 的普及会进一步加速这个时间节点的到来。不得不说,时代的变迁,实在是令人感叹。

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们 如果需要可以自行免费领取 【保证100%免费】
在这里插 入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL07高级_Hash结构、平衡二叉树、B树、B+树介绍

文章目录 ①. 全表遍历②. Hash结构③. 平衡二叉搜索树(AVL)④. B树⑤. B树⑥. 时间复杂度 选择的合理性 磁盘的I/O操作次数对索引的使用效率至关重要查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引…

BUUCTF---[BJDCTF2020]藏藏藏1

1.题目描述 2.下载附件,解压之后是一张图片和一个文本 3.把图片放在winhex,发现图片里面包含压缩包 4.在kali中使用binwalk查看,然后使用foremost分离,在使用tree查看分离出来的文件,最后将zip文件使用unzip进行解压。步骤如下 5.…

分巧克力 刷题笔记

/* 分巧克力 解题思路 二分 直接检查看答案是否符合题目条件 对于一块边长分别为x 和y的巧克力\\ 假设我们输入检查的数为k 其能分割成的 k*k 的巧克力的块数为 (x/k)*(y/k) 因为c里面的除法是下取整的所以我们不用考虑奇偶数 是否能整除 将每一块巧克力能分成的k*k的巧克力…

镭速:推动工业设备数据高效汇聚的关键力量

在工业4.0时代,智能制造和工业自动化的快速发展使得工业设备数据汇聚、采集、传输变得尤为重要。这些数据,包括设备运行状态、生产效率、能耗等关键信息,对于企业优化生产流程、提升产品质量、降低成本具有至关重要的作用。然而,在…

jsp阿帕奇安装教程

1.将压缩包解压,存放在自己所知道的位置 2.将软件文件夹打开 使用winr ,输入cmd运行打开 输入Java或者Javac,出现一大串之后表明成功 接着在所解压的软件中点开bin这个文件夹,找到startup.bat点击 点击之后会出现黑框&#xff0c…

Mint_21.3 drawing-area和goocanvas的FB笔记(三)

一、改变goocanvas线条自动画线时间间隔 通过系统SIGALRM信号触发,每秒画一条线对于慢温湿度等慢变信号可以应付,但对于快速信号1秒的间隔就太慢了。可以改变方式,通过另外的线程,完成要做的任务。 1. 线程的回调函数 myfunc 2…

javaWebssh酒店客房管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh酒店客房管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0…

都2024了,软件测试真的就是简单的点点点吗???

软件测试真的就是用手点点这么简单 你的身边,是否有这样一片景象? A:写了几年代码,写不下去了,听说测试很好上手,先来做几年测试 。 B:小文员一枚,想入行 IT,听说测试入门简单,请…

SpringBoot-首页和图标定制

1.静态资源导入 SpringBoot中的静态资源,默认有以下四个路径可以访问: classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ classpath:/public/ 其中第一个路径,一般不常用,它是来获取用maven导入webj…

4.5.CVAT——视频标注的详细步骤

文章目录 1. 跟踪模式(基础)2. 跟踪模式(高级)3. 带多边形的轨迹模式 追踪模式Track mode (视频标注使用)——类似pr的动画效果 1. 跟踪模式(基础) 使用示例: 为一系列…

如何创建MinIO存储服务公网地址实现固定TCP域名异地远程访问——“cpolar内网穿透”

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

Python 全栈系列231 以数据处理为核心的微服务思考

说明 最初我是专注与做数据分析和建模的,通俗点说也就是pandas和sklearn。照理来说,分析和建模作为一种分工,本身是可以独立于架构的设计和使用的。其实也就是从20年之后,我才开始花比较多的时间研究这一块。 回想了一下原因&am…

【计算机考研】408学到什么程度才能考130?

408考130要比考研数学考130难的多 我想大部分考过408的考生都是这么认为的。408的难点在于他涉及的范围太广了,首先如果你要备考408,你要准备四门课程,分别是数据结构,计算机组成原理,操作系统和计算机网络。 这四门…

Java数据结构----包装类简单认识泛型

目录 一、包装类 1.基本数据类型和对应的包装类 2.装箱和拆箱 3.自动装箱和自动拆箱 二、什么是泛型 三、引出泛型 1.语法 四、泛型类的使用 1.语法 2.示例 3 类型推导(Type Inference) 五、裸类型(Raw Type) (了解) 六、泛型如何编译…

06 - ip route和route -n的区别

1 ip route和route -n的区别 ip route 和 route -n 都是用于查看和管理Linux系统路由表的命令。但下面是它们的区别: ip route:是Linux系统中的现代工具,它属于iproute2套件;它提供了更多的选项,可以更精确地控制路由表…

反向传播算法(Back Propagation)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 反向传播算法 梯度下降和反向传播是神经网络训练过程中两个非常重要的概念,它们密切相关。梯度下降是一种常用的优化算法&#xff0…

rt thread stdio如何同时生成bin和hex

一、rt thread stdio默认生成bin文件: rt thread stdio 软件编译时,默认生成bin文件; 二、rt thread stdio如何同时生成bin和hex 右键单击-->项目-->属性-->C/C构建-->设置-->构建步骤-->(构建后步骤)命令: …

【Java】Base理论的核心思想和理论三要素

目录 简介 BASE 理论的核心思想 BASE 理论三要素 1. 基本可用 2. 软状态 3. 最终一致性 总结 简介 BASE 是 Basically Available(基本可用) 、Soft-state(软状态) 和 Eventually Consistent(最终一致性&#xf…

软件分层(数据结构/软件逻辑上分层+举例),相连节点的概念+如何相连,为什么是层状结构(软件分层,网络协议分层+梳理协议顺序),协议分层(打电话例子)

目录 软件分层 介绍 举例 类的继承 虚拟文件系统 线程接口封装 虚拟地址空间 总结 为什么是层状的 软件分层 网络协议 原因 梳理协议顺序 相连节点 协议分层 引入 示例 实际上 逻辑上 制定出协议 软件分层 介绍 通过将软件系统划分为不同的层次,每一层都有…

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…