QT的对象,测试对象。

今天学习的内容是关于QT对象,测试对象。

以下是对QT对象常用方法的简介。

QT对象模型

QT通过捕获和标识测试对象及其预期的属性和属性值,对动态更改的应用程序进行测试。在对象捕获阶段, QT对应用程序中(包括WEB应用以及Android APK)每个对象进行分析,并记录其特征,后续在脚本回放阶段再寻找这个对象,并执行对象的方法。这个过程和一个人学习知识,并使用知识的过程类似,用一个学习物种的过程作为例子,帮助大家了解QT的对象模型。

在以下叙述中,将向大家介绍与测试模型相关的概念,以及 QT产品如何使用它所收集的信息来测试应用程序。

1.   测试对象

QT在捕获对象过程中,就是一个学习的过程,就像一个不同人那样记住一个物种,记住一个物种的特征。

例如,假设一个人(张三)需要学习一种新的物种(例如一种鸟类,杜鹃鸟),张三在学习杜鹃鸟以前,会先将其归属到鸟类中,并记录这个新物种的特征,在后续再看到该物种前,能够准确,唯一的识别到该物种。

那么在看到杜鹃鸟以前,张三开始为学习做准备,考虑通过哪些特征来识别杜鹃鸟。记住杜鹃的体型大小,羽毛颜色,形态以及其声音特征有利于张三认识这种新认识的鸟类,张三将尝试记住这些特征,用一些描述性的属性来定义,如“杜鹃鸟体形大小和鸽子相仿,但较细长,上体暗灰色,腹部布满了横斑”等等。

记住特征以后,张三要尝试识别杜鹃鸟,张三在一张有多个鸟类的照片中,要准确的识别出杜鹃鸟出来,需要将先前学习到的杜鹃鸟特征与照片上鸟类的特征进行比对,同时为了区别一张照片中相同的杜鹃鸟,张三在识别的时候可能还需要引入其他参考的属性,例如鸟的位置信息,顺序等等,这样能够在一个具体的场景中,唯一确定一只杜鹃鸟。再次遇到该照片时,能够准确分辨不同的鸟类,同种鸟类也可通过附加的属性信息进行唯一性的判别。

QT采用了类似的方法,首先,QT定义了要捕获对象的种类,用“类”的概念进行描述,包括有有哪些属性和方法。在对象捕获过程中,QT就是一个学习的过程,将捕获的对象判断是否属于已经学习到的“类”别,并按照“类”进行实例化,赋予其相应的属性信息(例如名称,位置,尺寸等等),最重要的,为了在一个具体场景中能够准确的再次识别该对象,同时不会与该场景中其他相同的对象混淆,QT会采用自定义的Index属性来标识相同的对象,以便下次能唯一确定一个对象。

QT预定义了一系列的类,用来描述有相同属性的对象,例如,标准 Windows 对话框(Dialog)、Web 按钮 (WebButton) 或 Visual Basic 滚动条对象 (VbScrollBar)。对于Android对象,也有特定的分类方法,特殊的按钮(HOME键,返回键,音量按钮等)也被归结于新的类体系。QT定义完类后,还为每个类定义了相关的操作方法,例如鼠标点击,拖动,选择等等。

QT对于定义的测试对象类,会分配一个“强制属性”列表。就像张三要识别一只杜鹃鸟一样,他不会把所有属性都作为判断杜鹃鸟的标准,张三只会把有差异点的属性作为判断杜鹃鸟的标准,例如上面描述的“上体暗灰色,腹部布满了横斑”等,而其他一些通用的属性,会用来参考是否归属于类,但不做唯一性的判断标准。QT使用强制属性来标注一个对象,并且会在对象捕获过程中记录这些强制属性的值,当操作人员进行对象识别时,QT始终记住这些默认的属性值,然后操作界面(WEB页面,Windows窗体,Android UI界面等)上其余的对象、对话框或其他父对象,以检查该描述是否足以唯一标识该对象。如果不足以进行唯一标识,QT将向该描述中逐项添加INDEX属性,通过搜索到的序列进行标识,确保捕捉的对象成为唯一对象。

