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

自动化测试未来趋势系列:

  1. 自愈(Self-Healing)技术

1. 自愈技术

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

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

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

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

2. 技术原理

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

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

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

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

自愈功能具有以下特点:

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

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

Self-Healing Process

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

  • 减少测试失败率

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

  • 防止测试不稳定

    如果我们测试过程中有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. 小结

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

下篇我们会给大家介绍: 自动化测试未来趋势:(二) AI 机器学习技术

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容