测试自动化的演进,从录制回放到对象映射

news2024/11/24 4:00:14

概要:在短时间的市场化和短期冲刺的文化中,测试人员通过使用测试自动化实践和工具保持同步是至关重要的。本文跟踪从基于脚本的测试与硬编码数据到自动化框架的转变,探索测试自动化的开始和到今天的演变 - 并且可能的未来走向。

今天的软件市场完全以消费者为导向,为了保持相关性,产品必须处于不断的准备发版状态。面对不断变化的消费者品味,你如何确保这一点?

测试自动化发挥了重要作用,使测试人员更多地关注维护测试计划并确保测试覆盖全面。

当我回顾我在软件测试行业的经历时,标注测试自动化过程中的里程碑,从录制和回放的早期到当前的UI对象映射技术是非常有趣的。

记录和播放

录制和回放功能一直是大多数测试自动化工具的主要功能,今天仍然如此。该软件录制手动测试,包括每个鼠标移动,击键和屏幕截图,并方便你稍后回放。它减轻了手动测试的麻烦,特别是当你必须进行回归测试时,但它可能会受到限制。

在我作为测试人员的初期,在加利福尼亚州制药公司测试解决方案的同时,我正在使用一种录制回放工具,节省了时间,因为我能够录制UI操作并重播以便在需要时进行测试。录制和回放当时是一种新技术,我印象深刻。

但随着时间的推移,一些局限性开始浮现。因为测试运行是一个录制的脚本,所以如果遇到突然出现的页面加载失败,它不会被编程终止。所以,它会运行一个错误的UI对象 - 这是测试自动化计划开始失败的地方。

许多录制和播放工具确实提供了调整录制的测试脚本的能力,以便我可以根据以前的测试运行进行必要的更改。然而,可以理解的是,这对于较小的Web应用程序是有效的。当测试被录制时,测试脚本可能变得更长,难以维护,对于更大的应用程序而言更是如此。更不用说,将测试数据硬编码到测试脚本中的录制和回放相当不灵活。

当我转移到企业网络应用程序的项目时,我意识到需要一个可以重新使用自动化测试代码的工具,以便与UI更改保持同步。

数据驱动方法

由于硬编码的测试数据是使用记录和播放工具测试自动化刚性的主要因素,将该数据与代码分离,被认为是更大测试覆盖范围的可行解决方案。这可以通过在代码中使用占位符来实现。你可以添加或删除数据,并且你的测试脚本不会受到影响。这被称为数据驱动方法。

但是,这又不是那么简单。模拟用户操作的行为,同时从源文件中以正确的顺序挑选相关数据,仍然需要在测试脚本中进行定义。这使得代码应用程序特定,因此是刚性的。

更多关注行为和导航上,还需要人工拾取来以便正确顺序执行,它淡化了专注于测试应用程序的功能作为一个整体。测试脚本必须与应用无关。

测试自动化框架应该能够抽取测试代码中的大部分操作和导航。例如,登录页面将有用户操作,例如填写用户名和密码的文本框,导航到登录按钮,然后点击动作。对于大多数应用程序,这些操作非常常规。这些步骤的测试代码可以在自动化框架中维护,即从测试脚本中抽象出来,并在需要时重用。这使得测试代码灵活,轻便,易于维护。它应该允许错误处理,日志记录和系统恢复:即使在测试失败的情况下,也需要测试套件运行完成。

关键字驱动测试

为了开发普遍存在的测试代码,它在测试运行期间填充了可以“指向”相应脚本的关键字。测试数据将被传递到被测试应用程序(AUT),并且操作将按照脚本执行。这允许测试人员通过关键字来确定操作顺序,所以现在他们可以测试整个应用程序的功能。如果你还记得,这是简单的数据驱动方法的主要缺点之一。

尽管如此,测试脚本仍然存在某些不灵活性。测试代码与AUT密切相关。这意味着对AUT的任何更改将意味着对测试脚本的更改,使其维护成为一项繁琐的任务。

包装功能

需要的是另一个层,可以将测试代码从应用程序代码中抽出。这个添加层来自封装函数,它们以特定于AUT的所需顺序放入测试代码中。

包装函数与被替换的应用程序代码中的预先存在的函数不同,因为它们是测试者的工具:它们包括功能的错误检查代码。现在,代替重复调用的函数,每次都会调用它的包装函数,依次使用不同的参数来检查所有可能的路径。

例如,点击操作在不同的网页上使用不同,可能是单击“登录”按钮或“保存”按钮。因此,在常规click()函数之上使用包装函数将使其可重用,具有不同的Login或Save参数依次传递。

至于可维护性,因为封装函数不是特定实现,它们可以在应用程序中重用。

UI对象映射框架

另一种并发控制包引入的方法是使用UI对象映射。UI元素(如登录页面)被视为对象类,此对象类的标识符存储在对象映射中。

