首页 / 软件测试

软件测试无效专利 发明

技术领域

[0002] 本文中提供了涉及测试软件的技术,并且特别地但不排他地涉及用于使用概率图形模型和规则引擎来标识失败软件测试的原因的方法,该概率图形模型和规则引擎用于按
照具有图形用户界面的web应用的失败可能性来对测试步骤进行评估和排序(sort)。

相关背景技术

[0003] 对软件测试和维护成本的一个主要贡献因素是:软件测试期间的失败动作通常不是软件测试失败的原因。在这样的情况下,标识软件测试失败的原因并且纠正该失败的原
因需要时间和资源、增加软件停机时间,并且负面地影响用户体验。例如,用户界面(UI)测试是软件递送过程的一部分。它用于核实软件是否正常运作,并且针对错误(bug)进行检
查。传统上,UI测试是由质量工程师实行的。然而,这种方法并没有随着现代应用而扩展,在现代应用中,UI扮演着更加突出的角色。因此,需要新的技术来标识软件测试失败的原因。

具体实施方式

[0027] 本文中提供了涉及测试软件的技术,并且特别地但不排他地,涉及用于使用概率图形模型和/或规则引擎来标识失败软件测试的原因的方法,该概率图形模型和/或规则引
擎用于按照动态应用的失败可能性来对测试步骤进行评估和排序。
[0028] 在各种实施例的该详细描述中,出于解释的目的,阐述了众多具体细节以提供对所公开的实施例的全面理解。然而,本领域技术人员将领会到,这些不同的实施例可以在有
或没有这些具体细节的情况下被实践。在其他实例中,结构和设备以框图形式来示出。此
外,本领域技术人员可以容易地领会到,呈现和实行方法的特定顺序是说明性的,并且可设
想的是,这些顺序可以变化,并且仍然保持在本文中公开的各种实施例的精神和范围内。
[0029] 本申请中引用的所有文献和类似材料,包括但不限于专利、专利申请、文章、书籍、论文和互联网网页,都出于任何目的通过引用整体地并入本文中。除非另行定义,否则本文中使用的所有技术和科学术语具有与本文中所描述的各种实施例所属领域的普通技术人
员通常理解的含义相同的含义。当所并入的参考中的术语定义似乎与本教导中提供的定义
不同时,应当以本教导中提供的定义为准。本文中使用的章节标题仅用于组织目的,而不要
被解释为以任何方式限制所描述的主题。
[0030] 定义为了便于理解本技术,下面定义了多个术语和短语。遍及该详细描述阐述了附加
的定义。
[0031] 遍及本说明书和权利要求书,以下术语采用本文中明确关联的含义,除非上下文另行明确指示。本文中使用的短语“在一个实施例中”不一定指代同一实施例,尽管它可以
指代同一实施例。此外,本文中使用的短语“在另一个实施例中”不一定指代不同的实施例,尽管它可以指代不同的实施例。因此,如下所述,在不脱离本发明的范围或精神的情况下,
可以容易地组合本发明的各种实施例。
[0032] 此外,如本文中所使用的,术语“或”是包含性的“或”操作符,并且等同于术语“和/或”,除非上下文另行明确指示。术语“基于”不是排他性的,并且允许基于未描述的附加因素,除非上下文另行明确指示。此外,遍及本说明书,“一”、“一个”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
[0033] 如本文中所使用的,术语“大约”、“近似”、“基本上”和“显著地”被本领域普通技术人员理解,并且将在某种程度上根据它们在其中被使用的上下文而变化。如果在给定这些术语在其中使用的上下文的情况下,存在对于本领域普通技术人员不清楚的对这些术语的
使用,则“大约”和“近似”意指小于或等于特定术语的正或负10%,而“基本上”和“显著地”意指大于或等于特定术语的正或负10%。
[0034] 如本文中所使用的,范围的公开包括:所有值和整个范围内的进一步划分的范围的公开,包括给定该范围的端点和子范围。
[0035] 如本文中所使用的,后缀“无……(‑free)”指代如下技术的实施例:该技术省略了“无……”所附加到的单词的词根特征。也就是说,本文中使用的术语“无X”意指“没有X”,其中X是“无X”技术中省略的技术的特征。例如,“无图形处理单元”系统不包括图形处理单元,“无排序”方法不包括排序步骤等。
[0036] 尽管术语“第一”、“第二”、“第三”等在本文中可以用于描述各种步骤、元素、组合物、组件、区域、层和/或部分,但是这些步骤、元素、组合物、组件、区域、层和/或部分不应该受这些术语所限制,除非另行指示。这些术语用于将一个步骤、元素、组合物、组件、区域、层和/或部分与另一个步骤、元素、组合物、组件、区域、层和/或部分区分开。诸如“第一”、“第二”和其他数字术语之类的术语在本文中使用时并不意味着一定顺序或次序,除非上下文明确指示。因此,在不脱离技术的情况下,本文中讨论的第一步骤、元素、组合物、组件、区域、层或部分可以被称为第二步骤、元素、组合物、组件、区域、层或部分。
[0037] 如本文中所使用的,“增加”或“减少”分别指代变量的值相对于变量的先前测量值、相对于预先确立的值、和/或相对于标准对照值的可检测的(例如,所测量的)正或负改变。增加是相对于变量的先前测量值、预先确立的值、和/或标准对照值的优选地至少10%、
更优选地50%、仍更优选地2倍、甚至更优选地至少5倍、并且最优选地至少10倍的正改变。类似地,减少是变量的先前测量值、预先确立的值和/或标准对照值的优选地至少10%、更优选
地50%、仍更优选地至少80%、并且最优选地至少90%的负改变。指示定量改变或差异的其他
术语(诸如“更多”或“更少”)在本文中以与上述相同的方式来使用。
[0038] 如本文中所使用的,“系统”指代出于共同目的而一起操作的多个真实和/或抽象组件。在一些实施例中,“系统”是硬件和/或软件组件的集成装配。在一些实施例中,系统的每个组件与一个或多个其他组件交互、和/或与一个或多个其他组件相关。在一些实施例
中,系统指代用于控制和引导方法的组件和软件的组合。
[0039] 如本文中所使用的,术语“web应用”指代由客户端在web浏览器中执行的客户端‑服务器计算机程序。常见的web应用包括网络邮件、在线零售和在线拍卖。在一些实施例中,web应用包括用户界面和/或客户端侧逻辑(例如,在客户端计算机上执行的代码)。在一些
实施例中,web应用包括一个或多个网页,并且用户界面指代一个或多个网页的外观、设计
和元素。
[0040] 如本文中所使用的,术语“元素”指代可以通过标识符和/或与另一个元素的关系来标识的数据结构。例如,元素可能具有唯一标识符,即字符串,诸如名称、数字或符号。因此,可以使用标识符来引用和/或检索元素。此外,如果特定元素是父代元素的第一子代元
素,则可以使用指向父代元素的指针,并且然后检索指向第一子代元素的指针来引用和/或
检索该特定元素。浏览器和/或运行时环境可以提供用于引用和/或检索元素的一个或多个
应用编程接口(“API”)。因此,在一些实施例中,术语“元素”指代用户(例如,人、另一个应用、应用编程接口等)与之交互的web应用的组件(例如,应用的图形用户界面的图形组件)。
在一些实施例中,与元素交互使得web应用实行功能。在一些实施例中,“元素”是按钮、超链接、文本框、文本区域、复选框、滑块、单选按钮、菜单、菜单项、滚动条、组合框、切换按钮、旋转按钮、工具栏、小部件、图像、窗口、日历、标签条、列表框、缩略图等。在一些实施例中,元素是网页或屏幕。在一些实施例中,元素包括其他元素,例如,包括一个或多个按钮、文本字段等的网页。在一些实施例中,对应于元素或与元素相关联的源代码可映射到呈现在客户
端设备的屏幕上以供用户查看的可见元素。
[0041] 如本文中所使用的,术语“属性”指代标识和/或描述元素的外观、行为和/或内容的数据。元素可以具有任何数量的属性,例如,元素类型;屏幕、窗口或页面上的位置;颜色;
文本;大小;边界;字体;以及与该元素相关联的代码。
[0042] 如本文中所使用的,术语“用户”指代与应用(例如,与应用的元素)交互的人(例如,真实的或虚拟的人)。在一些实施例中,用户是人(例如,通过图形用户界面与应用交互的人)。在一些实施例中,用户是与应用交互的另一个应用(例如,脚本)或软件组件。
[0043] 如本文中所使用的,术语“模块”或“组件”指代被配置成实行模块或组件的动作的硬件或软件实现方式。在一些实施例中,模块或组件是存储在通用硬件(例如,计算机可读介质、处理设备等)上和/或由通用硬件执行的软件对象或软件例程。在一些实施例中,组件和/或模块被实现为在计算系统上执行的对象或过程(例如,作为单独的线程)。虽然本公开中描述的一些系统和方法通常被描述为以软件(存储在通用硬件上和/或由通用硬件执行
的软件)来实现,但是特定的硬件实现方式、固件实现方式或其任何组合也是可能和得以设
想到的。在本描述中,“计算实体”可以是如本公开中先前描述那样的任何计算系统,或者是在计算系统上执行的任何模块或模块组合。
[0044] 如本文中所使用的,术语“用户序列”是一系列动作,这些动作模仿了用户与web应用UI的一个或多个元素的交互。
[0045] 如本文中所使用的,术语“浏览器”指代用于检索、呈现和遍历万维网上的信息资源的软件应用,诸如例如Mozilla Firefox、Internet Explorer、Microsoft Edge、Google Chrome、 Apple Safari、或被提供用于台式机、膝上型计算机和/或移动设备上的任何其他
web浏览器。
[0046] 如本文中所使用的,术语“用户界面”(UI)指代利用所显示的图形信息来允许用户例如通过指针和/或定点设备控制和/或操作web应用的程序接口。指针可以指代出现在显示器上的光标、箭头或其他符号,并且可以利用定点设备进行移动或控制,以经由UI选择对
象、填充字段、输入命令等。定点设备可以指代用于例如经由web应用的UI来控制光标和/或
箭头、选择对象、填充字段、或输入信息(诸如命令和/或下拉菜单选项)的任何对象和/或设备。这样的定点设备可以包括例如鼠标、轨迹球、跟踪板、跟踪棒、键盘、触控笔、数字化平板设备、数字笔、与触摸屏相结合的指套等。光标可以指代其中可以相对于UI中的区域来进行
输入选择或致动的符号或指针。
[0047] 如本文中所使用的,术语“点击(click或clicking)”指代由任何定点设备(诸如例如鼠标)进行的选择过程,但是这种术语的使用并不意图被如此限制。例如,可以经由触摸屏进行选择过程。在这种情况下,“点击”可能被“触摸”替换。然而,这些仅仅是选择对象或输入信息的方法的示例,并且所要求保护的主题在这些方面中的范围不受限制。
[0048] 如本文中所使用的,术语“与元素交互”指代在web应用UI的元素上实行动作(例如,点击),以选择它、改变其状态、从列表中选择选项、激活下拉菜单、输入值、选择值等等。
[0049] 如本文中所使用的,术语“脚本”指代在计算机程序或web应用内实现某个目标的用户界面内的用户‑计算机交互的序列。目标的示例包括:改变用户密码;在web应用内实行购买交易;加入团队/组以授予读取、写入或销毁由该组控制的文件的权限;或者核实/改变
与用户账户相关联的电子邮件地址。因此,在一些实施例中,脚本定义了由模拟用户、web应用和/或浏览器实行某个任务所采取的离散步骤(例如,与元素交互的步骤)的序列。例如,脚本可以定义如下步骤,诸如点击web应用中的按钮以移动到该应用的下一个屏幕。在另一
个示例中,脚本可以包括在接受第一输入作为密码之前等待web应用利用第二输入来验证
第一输入的步骤。在一些实施例中,例如,在对web应用做出改变之后(例如,在对web应用的UI做出改变之后),由计算机例行地执行脚本以测试web应用。在一些实施例中,脚本周期性地运行,例如,每小时、每天、每周、每月和/或每年地运行。在一些实施例中,每当新代码被提交到代码库的主分支时,就自动执行脚本。在一些实施例中,脚本使用在操作系统级别处
输入数据的步骤来模拟用户动作。在一些实施例中,编写脚本以在操作系统级别处跟踪输
出。例如,操作系统级脚本可以包括:点击屏幕上的特定像素或监测屏幕上的像素颜色改变
的步骤。在一些实施例中,在数据库中提供脚本。
[0050] 如本文中所使用的,术语“根本原因”指代软件测试失败的起始原因(例如,元素属性改变、动作、步骤)。在一些实施例中,术语“根本原因”指代导致软件测试失败的一系列测试步骤中最早的元素属性改变、步骤或动作。
[0051] 描述Web应用往往具有复杂的UI,对于这些UI,UI元素的排列和组合会产生待测试的大
量的潜在命令和命令序列的字段。此外,web应用会随着时间的推移而改变,使得先前的测
试脚本无法工作。因此,在一些实施例中,本文中提供的技术涉及web应用(例如,web应用的UI)的自动化测试、以及标识web应用(例如,web应用的UI)中作为软件测试失败的原因的改变。在本文中提供的软件测试技术的一些实施例中,测试自动化使用通常与被测试的软件
分离的软件来控制测试的执行、以及对实际结果与预测结果的比较。如今,许多软件应用是
作为基于web的应用来编写的,该应用要在互联网浏览器或浏览器引擎中运行。使软件测试
自动化存在许多优点,例如,与测试的可重复性和执行速度有关的优点。
[0052] 在一些实施例中,该技术提供了用于标识web应用UI测试失败的根本原因的方法和系统,例如,包括一个或多个网页的web应用,该网页包括web应用UI元素。该技术确定从
web应用的一个版本到web应用的后续版本进行的各种类型的改变(例如,元素属性和/或
web应用代码中的改变)的概率。该概率用于提供在测试web应用时什么元素和什么类型的
改变可能会产生失败的预测。
[0053] 例如,在一些实施例中,该技术评估web应用UI,并且标识一个或多个网页上存在的元素。在一些实施例中,该技术标识网页上存在的元素的一个或多个属性。在一些实施例
中,该技术评估与网页和/或网页上的元素相关联的代码。在一些实施例中,该技术标识和
量化网页上的元素对的关系(例如,距离、相对位置)。在一些实施例中,该技术构造了表示网页上的元素以及网页上的元素当中的关系的图形模型。
[0054] 在一些实施例中,该技术涉及标识web应用和/或web应用的元素将改变的概率(例如,作为时间、版本、开发等的函数)。在一些实施例中,该技术标识元素属性中的改变、和/或web应用UI的第一版本(例如,网页的第一版本)与web应用UI的第二版本(例如,网页的第二版本)之间的网页代码中的改变。在一些实施例中,元素属性中的改变和/或web应用UI的
第一版本(例如,网页的第一版本)与web应用UI的第二版本(例如,网页的第二版本)之间的网页代码中的改变由图形模型中的改变来表示。在一些实施例中,使用概率方法(例如,贝
叶斯分析、隐马尔可夫模型等)来确定元素属性将在web应用UI的第一版本(例如,网页的第一版本)与web应用UI的第二版本(例如,网页的第二版本)之间改变的概率。在一些实施例中,使用概率方法(例如,贝叶斯分析、隐马尔可夫模型等)来确定网页的特定区域将包括从web应用UI的第一版本(例如,网页的第一版本)和web应用UI的第二版本(例如,网页的第二版本)的改变的概率。在一些实施例中,计算图形模型中的改变的概率以提供web应用的元
素属性和/或代码中的改变的概率图形模型。
[0055] 在一些实施例中,规则引擎包括:用于检查测试期间输入和/或计算的元素和/或值的规则。在一些实施例中,规则引擎的规则检查值是大于最小值和/或小于最大值。
[0056] 在一些实施例中,概率图形模型和规则引擎用于产生web应用中可能产生错误的可能改变的排名列表(ranked list)。在一些实施例中,按照改变在web应用中发生的概率
来对排名列表进行排序。在一些实施例中,当实行web应用的测试并且发生错误时,查询web
应用中可能产生错误的可能改变的排名列表,并且检查这些可能改变作为错误的可能来
源。参见例如图3。
[0057] 本技术的实施例采取完全硬件的实施例、完全软件的实施例、或包括硬件和软件组件两者的实施例的形式。在一些实施例中,该技术以软件来实现,该软件包括但不限于固
件、驻留软件、微代码等。
[0058] 实施例可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,该介质提供用于由计算机或任何指令执行系统使用或与其结合使用的程序代码。计算
机可用或计算机可读介质可以包括存储、传送、传播或传输用于由指令执行系统、装置或设
备使用或与其结合使用的程序的任何装置。该介质可以是电子、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。例如,该介质可以包括计算机可读介质,诸如半导体或固态存储器、磁带、可移除计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘等。
[0059] 在一些实施例中,该技术包括使用计算机视觉以评估web应用UI,例如以标识网页上的元素的属性。在一些实施例中,该技术包括使用代码分析来表征与web应用相关联的代
码。在一些实施例中,该技术包括:使用计算机视觉来标识web应用UI的一个或多个元素的
属性从一个版本到另一个版本的改变。在一些实施例中,该技术包括使用代码分析来标识
与web应用相关联的代码从web应用的一个版本到另一个版本的改变。在一些实施例中,该
技术包括使用计算机视觉和代码分析两者来标识web应用从web应用的一个版本到另一个
版本的改变。
[0060] 在一些实施例中,该技术在与大型分布式数据库相关联的大规模并行计算系统上运行的计算机软件中实现。在一些实施例中,该技术使用云技术来实现。在一些实施例中,
在单个本地机器上或在云环境中的一个或多个虚拟机上产生并评估模型。
[0061] 应用如本文中所描述的,该技术涉及标识包括UI的web应用的测试错误的原因。web应
用可以包括一个或多个网页。web应用可以与数据库通信。
[0062] 在一些实施例中,服务器计算机在服务器侧上运行用于web应用的代码,该代码向在客户端侧上执行web应用的web浏览器提供网页、文件和其他内容。在一些实施例中,客户
端侧应用在不使用浏览器的情况下执行。在一些实施例中,web应用具有使用计算机视觉
和/或通过对可访问源代码的分析来标识、定位和监测的元素。例如,在一些实施例中,作为一系列HTML网页在客户端侧上执行的web应用包括可标识的文档对象模型(DOM)元素。在
HTML DOM中,元素对象表示HTML元素。HTML元素对象可以具有子代节点(例如,类型元素节
点、文本节点或注解节点)。HTML元素对象也可以具有属性。因此,在一些实施例中,可以通过本文中提供的技术的实施例来定位和监测DOM元素,该技术使用计算机视觉和/或对源代
码的分析来标识、定位和监测元素(例如,以通过唯一标识符和/或通过DOM中的相对和/或
绝对位置来引用和/或检索元素)。
[0063] 在一些实施例中,web应用具有可以在不使用标准DOM元素的情况下标识、定位和监测的元素。例如,可以使用XML文件、JSON文件或任何其他专有文件类型来定义这些元素。
因此,在一些实施例中,该技术涉及自动化测试实用程序,该实用程序被配置成基于计算机
视觉和/或通过对计算机源代码的分析来标识、定位和监测这些元素。在其中web应用具有
多个屏幕或页面的实施例中,每个屏幕或页面可以被定义为单独的web元素,该web元素具
有被包含在父代元素中的元素。
[0064] 测试在一些实施例中,该技术提供了自动化测试实用程序,该实用程序提供了用于创
建脚本和执行脚本的工具,以用于例如针对web浏览器自动化来测试web应用。因此,在一些
实施例中,每个脚本定义了发生在web浏览器内的至少一个动作或事件(例如,与元素的交
互)。在一些实施例中,自动化测试实用程序被提供作为web浏览器的插件。在一些实施例
中,自动化测试实用程序不需要用户(例如,开发者、软件工程师)从头编写包括多个步骤的脚本。在一些实施例中,自动化测试实用程序包括:用于记录和编辑特定动作或事件的控
件、便于将测试特定的命令添加到脚本的控件、和/或用于实行自然语言处理以将英语短语
翻译成脚本步骤的组件。
[0065] 监测组件在一些实施例中,该技术包括用于监测web应用中的改变的组件。在一些实施例
中,当自动化测试正在运行时,监测组件获得并且存储web应用的屏幕截图。在一些实施例
中,当自动化测试正在执行时,监测组件从一个或多个脚本、自动化测试实用程序和/或web
应用捕获元数据。在一些实施例中,该技术提供了如下监测组件,其例如是外部程序、浏览
器的插件、或自动化测试实用程序的扩展。在一些实施例中,监测组件捕获由自动化测试实
用程序产生的屏幕截图和数据。在一些实施例中,监测组件直接监测正在被测试的应用、或
正在执行该应用的环境(例如,web浏览器)。在一些实施例中,监测组件存储网页的图片作为屏幕截图,并且监测组件存储与作为屏幕截图而捕获的网页图片相关联的源代码。在一
些实施例中,样式表和图像与源代码一起被记录。在一些实施例中,监测组件与自动化测试
实用程序一起执行,以在web应用的测试期间捕获屏幕截图,并且捕获描述了其中正在实行
测试的上下文的元数据。在一些实施例中,元数据特定于特定的自动化测试(例如,元数据
适用于在执行特定的自动化测试时取得的每个屏幕截图(例如,测试脚本的名称、web应用
的名称等))。在一些实施例中,元数据特定于自动化测试的步骤或部分(例如,元数据适用于一个或多个特定的屏幕截图)。
[0066] 因此,实施例提供了向自动化测试实用程序提供一系列指令的脚本,并且自动化测试实用程序与web应用交互。当自动化测试实用程序执行脚本时,监测组件捕获web应用
的UI的屏幕截图。在一些实施例中,当满足所定义的标准时,例如,当在脚本中标识了某些
类型的步骤时、当在web应用中发生某些类型的动作或事件时、或者它们的组合时,记录屏
幕捕获。在一些实施例中,在屏幕捕获被自动化测试实用程序处理之前、或者在被显示在
web应用的UI中之后,记录该屏幕捕获。因此,在一些实施例中,监测组件通过分析脚本来在交互发生之前跟踪该交互,并且屏幕捕获在UI改变之前发生。在一些实施例中,监测组件在
web应用对模拟用户所采取的动作做出响应之后记录屏幕捕获。关于标识脚本中发生的动
作或事件并且等待动作事件在web应用中发生(例如,作为UI中的改变)的监测组件来记录
屏幕捕获。
[0067] 在一些实施例中,用户(例如,脚本)动作是由UI作为输入接收到的点击,并且屏幕截图和相关联的元数据在该点击期间被记录。在一些实施例中,屏幕截图和相关联的元数据在web应用事件期间被记录,该web应用事件例如是验证事件、将标志、变量或阈值条件设
置为已满足、诸如DOM元素之类的特定元素的创建或删除、服务器侧web应用与客户端侧web
应用之间在任一方向上或在两个方向上的通信、诸如用户输入在数据被转发到数据库之前
是某个原语类型或某个长度之类的内部验证功能、成功地执行诸如扫描恶意软件之类的子
例程或功能、或其任何组合。在一些实施例中,屏幕截图和相关联的元数据在浏览器事件期
间被记录,该浏览器事件例如是页面加载、在浏览器历史记录中加载先前页面、在浏览器历
史记录中加载下一个页面、在新浏览器中打开新页面、在新标签中打开新页面、保存页面、
打印页面、打开打印预览屏幕、在web浏览器中改变文本大小、或其任何组合。在一些实施例中,当电子邮件或打印文档在自动化测试期间被发送时,监测组件会记录它们。在一些实施
例中,监测组件记录不是web应用的UI的一部分的屏幕截图,例如,确认消息、通知(例如,SMS消息、通过社交媒体发送的消息、或本领域中已知的其他消息传递服务)和/或由于与其
他外部web应用(诸如,使用外部认证机制、或通过作为web应用的一部分的第三方软件发送
的电子邮件的web应用)的交互而产生的通信。在一些实施例中,屏幕截图被记录和存储,并且对屏幕截图的分析被用来构造图形模型。除了记录屏幕截图之外,监测组件还记录与所
捕获的屏幕截图相关联的元数据。在一些实施例中,在自动化测试期间记录屏幕截图的同
时捕获元数据(例如,导致屏幕截图被捕获的交互、在页面上被点击的元素的位置和尺寸、
接收到该点击的页面的URL、以及已经访问了被点击的页面的用户的类型)。在一些实施例
中,元数据包括用于生成屏幕截图的网页的URL、当前用户、用户电子邮件、用户类型(例如,基本、专业、返回客户、具有特定权限)、账号、用户国家、用户IP地址、测试期间记录的屏幕截图的数量、对应于屏幕截图的脚本内的步骤、或应用于页面的任何标志。在一些实施例
中,元数据包括例如脚本或自动化测试的名称、脚本最后一次被更新的时间、当前测试的时
间、脚本或自动化测试的脚本编辑器、访问被测试的web应用的设备的实际或模拟GPS位置、
访问期间的一天中的时间、或其任何组合。
[0068] 计算机视觉在一些实施例中,该技术包括使用计算机视觉来分析web应用(例如,web应用UI
(例如,web应用UI的屏幕截图))。在一些实施例中,该技术包括使用计算机视觉来获取、处理、分析并理解数字图像。如本文中所使用的,术语“理解”指代将视觉图像变换成存储在数据库、数据结构(例如,图形模型)中和/或由后续分析使用的图像的描述。在一些实施例中,理解包括:使用基于几何、物理、统计和学习理论的模型从图像数据中产生信息。在一些实
施例中,计算机视觉用于确定web应用UI中的元素的存在或不存在,确定web应用UI中的元
素的大小和/或位置,和/或确定web应用UI中的元素的其他属性。在一些实施例中,计算机
视觉例如基于由web应用UI的计算机视觉分析所确定的属性来识别(例如,标识)元素并且
对元素进行分类。在一些实施例中,计算机视觉包括:使用用于产生卷积神经网络的技术。
在一些实施例中,计算机视觉包括:标识针对web应用UI的多个版本(例如,1、2、3、4、5、6、7、
8、9、10、11、12、13、14、15、16、17、18、19、20、25、30、35、40、45、50、55、60、65、70、75、80、85、
90、95、100或更多版本)的元素的属性中的改变。
[0069] 在一些实施例中,该技术使用计算机视觉来核实和/或验证web应用UI。在一些实施例中,文档模板验证(DTV)技术包括文本框检测(TBD)组件、字符识别(OCR)组件、元素检测(ED)组件、布局检测(LD)组件和/或模板核实(TV)组件。在一些实施例中,该技术提供了一种包括实行文档模板验证(DTV)的步骤的方法,例如,包括检测文本框、识别字符(例如,文本字符)、检测元素、检测布局和/或核实模板的方法。在一些实施例中,该技术提供了一种系统,该系统包括被配置成实行文本框检测、字符识别、元素检测、布局检测和/或模板核实的模块和/或组件。参见例如图4。在一些实施例中,系统实施例的组件根据系统架构进行
交互(例如,传送、传输数据和/或指令),例如,如图4所示。例如,在一些实施例中,TBD组件与LD组件和/或OCR组件交互;ED组件与LD组件交互;并且OCR组件和/或LD组件与TV组件交
互。在一些实施例中,通信流是单向的,例如,如图4所示。例如,在一些实施例中,数据和/或指令从TBD组件被传送到LD组件和/或OCR组件;数据和/或指令从ED组件被传送到LD组件;
并且数据和/或指令从OCR组件和/或LD组件被传送到TV组件。在一些实施例中,根据本文中
所描述的系统架构,数据和/或指令在这些组件当中双向移动。在一些实施例中,每个组件
(例如,文本框检测(TBD)组件、字符识别(OCR)组件、元素检测(ED)组件、布局检测(LD)组件和/或模板核实(TV)组件)被配置成根据系统架构来提供信息和/或数据、和/或从另一个组件接收信息和/或数据。
[0070] 在一些实施例中,每个模块被配置成实行机器学习和/或深度学习以实行其功能。例如,在一些实施例中,文档模板验证(DTV)技术包括:被配置成实行包括使用机器学习和/或深度学习来检测文本框的方法的文本框检测(TBD)组件、被配置成实行包括使用机器学
习和/或深度学习来识别字符的方法的字符识别(OCR)组件、被配置成实行包括使用机器学
习和/或深度学习来检测元素的方法的元素检测(ED)组件、被配置成实行包括使用机器学
习和/或深度学习来检测布局的方法的布局检测(LD)组件、和/或被配置成实行包括使用机
器学习和/或深度学习来核实模板的方法的模板核实(TV)组件。
[0071] 在一些实施例中,该技术提供了用于检测web应用UI上的文本框的系统和方法。在一些实施例中,检测文本框包括:标识web应用UI上的文本框的位置和/或尺寸。在一些实施
例中,检测文本框包括:产生描述web应用UI上的文本框的位置(例如,以x‑y屏幕坐标和/或以相对于包括该文本框的窗口或元素的x‑y坐标的位置)和/或尺寸(例如,作为高度和宽
度)的值。在一些实施例中,文本框和/或描述web应用UI上的文本框的位置和尺寸的值被传
递给字符识别模块。
[0072] 在一些实施例中,检测文本框包括:提供和/或使用神经网络来检测图像(例如,屏幕图像)中的文本。在一些实施例中,被配置成检测文本的组件被配置成使用神经网络来检
测图像(例如,屏幕图像)中的文本。在一些实施例中,本文中提供的技术包括如Baek(2019)的“Character Region Awareness for Text Detection”(arXiv:1904.01941 [cs.CV])中描述的神经网络,其通过引用并入本文中。在一些实施例中,神经网络包括如其中图2处的
Baek中所示的架构,其通过引用并入本文中。在一些实施例中,神经网络包括基于具有批归
一化的VGG‑16的中央卷积架构(参见,例如Simonyan(2018)的“Very Deep Convolutional Networks for LargeScale Image Recognition”(arXiv:1409.1556 [cs.CV]),其通过引用并入本文中)。在一些实施例中,神经网络包括跳过连接(例如,神经网络的解码组件包括跳过连接)。在一些实施例中,跳过连接类似于U‑net(参见例如Ronneberger(2015)的“U‑Net: Convolutional Networks for Biomedical Image Segmentation”(arXiv:
1505.04597 [cs.CV]),其通过引用并入本文中)。在一些实施例中,用于文本框检测的方法和/或系统(例如,包括神经网络)产生作为得分图的包括两个通道的输出:1)用于定位图像中的个体字符的区域得分;以及2)用于将每个字符分组到单个实例中的亲和性得分
(affinity score)。参见示例1。
[0073] 在一些实施例中,该技术提供了用于检测web应用UI上的元素的方法和系统。在一些实施例中,用于检测web应用UI上的元素的方法包括:对文本框进行分组并且检测不在文
本类别中的对象(例如,检测非文本类别对象(例如,按钮、输入框、图标等))。在一些实施例中,用于检测web应用上的元素的系统包括:被配置成对文本框进行分组的组件,以及被配
置成检测不在文本类别中的对象(例如,检测非文本类别对象(例如,按钮、输入框、图标
等))的组件。在一些实施例中,用于元素检测的方法包括:检测文本框和/或检测包括被分组的文本框的元素。在一些实施例中,用于元素检测的方法包括检测对象(例如,非文本框
对象)。在一些实施例中,用于元素检测的系统包括:被配置成检测文本框和/或检测包括被分组的文本框的元素的组件。在一些实施例中,用于元素检测的系统包括:被配置成检测对
象(例如,非文本框对象)的组件。
[0074] 在一些实施例中,检测元素包括:标识web应用UI上的元素的位置和/或尺寸。在一些实施例中,检测元素包括:产生描述web应用UI上的元素的位置(例如,以x‑y屏幕坐标和/或以相对于包括该元素的窗口或元素的x‑y坐标的位置)和/或尺寸(例如,作为高度和宽
度)的值。在一些实施例中,元素和/或描述web应用UI上的元素的位置和尺寸的值被传递给
字符识别模块。
[0075] 在一些实施例中,UI的元素包括被分组的文本框。在一些实施例中,该技术通过向量u =(x, y, w, h)来表示文本框,其中x和y表示文档屏幕截图或视口中的像素方位,并且w和h表示框的宽度和高度。在一些实施例中,确定文本框之间的距离。在一些实施例中,使
用通过在软件中编码的函数实行的方法来确定文本框之间的距离。在一些实施例中,使用
如下编码的函数来确定文本框之间的距离:
其中在该函数中,u和v是两个向量,其元素被定义为u = (x, y, w, h)。在一些实
施例中,文本框之间的距离被提供给用于基于密度的聚类的方法,该方法对文本框进行分
组并且输出文本框的集群(参见例如,图6和图7)。在一些实施例中,对文本框进行分组的基于密度的聚类产生文本框的集群,例如,以标识元素。参见例如示例2。
[0076] 在一些实施例中,该技术提供了用于检测web应用UI上的对象的方法和系统。在一些实施例中,用于元素检测的方法包括对象检测的步骤。在一些实施例中,检测对象包括:
标识web应用UI上的对象的位置和/或尺寸。在一些实施例中,检测对象包括:产生描述web
应用UI上的对象的位置(例如,以x‑y屏幕坐标和/或以相对于包括该对象的窗口或元素的
x‑y坐标的位置)和/或尺寸(例如,作为高度和宽度)的值。在一些实施例中,将对象和/或描述web应用UI上的对象的位置和尺寸的值传递给字符识别模块。在一些实施例中,包括被配
置成检测元素的组件的系统包括被配置成检测对象的子组件。在一些实施例中,用于检测
web应用UI上的对象的方法包括提供和/或使用YOLO神经网络。在一些实施例中,用于检测
web应用UI上的对象的系统包括YOLO神经网络(参见例如,Redmon (2015)的“You Only 
Look Once: Unified, RealTime Object Detection”(arXiv:1506.02640 [cs.CV]);
Redmon(2016)的“YOLO9000: Better, Faster, Stronger”(arXiv:1612.08242 [cs.CV]);
以及Redmon(2018)的“YOLOv3: An Incremental Improvement”(arXiv:1804.02767 
[cs.CV]),它们中的每一个通过引用并入本文中)。在一些实施例中,神经网络被训练成标识非文本对象,例如,图标、按钮和/或正方形输入框。在一些实施例中,神经网络包括:用图标数据集训练的图标分类器。在一些实施例中,图标分类器将图标标识和/或分类为购物车
图标、箭头图标、打开文件图标、保存文件图标、登录图标、选中图标、项目符号图标和/或关闭图标。在一些实施例中,参见示例3。
[0077] 代码分析在一些实施例中,该技术包括分析计算机软件(例如,与web应用相关联的源代码
和/或目标代码)。在一些实施例中,该技术包括在不运行web应用的情况下分析源代码和/
或目标代码。在一些实施例中,该技术包括在web应用运行时分析源代码和/或目标代码。在
一些实施例中,使用自然语言处理来分析源代码和/或目标代码,以标识动作并且将动作与
(例如,通过计算机视觉和/或通过对源代码的分析来标识的)界面元素相关联。
[0078] 图形模型、图形模型比较和概率图形模型实施例提供了用于产生web应用的元素的图形模型的技术。在一些实施例中,图形
模型包括web应用的元素之间的关系。例如,在一些实施例中,图形模型包括web应用UI的元
素的相对位置的图。在一些实施例中,图形模型包括描述图形模型中的元素的属性(例如,
位置、类型、状态、颜色、大小、形状等)的信息(例如,数据)。在一些实施例中,该技术监测web应用并且标识web应用的图形模型中的改变。例如,web应用的UI上的按钮方位中的改变
将导致描述UI的图形模型中的改变。因此,在一些实施例中,该技术标识了描述web应用的
第一版本的第一图形模型相对于描述web应用的第二版本的第二图形模型的改变。在一些
实施例中,该技术标识图形模型中与其他改变相关的改变。例如,在一些实施例中,对图形
模型的分析标识图形模型中的第一改变,该第一改变随着图形模型中的第二改变而发生
(例如,以计算出的第一概率发生)与图形模型中的第一改变随着图形模型中的第三改变而
发生(例如,以计算出的第二概率发生)相比更加频繁。在一些实施例中,使用计算机视觉来标识图形模型中的改变。在一些实施例中,分析源代码中的改变。在一些实施例中,使用计
算机视觉来标识图形模型中的改变,并且分析源代码中的改变。
[0079] 在一些实施例中,监测组件标识包括触发动作或事件的脚本中的步骤,并且监测组件标识该步骤中与触发动作或事件相关联的对象(例如,元素)。在一些实施例中,如果对源代码的分析指示该元素具有指示其在web应用UI内可见的属性,和/或通过对屏幕截图的
分析(例如,通过计算机视觉)将该元素检测为可见,则记录该元素在web应用内的位置。在一些实施例中,还捕获元素的大小数据。如果对象不可见,则元素的数据(例如,属性)仍可能被捕获。在一些实施例中,元素的属性(例如,状态、位置和大小)由自动化测试实用程序来记录。在一些实施例中,监测组件从对应的脚本来标识触发动作或事件的元素,并且然后
请求自动化测试实用程序基于所标识的元素的名称或与另一个元素的关系来产生所标识
的元素的位置。在一些实施例中,元素的位置是从浏览器显示的左上角开始的像素的数量
(例如,使用将屏幕描述为x值、y值的坐标系)。在一些实施例中,元素的位置被映射到UI的屏幕截图。在一些实施例中,数据被存储在如本文中所描述的图形模型中。
[0080] 在一些实施例中,监测组件分析所标识的可见元素的父代元素,以确定该可见元素是否被包含在另一个可见元素内。例如,在一些实施例中,元素的相关位置是父代元素内
的位置,例如,该元素相对于父代元素的左上角的位置,而不是该元素相对于web浏览器显
示的位置。因此,在一些实施例中,该技术提供了用于确定元素位置的方法,包括调整“屏幕内屏幕”效果的位置,例如,监测组件分析作用于可见元素的脚本步骤,以获得可见元素被
提供在父代元素内的指示。一旦标识出在另一个元素内提供的元素,监测组件就从自动化
测试实用程序请求除了子代元素的位置之外的父代元素的相对位置。在一些实施例中,将
父代元素的相对位置与子代元素的相对位置进行组合,以确定子代元素的实际位置。例如,
父代元素的x值可以被加到位于该父代元素内的子代元素的x值。类似地,父代元素的y值可
以被加到子代元素的y值。可以针对多个父代元素深的子代元素(例如,浏览器内的元素内
的元素)递归地执行该过程。在一些实施例中,在实行边缘检测之后,例如,使用计算机视觉和图像分析来捕获可见元素的位置和大小数据,该计算机视觉和图像分析被配置成通过标
识具有类似颜色的一组像素并且将那些像素关联为单个可见元素来实行边缘检测。在一些
实施例中,元素的位置和大小数据然后被监测组件捕获。因此,本技术的实施例找到了浏览
器未提供和/或未访问的web应用的用途。在一些实施例中,监测组件基于对web应用的源代
码的分析来标识元素的相对位置。在一些实施例中,通过分析关键词的源代码来标识web应
用的元素,并且元素的相对位置被映射到所记录的适当屏幕截图,该关键词标识了已知在
UI中提供可见元素的元素的名称和位置及其属性。
[0081] 由如上所述的计算机视觉和/或源代码分析所标识的元素被记录在图形模型中。此外,元素的位置(例如,相对位置)、元素属性数据和/或元数据被记录在图形模型中。
[0082] 在一些实施例中,该技术包括使用计算机视觉来分析所记录的屏幕截图,使用代码分析来标识UI中的元素,以及使用与屏幕截图相关联地记录的元数据来创建web应用UI
的图形模型。
[0083] 在一些实施例中,该技术在UI的屏幕截图上产生注释(例如,高亮区域),以供本文中提供的技术的用户审查。在一些实施例中,该技术包括使用计算机视觉来分析屏幕截图和/或产生带注释的屏幕截图。在一些实施例中,使用特定形状(例如,矩形、椭圆形、正方形、圆形或云形)或颜色(例如,红色、黄色、蓝色、绿色、紫色、粉红色、橙色或灰色)来提供高亮区域。在一些实施例中,特定形状和/或颜色向本文中提供的技术的用户提供关于由本文
中提供的技术所标识的元素的类型和/或元素中的改变的类型的信息。例如,在一些实施例
中,指示用户输入的高亮颜色或形状是与指示web应用事件的发生的颜色或形状不同的高
亮颜色或形状。在一些实施例中,以相同的颜色针对用户动作和web应用事件(例如,针对以灰度呈现的数据)提供注释,并且元素中的改变由形状、纹理或图标来指示,该形状、纹理或图标对于指示用户输入动作的注释以及对于web应用事件而言是不同的。在一些实施例中,
使用文本、符号、声音、动画、振动或本领域已知的其他形式的输出来提供区分。
[0084] 比较组件在一些实施例中,该技术包括比较组件。在一些实施例中,比较组件接受第一图形
模型和第二图形模型作为输入,并且生成图形模型差异模型作为输出。图形模型差异模型
包括元素差异条目,该元素差异条目标识具有已经从第一图形模型和第二图形模型改变的
属性的元素。在一些实施例中,图形模型差异模型包括元素相同性条目,该元素相同性条目
标识具有尚未从第一图形模型和第二图形模型改变的属性的元素。因此,在一些实施例中,
图形模型差异模型包括如下条目:该条目标识具有已经从第一图形模型和第二图形模型改
变的一些属性,并且具有尚未从第一图形模型和第二图形模型改变的一些属性的元素。在
一些实施例中,对描述web应用UI的多个版本的多个图形模型进行比较,并且标识差异。在
一些实施例中,基于多个图形模型的比较,使用概率模型(例如,隐马尔可夫模型)来分配屏幕的元素和/或区域的改变概率。
[0085] 因此,在一些实施例中,该技术包括被配置成产生图形模型的图形建模组件;以及图形模型比较组件。在一些实施例中,图形建模组件接受具有版本N的web应用(例如,包括
UI)(例如,“应用vN”),并且创建vN图形模型。在一些实施例中,图形建模组件接受具有版本N+1的web应用(例如,包括UI)(例如,“应用vN+1”),并且创建vN+1图形模型。在一些实施例中,图形模型比较组件接受vN图形模型和vN+1图形模型,以产生图形模型差异模型。在一些
实施例中,vN图形模型是web应用的第一版本的模型,并且vN+1图形模型是web应用的后续
版本的模型。
[0086] 在一些实施例中,图形建模组件接受具有版本号N、N+1……N+X的多个版本的web应用(例如,包括UI)(例如,“应用vN”,“应用vN+1”……“应用vN+X”),并且创建vN图形模型、vN+1图形模型……和vN+X图形模型。在一些实施例中,图形模型比较组件接受vN图形模型、
vN+1图形模型……和vN+X图形模型,以产生图形模型差异模型。
[0087] 在一些实施例中,使用概率模型来分析图形模型差异模型,以标识具有在web应用的版本之间改变的高概率的元素。在一些实施例中,使用概率模型来分析图形模型差异模
型,以标识屏幕、页面、窗口和/或父代元素中具有在web应用的版本之间改变的高概率的区
域。在一些实施例中,使用概率模型来分析图形模型差异模型,以根据元素在web应用的版
本之间改变的概率来对元素进行排名。在一些实施例中,使用概率模型来分析图形模型差
异模型,以对屏幕、页面、窗口和/或父代元素中具有在web应用的版本之间改变的高概率的
区域进行排名。在一些实施例中,元素的排名列表用于向用户提供失败软件测试的可能原
因的输出。在一些实施例中,元素的排名列表用于通过软件失败的自主标识来标识要校正
的问题。在一些实施例中,元素的排名列表用于标识要通过软件失败的自主修补来校正的
问题。
[0088] 在一些实施例中,该技术包括:产生描述web应用UI上的元素的属性的属性模型。在一些实施例中,该技术包括:产生针对web应用UI的多个版本(例如,第一版本、第二版
本……)的多个属性模型(例如,第一属性模型、第二属性模型……)。在一些实施例中,比较组件接受第一属性模型和第二属性模型作为输入,并且生成属性模型差异模型作为输出。
该属性模型差异模型包括元素差异条目,该元素差异条目标识具有已经从第一属性模型和
第二属性模型改变的属性的元素。在一些实施例中,属性模型差异模型包括元素相同性条
目,该元素相同性条目标识具有尚未从第一属性模型和第二属性模型改变的属性的元素。
因此,在一些实施例中,该属性模型差异模型包括如下条目:该条目标识具有已经从第一属
性模型和第二属性模型改变的一些属性、并且具有尚未从第一属性模型和第二属性模型改
变的一些属性的元素。在一些实施例中,对描述web应用UI的多个版本的多个属性模型进行
比较,并且标识差异。在一些实施例中,基于多个属性模型的比较,使用概率模型(例如,隐马尔可夫模型)来分配屏幕的元素和/或区域的改变概率。
[0089] 因此,在一些实施例中,该技术包括被配置成产生属性模型的属性建模组件;以及属性模型比较组件。在一些实施例中,属性建模组件接受具有版本N的web应用(例如,包括
UI)(例如,“应用vN”),并且创建vN属性模型。在一些实施例中,属性建模组件接受具有版本N+1的web应用(例如,包括UI)(例如,“应用vN+1”),并且创建vN+1属性模型。在一些实施例中,属性模型比较组件接受vN属性模型和vN+1属性模型以产生属性模型差异模型。在一些
实施例中,vN属性模型是web应用的第一版本的模型,并且vN+1属性模型是web应用的后续
版本的模型。
[0090] 在一些实施例中,属性建模组件接受具有版本号N、N+1……N+X的多个版本的web应用(例如,包括UI)(例如,“应用vN”,“应用vN+1”……“应用vN+X”),并且创建vN属性模型、vN+1属性模型……和vN+X属性模型。在一些实施例中,属性模型比较组件接受vN属性模型、
vN+1属性模型……和vN+X属性模型,以产生属性模型差异模型。
[0091] 在一些实施例中,使用概率模型来分析属性模型差异模型,以标识具有在web应用的版本之间改变的高概率的元素。在一些实施例中,使用概率模型来分析属性模型差异模
型,以标识屏幕、页面、窗口和/或父代元素中具有在web应用的版本之间改变的高概率的区
域。在一些实施例中,使用概率模型来分析属性模型差异模型,以根据元素在web应用的版
本之间改变的概率来对元素进行排名。在一些实施例中,使用概率模型来分析属性模型差
异模型,以对屏幕、页面、窗口和/或父代元素中具有在web应用的版本之间改变的高概率的
区域进行排名。在一些实施例中,元素的排名列表用于向用户提供失败软件测试的可能原
因的输出。在一些实施例中,元素的排名列表用于通过软件失败的自主标识来标识要校正
的问题。在一些实施例中,元素的排名列表用于标识要通过软件失败的自主修补来校正的
问题。
[0092] 在一些实施例中,使用概率模型来实行比较,以标识web应用UI的版本之间的差异(例如,通过标识模型(例如,描述了UI的版本的图形和/或属性模型)之间的差异进行)。在一些实施例中,该比较组件被配置成提供和/或评估概率模型,接受概率模型的输入,和/或
从概率模型产生输出。在一些实施例中,概率模型是以下统计模型,其包括变量对(pairs 
of variables)之间的统计假设、数学关系、规则、和/或与数据和/或数学关系和/或假设相关联的权重。在一些实施例中,概率模型是以下概率模型,其接收变量对之间的统计假设、
数学关系、规则、和/或与数据和/或数学关系和/或假设相关联的权重作为输入。在一些实
施例中,概率模型是以下统计模型,其通过接收训练集数据、产生表征训练集数据的模型、
以及评估表征了训练集数据的模型来标识和/或产生变量对之间的统计假设、数学关系、规
则、和/或与数据和/或数学关系和/或假设相关联的权重。在一些实施例中,概率模型输出
测试步骤是失败软件测试的根本原因、由动作作用的测试元素是失败软件测试的根本原因
等的概率。在一些实施例中,概率模型是隐马尔可夫模型(例如,该模型假设该模型描述了
马尔可夫系统)。参见例如Baum(1966)的“Statistical Inference for Probabilistic 
Functions of Finite State Markov Chains”(数理统计年鉴37:1554‑63);Baum(1967)的“An inequality with applications to statistical estimation for probabilistic 
functions of Markov processes and to a model for ecology”(美国数学学会通报73:
360);Baum(1968)的“Growth transformations for functions on manifolds”(太平洋数学杂志27:211‑27);Baum(1970)的“A Maximization Technique Occurring in the 
Statistical Analysis of Probabilistic Functions of Markov Chains”(数理统计年
鉴41:164‑71);以及Baum(1972)的“An Inequality and Associated Maximization 
Technique in Statistical Estimation of Probabilistic Functions of a Markov 
Process”(不平等(Inequalities)3:1‑8),它们中的每一个都通过引用并入本文中。在一些实施例中,概率模型包括使用条件随机场。在一些实施例中,概率模型包括使用马尔可夫随
机场。参见例如Kindermann(1980)的“Markov Random Fields and Their Applications”(当代数学,1. 美国数学学会,普罗维登斯,R.I.);Li(2009)的“Markov Random Field Modeling in Image Analysis”(Springer,第3版(编辑Sameer Singh));以及Lauritzen(1996)的“Graphical models”(牛津, Clarendon出版社,第33页及以下),它们中的每一个通过引用并入本文中。
[0093] 根本原因的标识在一些实施例中,失败软件测试触发脚本运行,该脚本提供了与“作为失败测试的
根本原因”的可能性相关联的建议动作(例如,测试步骤)。在一些实施例中,将测试失败的概率分配给个体动作包括:量化web应用的版本之间的每个动作的元素属性值的改变。在一
些实施例中,为所有属性分配相等的权重。在一些实施例中,属性被分配权重,例如,当从版本到版本改变时(例如,基于知识(例如,数据、统计信息、规则))导致软件测试失败更频繁的属性被分配的权重比当从版本到版本改变时(例如,基于知识(例如,数据、统计信息、规则))导致软件测试失败更少的属性被分配的权重更多。在一些实施例中,该技术包括神经
网络和/或决策树模型,该神经网络和/或决策树模型取决于该属性是失败软件测试的原因
的可能性(例如,如通过评估训练集和/或使用机器学习而确定的)来学习要分配给属性和/
或属性组的权重。另外,在一些实施例中,神经网络和/或决策树模型使用数据(诸如例如,测试步骤动作在空间或时间上与失败动作的接近度、动作的类型、元素的类型、失败类型
等)来将权重分配给属性和/或属性组。
[0094] 在一些实施例中,对具有一个或多个属性的元素实行动作。因此,本文中提供的技术的实施例将属性分组到属性类别中(例如,以针对该模型保持恒定数量的输入特征)。在
一些实施例中,类别是文本、值、类型、元素、方位(例如,所选元素、以及父代元素、子代元素和兄弟(sibling)元素的x、y坐标)、CSS(例如,以“c_”为前缀的所有CSS属性)、选择器(例如,X路径和选择器属性)、父代(例如,除了x、y坐标之外的所有父代元素属性)、子代(例如,除了x、y坐标之外的所有子代元素属性)、兄弟(例如,除了x、y坐标之外的所有兄弟元素属性)、杂项属性(例如,诸如类、id、href等的HTML属性)和其他的(不在前面列表中的任何内容)。
[0095] 在一些实施例中,基于稳定性将得分分配给每个属性类别。例如,如果某个属性非常稳定(例如,在web应用版本之间改变并且导致软件测试错误的概率较低),并且失败的测试具有较低概率值,则该属性将接收较高得分。在一些实施例中,神经网络和/或决策树模
型使用属性的“改变程度得分”。例如,向数字属性分配平均值和标准偏差,该平均值和标准偏差是根据从在web应用的多个版本上实行软件测试所获得的该数字属性的多个(例如,多
个和/或所有)值计算出的,并且对来自失败测试的值进行比较,以确定这些值与平均值的
标准偏差的数量。在一些实施例中,将Levenshtein距离用于文本值。因此,文本属性被分配平均Levenshtein距离和标准偏差,该平均Levenshtein距离和标准偏差是根据从在web应
用的多个版本上实行软件测试所获得的该文本属性的多个(例如,多个和/或所有)
Levenshtein距离计算出的,并且对来自失败测试的Levenshtein距离进行比较,以确定
Levenshtein距离与平均Levenshtein距离的标准偏差的数量。
[0096] 在一些实施例中,每个类别被分配总得分,该总得分是该类别中的web应用的元素的所有值的平均值。在一些实施例中,将平均值提供到神经网络和/或决策树模型中。在一
些实施例中,将标准偏差提供到神经网络和/或决策树模型中,例如,以提供关于每个类别
内的得分的结构的信息。
[0097] 在一些实施例中,神经网络和/或决策树模型接收一个或多个附加输入作为输入,该附加输入用于向软件测试的每个步骤(例如,动作)分配每个步骤是测试失败的原因的可
能性。在一些实施例中,神经网络和/或决策树模型接收描述每个测试步骤与导致了失败的
步骤之间的步骤数量的值作为输入(例如,与导致了失败的步骤更接近的步骤被认为是比
更远离导致了失败的步骤的步骤更有可能的失败原因)。在一些实施例中,神经网络和/或
决策树模型接收指示在其中软件测试失败的相同页面初始化段中发生或没有发生动作的
布尔值作为输入(例如,在相同页面初始化段中的动作具有作为根本原因的更高可能性)。
在一些实施例中,动作类型(例如,点击、核实、页面初始化等)、元素类型、和/或失败类型被提供给神经网络和/或决策树模型,例如,因为不同的动作、元素和/或失败类型可能具有不
同的概率以及修复建议。在一些实施例中,浏览器类型被提供给神经网络和/或决策树模
型,因为不同的浏览器可能与不同的修复建议相关联。
[0098] 在一些实施例中,已经实行多次软件测试。在一些实施例中,已经在没有软件测试错误的情况下多次实行软件测试。在一些实施例中,根据本文中提供的技术,在软件测试失
败时,已经在没有软件测试错误的情况下被多次测试的web应用是用于标识软件测试错误
的原因的候选。在一些实施例中,软件测试错误触发脚本运行,该脚本收集本文中和/或上
面讨论的一个或多个数据项,例如,文本、值、类型、元素、方位、CSS、选择器、父代、子代、兄弟、杂项属性,以及元素属性的其他值;稳定性值、改变程度(平均值和/或标准偏差)、
Levenshtein距离(平均值和/或标准偏差)、总得分、和/或关于测试步骤距离、相同页面初始化布尔、动作类型、元素类型、失败类型和/或浏览器类型的上述附加输入。在一些实施例中,测试被校正(修复)。在一些实施例中,在校正了测试之后,运行脚本,该脚本输出数据点和标签,该数据点和标签指示了哪个步骤被修复以及其需要被修复的原因。在一些实施例
中,改变集由软件测试者产生。在一些实施例中,测试由客户来修复,产生示出了哪个步骤
被修复的数据点。
[0099] 在一些实施例中,导致并且包括失败步骤的每个动作是数据点。在一些实施例中,针对每个动作收集的数据点包括:指示该步骤是否被标识为根本原因的标签(例如,是(Y)或否(N))。在一些实施例中,步骤的数据点包括指示修复原因的标签,对于未被标识为根本原因的步骤,该标签将是“N/A”。在一些实施例中,数据用于训练模型以预测每个动作是根本原因并且是需要修复的最可能原因的可能性。在一些实施例中,函数提供该测试内的每
个动作是根本原因的概率,例如,以提供对可能性的有意义的估计。
[0100] 在一些实施例中,步骤被标识为根本原因,步骤被修复,并且后续步骤导致测试失败。因此,在一些实施例中,该技术将修复指示为成功,并且照常创建数据点。在一些实施例中,软件包括在这样的情况下控制数据点的创建的逻辑。在一些实施例中,(例如,迭代地)重复该过程直到测试通过。在一些实施例中,数据点和/或标签的创建是自动化的。例如,在一些实施例中,每次成功地修复步骤,就创建数据点。在一些实施例中,例如,在成功测试完成时,将改变集和编辑历史记录存储在API中。在一些实施例中,数据被存储在数据库、文本文件、CSV文件等中。在一些实施例中,数据以可缩放的列格式(例如,云数据存储)来存储。
在一些实施例中,使用计算机视觉和/或源代码(例如,HTML)的自然语言处理来获得数据。
[0101] 在一些实施例中,通过众包过程来产生模型(例如,用于将候选测试步骤和/或元素是根本原因的概率分配给候选测试步骤和/或元素的模型)的训练数据。因此,在一些实
施例中,使用大众共识而不是单一意见来确定概率。在一些实施例中,使用用户反馈来标识
针对所建议的失败的修复,并且将失败类型和原因以及失败修复(及其成功或失败)输入到
模型中以供进一步训练。
[0102] 属性分布在一些实施例中,该技术作为页面上的方位(例如,UI中的方位)的函数来评估元
素属性的改变。在一些实施例中,该技术作为时间的函数(例如,作为UI版本的函数)来评估元素属性的改变。
[0103] 在一些实施例中,该技术作为页面上的方位(例如,UI中的方位)的函数和/或作为时间的函数(例如,作为UI版本的函数)来确定和/或评估属性改变的概率。参见例如示例4。
[0104] 在一些实施例中,该技术评估个体元素(例如,个体元素的个体属性、个体元素的多个属性)。在一些实施例中,该技术跨UI(例如,作为页面上的位置的函数)和/或作为时间的函数(例如,作为UI版本的函数)来评估元素和/或元素属性。在一些实施例中,产生并且评估UI的一个或多个页面和/或版本的元素属性的频率。在一些实施例中,在UI的一个页面
和/或版本中的元素与UI的第二页面和/或版本之间计算和/或产生概率关联,例如,以标识
其属性从第一页面和/或UI变为第二页面和/或UI的元素。
[0105] 在一些实施例中,该技术确定(例如,页面上(例如,UI上)的)多个元素和/或元素属性的元素和/或元素属性的统计分布。在一些实施例中,该技术作为页面上的位置的函数(例如,作为UI上的位置的函数)和/或作为时间的函数(例如,作为UI版本的函数)来确定多个元素和/或元素属性的元素和/或元素属性的统计分布。在一些实施例中,该技术确定元
素和/或元素属性在页面上(例如,作为UI上的位置的函数)和/或通过时间(例如,作为UI版本的函数)的特定分布的概率。
[0106] 自动化视觉测试在一些实施例中,视觉测试是自动化的。在一些实施例中,测试包括使用神经网络
和/或决策树模型(例如,卷积神经网络)。在一些实施例中,该技术包括确定网页是否已经被正确地呈现。因此,本文中提供的技术的实施例通过评估网页呈现的视觉语义来评估网
页呈现,例如,区分静态元素与动态元素;标识页面元素(例如,链接、按钮、弹出窗口等);检测安置于标记中的图像;等等。在一些实施例中,该技术针对一系列设计、设计组件(例如,字体)、低级浏览器和/或版本呈现变化、由响应性设计驱动的动态布局改变、以及任意页面复杂性提供了测试技术。该技术提供了自动化测试,该自动化测试可测试包括几十个、几百
个或几千个或更多个页面(可选地,以多种语言)的频繁发布(例如,提供网站和/或web应用的新版本)。
[0107] 在一些实施例中,该技术在帮助开发者和QA/测试工程师在准备测试用例时避免编码方面找到了用途,例如,该技术提供了自动化测试。因此,在一些实施例中,该技术记录由用户提供的测试用例,并且该技术捕获页面呈现的可审查的“幻灯片”(例如,不需要手动或自动化获取屏幕捕获)。通过决策树来分析该呈现,该决策树将页面分割成区域,然后调
用一系列视觉处理工具来发现、询问和分类页面元素(例如,区分文本与控件和图形;标识
静态比对动态对象;自动确定页面的哪些部分对于测试是最重要的;等等)。如本文中所描
述的,该技术的实施例包括使用在字体、按钮和控件以及其他视觉元素的样本库上训练的
卷积神经网络,以及用于源图像处理、光学字符识别和其他基本功能的鲁棒的标准化解决
方案。一旦测试用例被记录和验证,它就跨多个浏览器和所支持的仿真设备执行。在一些实
施例中,该技术组合了人工智能视觉元素分类、web代码和实时DOM分析。因此,在一些实施
例中,该技术提供了一种鲁棒的技术,以通过一系列视口配置来提供例如跨在多个设备上
运行的响应性设计的非常大的网站的可靠视觉测试,所有这些视口配置来自于少量所记录
的测试用例。在一些实施例中,当做出改变时,测试是自更新的,例如,通过将深度DOM分析与复杂的视觉处理相组合,该技术确定什么已经改变、以及由该改变或与用户相关的其他
改变所引起的功能上的任何改变。在一些实施例中,该技术使用实际用户站点交互的记录
来完善和集中其视觉分析,响应于用户在站点上实际正在做什么来约束该资源密集型过
程。
[0108] 在一些实施例中,该技术包括数据库,例如,训练集。在一些实施例中,该技术包括神经网络和用于神经网络的训练集。
[0109] 规则引擎在一些实施例中,该技术包括使用规则引擎。在一些实施例中,规则引擎接受输入
标准,确定输入标准是否匹配规则引擎的规则,并且实行匹配输入标准的规则的动作。因
此,在一些实施例中,规则引擎提供了用于分析和评估来自失败测试的数据的结构化方式,
并且提供了针对如何修复测试的建议。在一些实施例中,规则引擎的规则以规则语法语言
来编码(例如,作为“if‑then”或“if‑then‑else”逻辑)。因此,在一些实施例中,规则引擎包括规则和建议。
[0110] 在一些实施例中,规则引擎包括被评估的规则(例如,作为决策树)以及建议(例如,由规则按名称引用的建议)。在一些实施例中,个体规则还可以包括建议、var或其他规则。如本文中所使用的,“var”指代定义了对应于语言表述的新标识符的键/值对(pair)的列表。在一些实施例中,规则本身包括var部分。在一些实施例中,当规则的“when”条件被满足时(布尔真),该规则被触发。如果规则被触发,则评估并返回其建议,或者评估其子代。如果规则没有被触发(例如,因为其“when”条件不被满足),则评估其子代。规则可以根据需要而深度嵌套。参见表1。
[0111] 表1‑规则  字段 描述
1 when 要触发该规则必须满足的条件。
2 规则(rules) 仅当when为真时被评估的子代规则。
3 建议(suggestion) 要作为语言结果提供的建议。
[0112] 在一些实施例中,规则引擎包括一个或多个建议。在一些实施例中,建议包括描述了其自身的元数据(例如,名称和描述)以及包括键/值对的任意映射的改变字段,该键/值
对的任意映射指示测试输入上的哪些字段应当被更新以修复该测试。参见例如表2。
[0113] 表2‑建议  字段 描述 值
1 名称(name) 建议的名称。当在根本建议列表中使用时,这是用于从返回它的个唯一字符串。
体规则来引用它的名称。该字段对于内联建议来说是可选的。
2 描述(description) 关于该建议意味着什么或者做了什么的可选简单英语描述。 简单英语。
3 改变(changes) 这应当包含可以在测试上被改变以便修复该测试的JSON属性的映 任意键/值对的映射。
射。该映射中的值被评估为以规则语言的表述。
[0114] 软件失败的自主标识在一些实施例中,本文中提供的技术涉及例如使用人工智能来标识软件应用(例
如,web应用)中的失败。例如,一些基于web的技术包括使用链接爬虫(crawler),该链接爬虫通常通过在web应用环境的基本URL处加载网页来开始其爬行。在收集关于该基本页面的
信息(例如,包括屏幕截图、加载时间、错误信息等)之后,该爬虫将通过与该页面上的一个或多个元素交互来采取进一步的动作,例如,点击该页面上的第一个超链接并且检查结果。
如果超链接在所提供的基本URL的域内,则该爬虫将访问该页面,并且以其收集关于基本页
面的信息(例如,包括屏幕截图、加载时间、错误信息等)相同的方式来收集关于该链接页面的信息。以相同的方式来访问在基本页面和随后访问的页面上标识的进一步的链接。该技
术不限制针对每个页面收集的信息,并且包括例如本文中所描述的任何web应用、屏幕截
图、元数据、元素、元素属性和/或图形模型数据。
[0115] 在一些实施例中,该技术涉及如下爬虫:该爬虫将web应用UI(例如,web应用UI的屏幕截图)的计算机视觉分析与自然语言处理相组合以找到失败(例如,不正确的图标、断
开的应用编程接口、视觉异常、拼写错误、断开的链接、以及本领域已知的其他web应用错
误)。在一些实施例中,该技术以与大型分布式数据库相关联的大规模并行计算系统上运行
的计算机软件来实现。在一些实施例中,该技术使用云技术来实现。在一些实施例中,该爬
虫在单个本地机器上、或在云环境中的一个或多个虚拟机上产生和执行。
[0116] 在一些实施例中,该技术涉及软件应用中的失败的自主标识和/或检测。在一些实施例中,该技术包括:使用计算机视觉、自然语言处理和并行web爬虫的组合。特别地,一些实施例提供使用计算机视觉分析来标识UI中的例如如本文中所描述的界面元素,以及使用
文本和语言处理来标识动作(例如,以软件代码编码的动作)并且将该动作与界面元素相关
联。在一些实施例中,该技术包括:检测元素、可选地定位元素、以及使用描述了web应用中的元素(例如,元素属性(例如,位置、大小、状态))和元素的函数(例如,如与该元素相关联的软件代码所提供)的数据的组合来对元素分类。在一些实施例中,对元素分类将动作和/
或函数分配给检测到的元素。在一些实施例中,自然语言处理根据与元素的关联来确定动
作和/或函数的含义。在一些实施例中,通过文档对象模型(DOM)来获得web应用的文本内
容,并且通过使用人工神经网络来提供对web应用的分析。在一些实施例中,动作和/或函数
与计算机视觉所检测到的元素的关联由元素的几何属性来确定,例如,在呈现中的方位、相
对于其他元素(例如,父代元素和/或兄弟元素和/或处于相同级别的元素)的相对方位。在
一些实施例中,该技术包括使用神经网络,该神经网络使用元素几何属性、文本和图像来标
识软件错误和/或其他异常。
[0117] 软件失败的自主修补在一些实施例中,该技术涉及例如使用人工智能对软件失败和/或软件测试用例
的自主修补(例如,校正、修复等)。例如,如本文中所描述的,在某些情况下,(例如,由软件测试所标识的)软件失败的根本原因可以用多种解决方案来解决。例如,在其中无法立即找
到正确解决方案的情况下,该技术提供了自我疗愈特征,该自我疗愈特征可利用每一个可
用的建议解决方案来自动重新运行软件测试。然而,在自动化测试中对测试失败进行调试
往往需要为该测试编写脚本或记录该测试,运行该测试直到其失败,尝试标识该失败,更新
测试脚本并且再次运行它。往往在测试工作之前重复地重复该过程。应用中的后续改变可
能会导致测试中断,并且整个过程需要重复。
[0118] 因此,该技术的实施例提供了软件失败的自主修补,例如,作为被实现为在使用大型分布式数据库的大规模并行计算系统上运行的一组计算机程序的技术。在一些实施例
中,该技术在被测试的web应用中检测失败的存在或不存在时找到了用途。首先,实施例包
括:标识、提供和/或检索失败软件测试用例中的候选失败步骤的列表,例如,如在所建议的测试步骤、测试动作和/或元素的列表中所提供的,该测试步骤、测试动作和/或元素按照作
为如本文中所描述的web应用UI的软件测试失败的根本原因的可能性而排名。接下来,每一
个候选失败步骤被用作用于训练马尔可夫决策过程(MDP)模型的输入(参见例如,Bersekas(2011)的“Dynamic Programming and Optimal Control”(第3版,第二卷,MIT出版社,剑桥,Mass),其通过引用并入本文中),以针对每个候选失败步骤标识可能产生成功的软件测试的可能改变。MDP通过使用从MDP确定的多个不同配置来重新配置每个候选失败步骤,为
每个候选失败步骤产生多个试验步骤。不同配置中的每一个提供了试验步骤,该试验步骤
是候选失败步骤的可能替换,当试验步骤替换了候选失败步骤时,该可能替换可能会得到
成功的测试。接下来,并行执行所有试验步骤(例如,候选失败步骤的所提议的修复)或用试验步骤来替换候选失败步骤的测试脚本,以测试web应用UI。在一些实施例中,该过程是迭
代的,并且一旦软件测试用例成功通过,该过程就完成。最后,该技术标识失败的与成功的
软件测试用例之间的差异(例如,失败测试步骤与成功地重新配置的测试步骤之间的差
异),以提供针对软件测试用例检测到的失败测试的可接受解决方案。参见例如图2。
[0119] 硬件在一些实施例中,本文中提供的技术由一个或多个专用计算设备来实现。在一些
实施例中,专用计算设备被硬连线以实行该技术的实施例,并且在一些实施例中,硬件包括
数字电子设备,诸如被持久地编程以实行本技术的实施例的一个或多个专用集成电路
(ASIC)或现场可编程门阵列(FPGA)。在一些实施例中,硬件包括:一个或多个通用硬件处理器,其被编程为基于固件、存储器、其他存储装置或其组合中的程序指令来实行该技术的实
施例。在一些实施例中,专用计算设备包括定制硬连线逻辑、ASIC和/或FPGA,并且使用定制编程来实现该技术的实施例。在一些实施例中,专用计算设备是例如台式计算机系统、便携
式计算机系统、手持设备、联网设备、或结合了硬连线和/或程序逻辑来实现这些技术的任
何其他设备。
[0120] 在一些实施例中,该技术包括使用计算机系统。在一些实施例中,计算机系统包括被配置成传送信息的总线或其他组件,以及与总线耦合用于处理信息的硬件处理器。在一
些实施例中,硬件处理器是通用微处理器。在一些实施例中,计算机系统包括耦合到总线的
主存储器,诸如随机存取存储器(RAM)或其他动态存储设备,用于存储信息以及要由处理器执行的指令。在一些实施例中,主存储器用于在执行要由处理器执行的指令期间存储临时
变量或其他中间信息。在一些实施例中,指令(例如,存储在处理器可访问的非暂时性存储
介质中)被提供给计算机系统以提供专用机器,该专用机器被定制成实行指令中指定的操
作。在一些实施例中,计算机系统包括耦合到总线的只读存储器或其他静态存储设备,用于
为处理器存储静态信息和指令。在一些实施例中,诸如磁盘、光盘或固态驱动器之类的存储
设备被提供并且耦合到总线,以用于存储信息和指令。在一些实施例中,计算机系统通过总
线耦合到显示器,诸如阴极射线管(CRT)、液晶显示器(LCD)或本领域已知的其他显示技术,以用于向计算机用户显示信息。在一些实施例中,输入设备(例如,包括字母数字键和其他
键)耦合到总线,以用于向处理器传送信息和命令选择。在一些实施例中,找到光标控制用
途的其他类型的用户输入设备包括例如鼠标、轨迹球或光标方向键,以用于向处理器传送
方向信息和命令选择、以及用于控制显示器上的光标移动。输入设备通常在两个轴线上具
有两个自由度,这两个轴线为第一轴线(例如,x)和第二轴线(例如,y),这允许该设备指定平面中的方位。
[0121] 在一些实施例中,计算机系统使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文中所描述的技术的实施例,这些逻辑与计算机系统相结合地
使计算机系统成为专用机器或者将计算机系统编程为专用机器。在一些实施例中,本文中
所描述的方法由计算机系统响应于处理器执行包含在主存储器中的一个或多个指令的一
个或多个序列来实行。在一些实施例中,指令从诸如存储设备之类的另一个存储介质被读
取到主存储器中。在一些实施例中,包含在主存储器中的指令序列的执行使得处理器实行
本文中所描述的过程步骤。在一些实施例中,使用硬连线电路来代替软件指令或与软件指
令相结合。
[0122] 如本文中所使用的,术语“存储介质”指代存储使机器以特定方式操作的数据和/或指令的任何非暂时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非
易失性介质包括例如存储设备(例如,光盘、磁盘或固态驱动器)。易失性介质包括动态存储器,诸如主存储器。存储介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带、或任何其他磁性数据存储介质、CD‑ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH‑EPROM、NVRAM、或任何其他存储器芯片或盒式磁带。存储介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与存储介质之间的信息传
输。例如,传输介质包括同轴线缆、铜线和光纤,包括含有总线的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波(例如,IEEE 802.11)和红外数据通信过程中生成的那些。传输介质还包括互联网、WAN和LAN。
[0123] 在一些实施例中,各种形式的介质将一个或多个指令的一个或多个序列携带到处理器以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机
可以将指令加载到其动态存储器中,并且通过传输介质发送指令。本地计算机系统可以在
传输介质上接收数据,并且适当的电路可以将数据放在总线上。总线将数据携带到主存储
器,处理器从主存储器中检索并且执行指令。由主存储器接收到的指令可以可选地在由处
理器执行之前或之后存储在存储设备上。在一些实施例中,计算机系统包括耦合到总线的
通信接口。在一些实施例中,通信接口提供耦合到连接到本地网络的网络链路的双向数据
通信。例如,通信接口可以是综合业务数字网络(ISDN)卡、线缆调制解调器、卫星调制解调器、以太网卡、无线电台或调制解调器,以提供与对应类型的电话线的数据通信连接。作为
另一个示例,通信接口可以是局域网(LAN)卡,以提供与兼容LAN的数据通信连接。还可以实现无线链路。在任何这样的实现方式中,通信接口发送和接收携带表示各种类型信息的数
字数据流的电、电磁或光学信号。
[0124] 在一些实施例中,网络链路通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以提供通过本地网络的、与主机或与由互联网服务提供商(ISP)运营的数据设备的连接。ISP进而提供通过现在通常被称为“互联网”的全球分组数据通信网络的数
据通信服务。本地网络和互联网两者都使用携带数字数据流的电信号、电磁信号或光学信
号。通过各种网络的信号以及网络链路上和通过通信接口的信号是传输介质的示例形式,
这些信号将数字数据携带到计算机系统和从计算机系统携带数字数据。
[0125] 在一些实施例中,计算机系统通过(一个或多个)网络、网络链路和通信接口来发送消息和接收数据,该数据包括程序代码。例如,服务器可以通过互联网、ISP、本地网络和通信接口来传输应用程序所需的代码。在一些实施例中,接收到的代码在它被接收和/或存
储在存储设备或其他非易失性存储装置中以供稍后执行时由处理器来执行。
[0126] 在一些实施例中,使用仿真和/或云计算,作为虚拟组件来提供这些硬件组件中的任一个。因此,如本文中所使用的,本文中所描述的术语“硬件”和硬件组件还指代本地或远程物理硬件、或通过在云环境中的一个或多个虚拟机上进行仿真所提供的硬件和/或硬件
组件。
[0127] 方法在一些实施例中,该技术涉及用于标识web应用的失败软件测试的根本原因(例
如,步骤、动作、元素)的方法(参见例如图3)。在一些实施例中,方法包括:提供web应用(例如,包括一个或多个元素)。在一些实施例中,方法包括:提供模仿与web应用的一个或多个用户交互的一系列测试动作(例如,与web应用的元素交互的用户的动作)。在一些实施例
中,脚本提供一系列测试动作作为一系列步骤。在一些实施例中,方法包括:提供web应用和包括一系列步骤的脚本,该一系列步骤当在web应用(例如,训练集)上实行这些步骤时得到web应用的成功测试。在一些实施例中,方法包括:提供得到web应用的成功测试的多个(例
如,1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、30、40、50、60、70、80、90、
100或更多个)脚本。在一些实施例中,方法包括:确定web应用的软件测试已经失败。在一些实施例中,方法包括:标识测试在其失败的软件测试的步骤。在一些实施例中,方法包括:标识测试在其失败的软件测试的步骤的动作。在一些实施例中,方法包括:标识和/或检测失
败软件测试,并且使用机器学习以根据每个测试动作是失败测试的根本原因的可能性来对
测试动作进行排名。
[0128] 在一些实施例中,方法包括:使用机器学习(例如,使用来自训练集的数据)来关联动作将在web应用的测试中产生错误的可能性(例如,动作将是失败测试的根本原因的可能性)。在一些实施例中,机器学习包括使用神经网络。在一些实施例中,机器学习包括使用元素属性作为输入。在一些实施例中,机器学习包括使用元素属性中的改变作为输入。在一些
实施例中,使用计算机视觉和/或对web应用的软件代码(例如,源代码和/或目标代码)的分析来确定元素属性中的改变。在一些实施例中,方法包括:根据可能的根本原因(例如,步
骤、动作、元素)将导致软件测试失败的可能性来对软件测试的可能根本原因进行排名。在
一些实施例中,机器学习用于根据可能的根本原因(例如,步骤、动作、元素)将导致软件测试失败的可能性来对软件测试的可能根本原因进行排名。在一些实施例中,方法包括:产生
按照产生web应用的失败测试的可能性来排名的可能根本原因(例如,步骤、动作、元素)的排名列表。
[0129] 在一些实施例中,方法包括:提供规则引擎,该规则引擎包括规则(例如,包括当条件(例如,数据、步骤、动作)满足时触发建议的标准(例如,规则的“when”部分)的规则)。在一些实施例中,可能根本原因的排名列表被提供给规则引擎。在一些实施例中,规则引擎的规则由可能根本原因来触发,并且规则引擎产生用于校正失败软件测试的根本原因的建
议。
[0130] 在一些实施例中,方法包括:提供机器学习建议服务。在一些实施例中,机器学习建议服务包括:用于基于使用机器学习和一个或多个训练集来标识失败软件测试的可能根
本原因并且建议对所标识的根本原因的校正来校正失败软件测试的根本原因的建议。
[0131] 在一些实施例中,由规则引擎产生的建议以及由机器学习建议服务产生的建议被组合到建议池中。在一些实施例中,对建议池进行排序和/或去重复(deduplicate)。在一些实施例中,方法例如向用户、向被配置成提供软件失败的自动化修补的组件等输出经排序
和/或经去重复的建议池。
[0132] 在一些实施例中,方法包括:产生web应用的元素的图形模型。在一些实施例中,方法包括:针对web应用的多个版本产生多个图形模型。在一些实施例中,方法包括:标识web
应用(例如,web应用UI)的两个版本之间的一个或多个图形元素的差异,和/或对应于web应用(例如,web应用UI)的一个或多个版本的一个或多个图形模型的差异。
[0133] 在一些实施例中,方法包括:提供web应用和脚本以测试web应用(例如,测试用例)。在一些实施例中,运行脚本来测试web应用。在一些实施例中,对web应用做出改变(例如,改变web应用的一个或多个元素的一个或多个属性的值),并且运行脚本来测试web应
用。在一些实施例中,提供包括不同步骤(例如,包括不同动作)的脚本来测试web应用上的多个版本。在一些实施例中,方法包括:(例如,从描述web应用的多个版本并且可选地描述第一图形模型相对于第二图形模型的改变的多个图形模型)产生概率图形模型(PGM)。在一些实施例中,使用计算机视觉、机器学习、神经网络和/或对web应用源代码和/或目标代码
的分析来产生PGM。在一些实施例中,方法包括:评估PGM以标识很可能是软件测试失败的根
本原因的动作。在一些实施例中,方法包括:评估PGM以根据每个动作是软件测试失败的根
本原因的可能性来对脚本的动作进行排名。在一些实施例中,方法包括:产生脚本的动作列
表,这些动作按照每个动作是软件测试失败的根本原因的可能性而排序。在一些实施例中,
按照每个动作是软件测试失败的根本原因的可能性而排序的脚本的动作列表被提供给规
则引擎以便由一个或多个规则来测试。在一些实施例中,规则引擎提供用于校正失败测试
的根本原因的建议。参见例如图1。
[0134] 系统一些实施例涉及用于标识web应用的失败软件测试的根本原因(例如,步骤、动作、
元素)的系统(参见例如图3)。在一些实施例中,系统包括脚本(例如,包括测试动作)。在一些实施例中,系统包括:用于在web应用(例如,web应用的UI)上执行脚本并实行测试动作的组件。在一些实施例中,系统包括训练集。在一些实施例中,系统包括多个脚本、多个版本的web应用和/或多个训练集。在一些实施例中,训练集包括web应用、测试脚本、以及在web应
用上运行的测试脚本的测试结果。在一些实施例中,系统包括:用于根据每个测试动作是测
试失败的根本原因的可能性来对测试动作进行排名的组件。在一些实施例中,用于根据每
个测试动作是测试失败的根本原因的可能性来对测试动作进行排名的组件是机器学习组
件。在一些实施例中,该机器学习组件包括神经网络。在一些实施例中,系统包括web应用UI的图形模型。在一些实施例中,系统包括:web应用UI的不同版本的多个图形模型。在一些实施例中,使用机器学习来评估一个或多个图形模型,以提供每个测试动作是测试失败的根
本原因的可能性。在一些实施例中,用于根据每个测试动作是测试失败的根本原因的可能
性来对测试动作进行排名的机器学习组件产生根据每个测试动作是测试失败的根本原因
的可能性而排名的测试动作的列表。在一些实施例中,系统包括:被配置成提供机器学习建
议服务的组件。在一些实施例中,系统包括规则引擎。在一些实施例中,系统包括建议管理
器。在一些实施例中,系统包括由建议管理器产生的经合并和过滤的建议。
[0135] 尽管本文中的公开涉及某些经说明的实施例,但是要理解的是,这些实施例是以示例的方式而不是以限制的方式呈现的。
[0136] 示例示例1–文本框检测
在开发本文中提供的技术的实施例期间,进行实验以测试用于文本框检测(例如,
检测web应用UI上的文本框)的方法和系统。如图5所示,web应用被提供给模板验证系统的
文本框检测组件。文本框检测组件机器学习和/或深度学习(例如,神经网络)分析输入web
应用(例如,web应用的UI)。文本框检测组件产生包括UI上的文本框的位置和尺寸的输出。
[0137] 示例2–元素检测在开发本文中提供的技术的实施例期间,进行实验以测试用于元素检测(例如,检
测web应用UI上的元素)的方法和系统。如图7所示,web应用被提供给模板验证系统的文本
框检测组件。文本框检测组件机器学习和/或深度学习(例如,神经网络)分析输入web应用
(例如,web应用的UI)。文本框检测组件产生包括UI上的文本框的位置和尺寸的输出,并且将输出提供给元素检测组件。元素检测组件通过将每个文本框定义为向量u = (x, y, w, 
h)来对非文本框对象进行分组检测以及对文本框进行分组,其中x和y表示文档屏幕截图或
视口中的像素方位,并且w和h表示框的宽度和高度,从而确定文本框之间的距离,并且实行
基于密度的聚类以将文本框分组到文本框集群中。例如,文本框检测组件标识了包括文本
“amazon”的第一文本框,并且标识了包括文本“prime”的第二文本框。元素检测组件实行距离计算和聚类,以产生包括“amazon”文本框和“prime”文本框两者的文本框集群。参见例如图7。以同样的方式,其他文本框被分组并且由元素检测组件输出。
[0138] 示例3–对象检测在开发本文中提供的技术的实施例期间,进行实验以测试用于对象检测(例如,检
测web应用UI上的非文本对象)的方法和系统。如图8所示,web应用UI被提供给模板验证系
统的对象检测组件。对象检测组件机器学习和/或深度学习(例如,神经网络)已经使用一组训练图标(例如,购物车图标、箭头图标、打开文件图标、保存文件图标、登录图标、选中图标、项目符号图标和关闭图标)进行训练。对象检测组件产生包括UI上的对象的位置和尺寸
的输出。参见图8。对象检测组件标识UI上的对象的位置和/或尺寸。
[0139] 示例4–选择逻辑在开发本文中所描述的技术的实施例期间,进行实验以测试评估元素和/或元素
属性的分布、以及确定元素和/或元素属性跨页面和/或通过时间的分布的概率的系统和方
法。针对2019年6月25日(版本1)和2019年7月20日(版本2)的页面记录了元素中使用的背景颜色频率。参见图9A。在图9A中,在右列中提供了颜色(左列)的频率。属性分布(例如,颜色的频率)用于产生版本之间的元素之间的概率关联(例如,参见图9A上将元素与%相关联的
箭头)。本文中所描述的技术标识了版本1上具有颜色219、219、219的元素,而版本2上不存在该颜色。该技术标识了在版本2上具有颜色254、249、219的关联元素。如图9A所示,概率关联为90%。因此,该技术计算了具有颜色219、219、219的版本1的元素变为具有颜色254、249、
219的元素(例如,该元素的颜色属性从版本1变到版本2)的概率(例如,高概率)。在对页面版本的随后分析中,软件部分地通过使用该元素的新颜色254、249、219来标识该元素。该技术警告了用户该改变。针对所有元素和所有元素的所有属性而重复该分析。在一些实施例
中,该技术包括:例如使用张量来实行对更高尺寸中的元素和/或元素属性的标识和评估。
在类似的实验中,标识了具有从15像素变为5像素的高度属性的元素。参见图9B。图9B在列1
中示出了具有某些颜色的元素,并且在列2‑7中示出了这些元素的0、1、5、10、13和15像素的高度分布。属性分布(例如,高度的频率)用于在版本之间的元素之间产生概率关联。概率关联用于标识具有改变的高度的元素。
[0140] 此外,在附加实验中,该技术确定了两个不同页面上的元素的宽度分布。参见图9C。在一些实施例中,确定UI的第一版本或第一页面的第一宽度分布,并且确定所述UI的第
二版本或第二页面的第二宽度分布。属性分布(例如,宽度的频率)用于在两个页面之间的
元素之间产生概率关联。该技术不限于确定宽度分布或任何特定的元素属性。因此,该技术
包括:确定UI的版本或页面的元素属性的分布。在一些实施例中,该技术包括:确定UI的第
一版本或第一页面的元素属性的第一分布,确定所述UI的第二版本或第二页面的所述元素
属性的第二分布,以及在UI的第一版本或第一页面的元素与UI的第二版本或第二页面的元
素之间分配概率关联。上面的实验描述了颜色、宽度和高度分布的使用;然而,该技术包括
产生和评估任何元素属性的分布,以将一个页面或UI版本上的元素与第二页面或UI版本相
关联。
[0141] 上述说明书中提及的所有出版物和专利出于任何目的全部通过引用并入本文中。在不脱离所述技术的范围和精神的情况下,所描述的组合物、方法和技术使用的各种修改
和变化对于本领域技术人员是显而易见的。虽然已经结合特定的示例性实施例描述了该技
术,但是应当理解,所要求保护的本发明不应当不适当地限于这种特定的实施例。实际上,
对于本领域技术人员来说显而易见的用于实现本发明的所述模式的各种修改旨在处于所
附权利要求的范围内。

当前第1页 第1页 第2页 第3页
塔马斯·塞尔发明人的其他相关专利技术