基于用户界面Web自动化的对象识别_第1页
基于用户界面Web自动化的对象识别_第2页
基于用户界面Web自动化的对象识别_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于用户界面Web自动化的对象识别摘要:健壮的用户界面对象识别技术是用户界面自动化测试达成的一项关键技术和过程。随着Web应用程序变得越来越复杂,新兴的Web2.0技术更是使得传统的对象识别方法捉襟见肘。在这些新兴Web应用程序上开发和调试Web自动化脚本变得前所未有的困难和难以实现,一些看上去十分简单的脚本开发任务也需要更多的开发时间和相当有经验的开发人员才能完成,而对于相对高级的参数自动化测试脚本则几乎变成不可能实现的任务。本文提出一系列的新技术和算法,尤其针对基于Web2.0开发的复杂、多样化和快速变化的应用程序提供了一种新的对象识别方法,在当前应用背景以及不远的将来都会具有使用价值。关

2、键词:自动化测试;对象识别;Ajax;Web2.0 1.应用背景传统的Web用户界面自动化脚本开发需要两个主要步骤:(1) 录制,Web脚本自动化工具记录用户在Web界面上的动作,如点击按钮、选择菜单或者输入数据等,自动化工具将用户动作解释成该工具可以识别的自动化脚本; (2) 回放,回放的过程将会执行解释出来的自动化教本。在脚本录制阶段,相应的数据和用户界面对象会如实记录下来,在脚本回放阶段界面对象会被识别并赋予相应的数据。通常Web脚本自动化工具记录下来的数据包括Web对象以及相应的属性值。例如, 标签的一系列属性包括type和name,以及作为Web页面元素本身拥有的id和class。如

3、果有一系列的对象共享属性值,那这些对象组最原始的一个对象也会存储下来。新技术下的自动化脚本也会保存对象在DOM树下的路径,通常表现为XPath表达式。目前流行的Ajax技术在展现这些传统的对象属性并不是十分有效率,主要表现在:(1) 最新的Web应用程序往往不是由简单的Web元素标签来组成,它们大量采用了Web组件,如滑行控件(Slider)、时间控件(DatePicker)、富文本编辑控件等。这些控件由多个DOM元素构成,通常由底层Web标签Div来分层。表现层和行为层的实现由JavaScript和CSS技术来完成。这种情况下并没有多少基于传统的Web元素属性可以识别。(2) 单一页面存在成

4、百上千界面元素的情况十分常见,而大多元素仅仅是为了表示界面组件的相对位置而设定,它们之间并没有可以彼此区分的属性。传统的识别方法是在该元素前加个识别编号,如1284号Div标签,但这种表示方法既不可靠也不健壮。(3) 当今Web应用程序从程序和实现上来看都是十分动态的。从程序的角度来看,Web页面的内容由服务器端状态、脚本参数化、数据库查询结果动态生成,这会影响Web元素在DOM树上的路径和位置;从实现的角度来看,传统识别技术所依赖的对象属性往往随着的脚本执行每次都会发生变化。这些问题不仅仅影响诸如脚本重放这类简单的对象识别任务,更重要的是它们使得一些高级技术无法应用到复杂的测试脚本执行任务中

5、去:(1) 测试脚本的参数化实现,用来模拟不用的用户和运行场景。语义上它们可以随着参数化输入数据的变化关联到测试脚本需要捕捉的对象。(2) 业务过程需要验证正常流程和错误流程,这意味着错误的对象也必须职别。错误对象的生成和属性往往需要动态地识别,这也是传统对象识别的短处。2.解决方案近年来新兴出现的是一种叫候选者的基于统计和模式匹配的对象识别方法。这种方法不依赖于预先设定好的对象类型和属性,它使用多个候选者对象,每个候选者代表和处理某一个用户界面对象,这些候选者计算和存储一个或者一组某个用户界面对象的位置信息,如对象类型、文字、维度、位置等。当需要进行对象识别时,候选者可以被唤醒并进行自我识别

6、来确定自己是不是就是被识别的对象,并产生和保存相似度分数。相关的候选者和它们的相似度数值都被保存到脚本里相应的测试步骤中。在脚本回放过程中,候选者对象从可能匹配的候选者中选取最相似的对象,所以总是最匹配的对象被识别到测试执行脚本中去。如果简单地将该技术应用到复杂Web应用测试场景中,相对于仅仅根据对象类型和属性进行的Web界面对象识别应用,并不能在诸如Ajax应用测试脚本中达到80以上的识别率。而需要结合以下几方面进行运用。2.1自适应多点采样用于对象识别的数据通常是在脚本录制阶段收集。然而,界面对象的静态属性和运行时属性往往存在差异,因而仅仅对某一时刻的数据采集是不准确的。为了解决这个问题,