2   测试对象模型

测试对象模型是一大组对象类型或类,QT用这些对象类型或类来表示应用程序中的对象。每个测试对象类都有一个可以唯一标识属于该类的对象的属性列表,以及一组 QT可以对其进行操作的方法。

测试对象是QT在测试或组件中创建的用于表示应用程序中的实际对象的对象。QT存储有关该对象的信息,这些信息有助于它在测试回放期间标识和检查该对象。

运行时对象是网站或应用程序中的实际对象,在测试回放期间执行针对该对象的方法。

在执行测试回放期间, QT也会像人那样采用类似的技术来识别对象。

继续上一节的例子,张三需要在原有照片中识别确定曾经标识过的那只杜鹃鸟,那么通过对照片的搜索,张三执行的次序是,首先确定照片就是原来标识的那张照片,然后从照片中区别出不同的物体类型,找到鸟类,从鸟类中通过杜鹃鸟的差异化特征确定杜鹃鸟对象,最后,通过前期标识中增加的序列号属性,找到原来的标识的杜鹃鸟。

QT在测试回放执行过程中,QT也会搜索与对象捕捉时记录的测试对象描述完全匹配的对象(此时的对象我们可称为运行时对象),QT会按照对象层次(类似于张三搜索杜鹃鸟的次序),依次在测试环境中逐步定位。例如在一个WEB应用的测试过程中,首先会确定浏览器,然后找到浏览器中的页面,最后在定位到页面中的对象,在这个过程中,浏览器,页面以及最后定位的对象都在对象捕捉过程中,按照层级保存在QT的对象库中,搜索过程即是按照对象库中的层级依次搜索,直到最后定位到对象。

对于大部分对象,上述方法适用,并能唯一确定测试环境中的对象,但就像张三寻找杜鹃鸟照片中,可能在一张照片中存在几只杜鹃鸟,对于这样的场景(一个测试环境中有多个强制属性相同的对象存在),QT需要通过在对象匹配过程中,QT附加的Index属性来确定最终唯一的对象。

QT可以通过类的属性定制机制来定义要强制属性,即允许用户自定义要差异化匹配的对象属性,也可以按照对象单独定义要匹配的属性信息。

3   使用测试对象

如果您在执行应用程序时进行对象捕获相应操作,则QT将:

  • 标识QT测试对象类(表示您执行了操作的对象),并创建相应的测试对象
  • 读取应用程序中对象属性的当前值,然后将属性和属性值列表与测试对象一起存储
  • 选择该对象的唯一名称,一般使用该对象某个重要属性的值

例如,假定您使用以下 HTML 源代码单击“查找”按钮:

<INPUT TYPE="submit" NAME="登录" VALUE="Find">

QT将您单击的对象标识为 WebButton 测试对象。它将创建一个名为“登录”的 WebButton 对象,然后为该WebButton 对象捕获并保存下列属性和属性值:

 

捕获对象完成后,通过脚本的生成,可以完成对对象的测试回放操作,在脚本字段内,可以看到生成以下内容:

Browser("登录").Page("登录").Frame("login_fr").WebButton("登录").Click

运行测试脚本时,QT通过其测试对象类及其描述(一组用于唯一标识该对象的测试对象属性和属性值)来标识应用程序中的每个对象。测试对象及其属性和属性值的列表存储在对象库中。在上例中, QT 将在运行测试脚本期间在对象库中搜索 WebButton 对象,通过名称 Find 来查找其描述。QT根据找到的描述,在应用程序中查找 WebButton 对象,该对象带有 HTML 标记INPUT、类型为 submit、值为“登录”。找到对象后,它将对其执行 Click方法。

猜你喜欢

转载自www.cnblogs.com/JhYs/p/9115492.html