测试脚本显示对象的逻辑名称。因此,当测试框架的自动化引擎读取测试数据(登录和密码)时,它会拾取对象的逻辑名称(例如登录页面),从对象映射中对类标识符进行置零,调用对象类“登录页面”的包装函数,并执行所需的操作。

唯一需要维护的是包装函数,使测试代码保持不变。

这种面向对象的方法允许测试专家定义动作序列,并使他们对测试计划有更多的控制。

展望未来

随着Web应用的出现,需求完全改变。Web应用有两个部分。第一个是使用Web服务的数据集成。有这么多的对象,库,数据源,浏览器,平台和设备 - 更不用说需要连接的互联网路径。另一方面是UI渲染。

在我经历的项目中,我用工具测试用户界面后面的对象,但不是UI的外观和感觉。我插入了几个java库,能让我拍摄屏幕特定区域的屏幕截图,以便我可以将其与相应的UI对象进行比较。

在我看来,就服务器而言,百分之百自动化似乎是一个有吸引力的命题,而且是可行的。但是,对于UI,没有任何东西可以代替人眼来测试它的外观和感觉。这是无法模仿的。手动测试,在这些情况下,是不可替代的。

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

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

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

相关文章

Qt之QDial选择器

文章目录 前言一、QDial是什么二、操作api信号与槽示例代码总结 前言 Qt是一种流行的跨平台的C GUI应用程序开发框架,用于构建图形用户界面(GUI)和其他桌面应用程序。QDial是Qt框架中的一个小部件,用于创建旋转式的拨号器。本文将介绍如何使用QDial进行…

ChatGLM Efficient Tuning效率调试PEFT

