自动化测试未来趋势 ------ 自愈(Self-Healing)技术

2023-10-22 11:20

本文主要是介绍自动化测试未来趋势 ------ 自愈(Self-Healing)技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 自动化测试未来趋势系列:自愈(Self-Healing)技术

1. 自愈技术

自愈(Self-Healing)技术在计算机术语中是指:一种自我修复的管理机制。

类比生命体,当生命体遭受到一些小的伤害时,它们的身体往往能够通过自身的修复机制来实现自愈,而不需要外界加以干预。如壁虎的断尾再生,或者蟹类的躯体再生能力那样。

回到计算机领域,自愈技术也在广泛的使用,比如芯片的信息通道自愈,软件系统的故障自愈等。那么我们这里要介绍的是在自动化测试方向上的一种自愈技术:

可以发现其测试脚本执行中的非预期错误并在无需人工干预的情况下自行更改,从而将自身恢复到更好的运行状态。

2. 技术原理

问题域:在自动化测试中使用自愈技术主要解决的是对象识别问题。

传统的自动化测试框架和工具使用应用程序模型来定义应用程序的组件和对象及其属性。然后使用这些定义来识别和操作应用程序组件。但是应用程序在更新时会经常更改。可能是有意的开发人员变更或者是即时(由应用程序系统或构建过程)发生的。这些变化破坏了我们基于静态定义的传统自动化方式。

自然语言处理(NLP)和机器学习 (ML) 等智能技术已经发展到测试脚本现在可以“学习”和“适应”的地步。自愈测试自动化工具使用 AI 和机器学习技术,根据用户界面 (UI) 或应用程序环境的变化可以自动更新和调整测试过程。

在运行测试时,他们会扫描应用程序的用户界面以查看是否存在任何对象。然后他们将它们与之前为自动化测试生成的应用程序模型进行比较。如果应用程序有任何更改,则有一种技术可以让测试适应并自动更新。这种能力被称为“自我修复”。属性更改是自动感知的,内部脚本在运行时通过自我修复进行自我修复。

自愈功能具有以下特点:

  • 在执行过程中,如果某个测试步骤定位器无法被其默认定位器值检测到,则列表中的其他定位器策略将自动应用,无需测试人员的任何手动干预。执行将继续,就好像没有发生任何故障一样。
  • 在执行过程中,如果测试步骤定位器失败并且无法使用任何其他定位器策略自动检测到,测试将暂停执行,允许用户选择相关元素并继续执行。新的定位器策略将在下次执行时自动更新。

下图介绍了自愈技术的主要步骤:

自动化测试自愈技术的优势主要有:

  • 减少测试失败率

    测试执行失败很正常,但是有时候失败的根本原因仅仅是由于用户界面发生了变化而测试脚本没有同步变化。使用自愈技术后,由于无法正确识别的对象位置而影响脚本执行失败的情况就不太可能发生。而传统的自动化框架无法识别这些变化并自动更新。

  • 防止测试不稳定

    如果我们测试过程中有flaky tests存在的话,我们很难确定我们的测试是否是稳定的。”Nosuchelementexception“ 错误是导致测试设计不稳定的几个错误之一,测试团队很难完全控制这样的现象发生。当我们的测试设计和应用程序保持一致时,测试在执行期间失败的可能性较小,并且执行流程也更加流畅。

  • 提高脚本维护性

    测试代码中的更改与开发人员在应用程序中所做的更改成正比。由于根本原因可能会发生变化并且不能反映 AUT 的真实状态和性能,因此失败的测试结果会限制测试人员获得有关其测试的有意义的见解。通过识别和更新用户界面中的任何更改的测试用例,自愈技术节省了敏捷测试和开发团队的时间和精力。除了时间和精力之外,测试自动化中的自我修复也显着降低了测试维护成本。

3. 业内实践

我们可以看到,业内已经有一些比较好的实践了,比如Healenium项目。

以Healenium项目为例,看看自动化测试自愈技术是怎么工作的:

假设我们通过id 的方式来定位我们应用程序界面上的一个按钮,定位器应该是:#button

 从上图可以看到,元素可以被正确定位到。Healnium会将正确的定位器保存下来,作为下一次测试执行的基准值。

现在,我们假设开发人员变更了应用程序的UI界面,改变了这个按钮的id属性,从#button变更为 #green_button。但是由于某种原因,测试团队没有被通知到有这个变更,所以测试脚本也没有更新。那么当我们再次执行脚本的时候,在尝试使用#button的旧定位器去定位按钮的时候,脚本就会报错,提示 “NoSuchElement”的错误异常。

在这种情况下,使用标准的 Selenium 实现测试将失败,但使用 Healenium 则不会。 Healenium 捕获 NoSuchElement 异常,触发机器学习算法,传递当前页面状态,获取之前成功的定位器路径,比较它们,并生成修复的定位器列表。它采用得分最高的定位器并使用该定位器执行操作。正如我们看到的元素被成功找到并通过了测试。

测试运行后,Healenium 生成报告,其中包含有关修复定位器、屏幕截图和修复成功反馈按钮的所有详细信息。

如果修复成功,我们可以使用 Healenium Idea 插件更新我们的自动化测试代码:插件使用修复定位器寻找修复和更新测试代码。

 Healenium 使用一种机器学习算法来分析当前网页的变化:基于权重的最长公共子序列算法

更多关于这个项目的详情,可以访问这个项目官网:https://healenium.io/

基于权重的最长公共子序列算法

通过这个案例,我们来对比一下传统自动化测试方式和基于自愈技术的自动化测试方式中对象维护的差异(如下图所示):

 传统自动化测试方式和基于自愈技术的自动化测试方式

4. 小结

以上给大家简单介绍了自动化测试自愈技术的背景和实践。自动化测试未来的发展趋势必然是越来越智能化,因此也会有更多的智能技术应用到自动化测试领域,从而提升自动化测试的效率。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!å¨è¿éæå¥å¾çæè¿°

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:779450660里面有各种软件测试资源和技术讨论)


 

这篇关于自动化测试未来趋势 ------ 自愈(Self-Healing)技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261122

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改