7、需要对界面对象进行动态采样和调整存储信息,这些信息可以包括:(1) 用户在该对象上的动作(例如点击)或者相关联的界面对象(如单选框及其显示的文字)(2) 该对象的属性变化(3) 用以候选者匹配允许出现的属性差异(4) 用户在运行时对对象进行的属性修改每一次采样都会与上次的数据进行分析并保存起来。细小的差异在高度变化的属性数值影响下会被忽略。这种方法有效地解决了脚本参数化和用户差异带来的对象识别的不不确定性:当多个对象被匹配时,测试脚本开发者可以选择一个正确的对象。系统则生成该对象的另一个采样并使用新数据来解决该对象的识别问题。通过重放阶段的多重采样,测试脚本的性能和健壮性都得到显著提高。这在一

8、些特定的测试应用场景下尤其有用,例如性能测试或者可用性检测。2.2上下文对象DOM对象没有足够的可以区分用户对象的特征属性。既然DOM是一个树结构,重放阶段的对象搜索范围可以缩小到该DOM树上的某个父节点。父节点的选择需要考虑以下因素:1. 元素的上下文因子,该因子表述了节点与其子节点层次关系的强度。一系列的历史数据,包括静态的节点边界和动态的事件捕获节点,都需要考虑在内。2. 元素的识别学习因子,该因子从候选者与使用元素相关的统计产生。由于该元素的加入,候选者为此增加一个搜索路径,从而提高脚本回放阶段对象识别的效率并提高性能。 如果一个元素确定具有好的搜索路径,识别信息将会产生和保存。在回放

9、阶段,测试脚本总是试图寻找这个上下文对象,从而得到原先录制时的界面对象以及子对象。上下文对象可以包含其它的上下文对象,从而可以进一步提高该方法的识别效率。2.3关联器UI对象中相互之间有关联的信息可以用关联器来管理和维护。用户根据关联器的关联信息手动指定,这样一来可以提高对象识别的准确度。被关联的对象需要被清晰地识别并维持对关联对象的连接。例如,Web输入框和与之关联的提交按钮。为了防止过多的假关联,关联器将自动生成和初始化对象的关联关系。关联器本质上是一系列具有人工智能的关联侦测器。对于某种特定的关联类型,关联器自动产生一系列的候选关联关系,这些关系是根据对象之间的上下文因子选择的。关联器和

10、上下文对象看起来有些相似,但它们是不同的:上下文对象的生成是在Ajax下对动态属性的变化的保存;而关联器是处理在用户界面上语义有关联的对象。2.4组识别每个识别过程都是由面向特定应用的一系列预定义系数来确定。这一系列的系数组分到不同的预配置项,这样可以用于不用的测试场景。例如,一个用来做界面验证的预配置项就不允许有灵活的模糊匹配,而必须是稳定和准确的配置项;一个空配置项可以用来处理高度动态的界面对象。当前激活的配置项可以自动选择,也可以由用户来指定,应用的测试场景决定了使用哪种UI对象中相互之间有关联的信息可以用关联器来管理和维护。用户根据关联器的关联信息手动指定,这样一来可以提高对象识别的准

11、确度。被关联的对象需要被清晰地识别并维持对关联对象的连接。例如,Web输入框和与之关联的提交按钮。为了防止过多的假关联,关联器将自动生成和初始化对象的关联关系。 3.总结和展望本文介绍的是一种加强的Web界面对象识别技术,它不仅仅是靠单一的对象属性来识别界面对象,而是综合对象属性、关联的对象属性、上下文、模式匹配和配置选项来识别界面对象。同时,它具有自动化识别和人工干预想结合的特点,可以应付当前基于如Ajax等界面元素属性动态变化的Web测试,具有高识别率和高测脚本通过率。在HP Quick Test Professional 11.0 上已经实现了这种技术。越来越多的Web测试工具将会使用这种来技术提高Web界面元素的识别率,在目前或者不久的将来会有广泛的应用。参考文献:【1】 D. Schwartz, A. Mathias, A. Kessner, 使用关联器健壮地识别动态应用程序中的对象, PDNO 200905100【2】

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论