ChatGLM Efficient Tuning 基于 PEFT 的高效 ChatGLM-6B 微调。 [ English | 中文 ] 更新日志 [23/06/05] 现在我们实现了 4 比特的 LoRA 训练(也称 QLoRA)。请尝试使用 --quantization_bit 4 参数进行 4 比特量化微调。(实验性功能&#…

Echarts实现流程图关系图拓扑图

实现如下&#xff0c;可以横着排竖着排都可以 1.先写个div做画布 ref值随意&#xff0c;但是一点要写 <div style"height: 400px;" ref"echartdom"></div> 2.下载echarts 我这边下载的是 "echarts": "^4.9.0",最新版应…

奢侈品回收APP系统开发功能有哪些?

奢侈品售卖回收APP系统开发功能有哪些&#xff1f; 1.回收品牌分类&#xff1a;奢侈品回收APP平台可以将支持回收鉴定的奢侈品品牌及商品进行分类展示&#xff0c;方便用户查看自己的想要出售的是不是平台支持的商品。 2.商品在线检索&#xff1a;客户可以直接按…

STM32F4_红外遥控

目录 1. 红外遥控简介 2. NEC协议 3. 硬件设计 4. 实验程序详解 4.1 main.c 4.2 Remote.c 4.3 Remote.h 1. 红外遥控简介 红外遥控是一种无线、非接触的控制技术。具有抗干扰能力强&#xff0c;信息传输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;易实现等优…

深入理解Redis的AOF和RDB持久化机制

Redis的AOF&#xff08;Append-Only File&#xff09;和RDB&#xff08;Redis Database&#xff09;是两种常见的持久化机制&#xff0c;用于将内存中的数据保存到磁盘上&#xff0c;确保数据在Redis重新启动时的持久性。本文将深入介绍AOF和RDB的原理和使用&#xff0c;帮助读…

HQChart实战教程65-自定义手机端分时图tooltip显示数据

HQChart实战教程65-自定义手机端分时图tooltip显示数据 手机端分时图tooltip步骤1. 配置手机端tooltip2. 替换k线tooltip格式化输出函数2. 格式化输出函数说明HQChart插件源码地址完整的demo源码手机端分时图tooltip hqchart手机端内置一个tooltip,显示手势所在K线的信息。默认…

邮件打开率低?来看看这几招提高邮件打开率!

什么是邮件打开率&#xff1f; 邮件打开率&#xff1a;简单来讲就是收件人打开的邮件数占发送邮件总数的百分比。 我们要做的就是如何吸引收件人打开邮件&#xff0c;那可以从以下几个方面来考虑&#xff1a; 1、邮件标题 邮件标题直接向收件人表达了这封邮件是关于什么的&am…

CSS样式优先级怎样划分?【CSS优先级规则】

定义CSS样式时&#xff0c;经常出现两个或更多样式规则应用在同一元素上的情况。此时CSS就会根据样式规则的权重&#xff0c;优先显示权重最高的样式。CSS优先级指的就是CSS样式规则的权重。在网页制作中&#xff0c;CSS为每个基础选择器都指定了不同的权重&#xff0c;方便我们…

【内存问题真的很烦人】linux内存等资源管理 以及 linux内存不足解决办法

linux内存不足解决办法 ///这一部分存在疑问 查看目录下文件夹大小 du -h --max-depth1 看具体哪个文件夹占用内存过高&#xff0c;一般是日志&#xff0c;删除即可。 ///这一部分存在疑问&#xff0c;上面的文件夹可以代表内存吗&#xff1f; 内存不够 top 命令 看内存占用…

Python就业前景如何?三大就业岗位分享

Python是一门面向对象的编程语言&#xff0c;编译速度超快&#xff0c;从诞生到现在已经20来个年头了。Python的排名从去年开始就借助人工智能持续上升&#xff0c;Python的火热&#xff0c;也带动了工程师们的就业热。 据统计&#xff0c;现在初级Python工程师的起薪一般在10…

【 Lucas-Kanade光流法】

这里写目录标题 1.1 Lucas-Kanade光流法1.1 Lucas-Kanade光流法详细步骤&#xff1a; 1.1 Lucas-Kanade光流法 Lucas-Kanade光流法是一种密集光流估计方法&#xff0c;用于计算图像中每个像素的运动向量。它假设在相邻帧之间&#xff0c;像素的灰度值不会发生大的变化&#xf…

《网络安全0-100》双钥加密体制

双钥加密体制 怎么说 没找着公钥加密在哪&#xff0c;所以就接着写了。 公钥加密&#xff0c;也叫非对称(密钥)加密&#xff0c;属于通信科技下的网络安全二级学科&#xff0c;指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。它解决了密钥的发布和管理…

【ArcGIS】使用ArcGIS进行坡度分析

使用ArcGIS进行坡度分析 1 数据来源2 操作步骤参考 坡度是指过地表面任意一点的切平面与水平地面之间的夹角。坡度用来计算任–单元和邻域单元间变化的最大比率&#xff0c;如单元下降最陡的坡面(单元和它相邻单元间的高程距离的最大变化率)。 坡度分析是计算两相邻像元间的数值…

STM32的时钟系统(嵌入式学习)

STM32的时钟系统 时钟的基本概念时钟系统的组成时钟源晶体振荡器和RC振荡器的区别晶体振荡器RC振荡器 STM32G030时钟源时钟树STM32CubeMX时钟树配置 时钟的基本概念 时钟是指用于计量和同步时间的装置或系统。时钟是嵌入式系统的脉搏&#xff0c;处理器内核在时钟驱动下完成指…

Goby 漏洞发布|PandoraFMS 软件 upload_head_image.php 任意文件上传漏洞

漏洞名称&#xff1a;PandoraFMS 软件 upload_head_image.php 任意文件上传漏洞 English Name&#xff1a;PandoraFMS upload_head_image.php Arbitrary File Upload Vulnerability CVSS core: 9.0 影响资产数&#xff1a;768 漏洞描述&#xff1a; PandoraFMS是美国Pando…

【Python】文件操作 ④ ( 文件操作 | 向文件写出数据 | 使用 write 函数向文件中写出数据 | 使用 flush 函数刷新文件数据 )

文章目录 一、向文件写出数据1、使用 write 函数向文件中写出数据2、使用 flush 函数刷新文件数据3、代码示例 - 使用 write / flush 函数向文件中写出数据 一、向文件写出数据 1、使用 write 函数向文件中写出数据 Python 中 通过 调用 write 函数 向文件中写入数据 ; 语法如下…

Fiddler抓包工具之fiddler的常用快捷键

一、常用三个快捷键 ctrlX :清空所有记录 CtrlF&#xff1a;查找 F12&#xff1a;启动或者停止抓包 使用 QuickExec Fiddler2 成了网页调试必备的工具&#xff0c;抓包看数据。Fiddler2自带命令行控制。 fiddler 命令行快捷键&#xff1a;ctrl q &#xff0c;然后 输入 help…

记一次杀猪盘网站渗透

1、首先访问杀猪盘主站。 2、通过扫描子域名找到后台管理系统。 3、对其后台的登录接口进行测试&#xff0c;发现接口的用户名参数存在sql注入&#xff0c;直接跑数据。 4、注入得到后台的账密如下,用户名和safecode是明文的&#xff0c;password使用自定义加密。 跑出来了账号…

PaaS2.0、Matter、AIGC、新能源…TUYA开发者大会亮点抢先看

6月29日&#xff0c;TUYA开发者大会&#xff08;深圳&#xff09;即将开幕。作为业内备受关注的盛会&#xff0c;大会的各种“路透”消息络绎不绝。那么TUYA开发者大会将呈现哪些精彩&#xff0c;我们带大家一探究竟。 亮点1&#xff1a;IoT行业风向标 积蓄2年的硬核分享 TUYA…