QTP关键技术(一)——对象识别及存储技术基本常识

发表于:2007-9-20 11:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:hollyzhao    来源:hollyzhao

#
QTP

一 对象识别及存储技术基本常识

1)测试对象模型(Test Object Model)
        测试对象模型是QTP用来描述应用程序中对象的一组对象类。每个测试对象类拥有一系列用于唯一确定对象属性和一组QTP能够录制的方法
 
2)测试对象(Test Object)
        用于描述应用程序实际对象的对象,QTP存储这些信息用来在运行时识别和检查对象
 
3)运行时对象(Run-Time Object)
        是应用程序中的实际对象,对象的方法将在运行中被执行
 
4)QTP的录制过程
        A.确定用于描述当前操作对象的测试对象类,并创建测试对象
        B.读取当前操作对象属性的当前值,并存储一组属性和属性值到测试对象中
        C.为测试对象创建一个独特的有别于其他对象的名称,通常使用一个突出属性的值
        D.记录在对象上执行的操作
 
5)QTP的回放过程
        A.根据对象的名称到对象存储库(Object Repository)中查找相应的对象
        B.读取对象的描述,即对象的属性和属性值
        C.基于对象的描述,QTP在应用程序中查找相应的对象
        D.执行相关的操作
 
二 对Check Point的较为深入理解

1. 定义:
        将特定属性的当前数据与期望数据进行比较的检查点,用于判定被测试程序功能是否正确
        Check Point可以分两类:QTP内置验证点和自定义验证点
 
2. QTP内置验证点实现原理及优缺点
        A.录制时,根据用户设置的验证内容,记录数据作为基线数据
        B.回放时,QTP捕获对象运行时的数据,与脚本中的基线数据进行比较
        C.如果基线数据和运行数据相同,结果为PASS,反之为Failed.
        D.优点是 操作简单方便
        E.缺点是 QTP默认的检查的属性有时不符合自己的要求,如希望得到检查的属性没有在里面, 而默认的属性不需要检查等。
 
3. QTP内置验证点结果的应用
        A.录制的验证点在没有进行调整前,仅仅是给出了检查结果是通过还是错误的
        B.实际的测试过程中,可以根据验证点的结果进行不同的操作
       If Window("Flight Reservation").WinEdit("Name:").Check(CheckPoint("Name:")) = True then
              msgbox "oh, success!"
Else
              msgbox "oh, failure!"
End If
 
4. 自定义验证点的应用及优缺点
        A.使用条件语句对实际值和期望值进行对比,然后用Reporter对象报告结果
       '检查Ticket Number
If CStr(dbTicketNumber) = CStr(DataTable("oTicketNumber", dtLocalSheet)) Then
       Reporter.ReportEvent micPass, "打开订单- TicketNumber", "期望结果是:" & dbTicketNumber & ", 界面显示实际结果是:" & DataTable("oTicketNumber", dtLocalSheet)
Else
       Reporter.ReportEvent micPass, "打开订单- TicketNumber", "期望结果是:" & dbTicketNumber & ", 界面显示实际结果是:" & DataTable("oTicketNumber", dtLocalSheet)
End If
        B.优点是 非常灵活,前者实现的所有检查都可以用此方法来实现;
        C.缺点是 代码量大,对测试人员的要求高。
 
5. 对Check Point的深入理解

        A.个人认为在比较简单的和有Active Screen的情况下可以使用QTP内置的Check Point,在比较复杂的情况下可以通过编程和使用Reporter来完成.
        B.在使用check方法时,必须先在Keyword View或者Active Screen中新建CheckPoint。否则无法对该对象进行check,系统报错说无法在对象仓库中找到此对象。如果插入检查点,系统会自动把相关的对象添加到对象库中。
        我认为检查点并不是一个实实在在的对象。因为你可以对同一个对象设置不同的检查点,可以把它的某个属性既设定成True,也可以设定为False。而对象库中的对象的属性值是必须依赖于对象的实际属性值的。如果随意更改有可能无法识别。还有就是可以针对同一个对象设定多个检查点。在测试窗口中可以看到这两个检查点的名称是区分开来的。所以我认为检查点并不是实际存在的对象,而是一些类似映射的东西。
        尽管检查点并不是对象库中的实在的对象,但是它必须对应到对象库中的某个实实在在的对象,好像它的一个映像一样,而且在实际的操作过程中,QTP还是把它作为一个对象来处理的。
        因为我们无法像其他对象一样把“检查点对象”添加到对象库中,而QTP又认为它是个对象,所以我们无法在专家视图中直接添加检查点脚本。但是我们可以采用编成描述的方式来实现检查点的功能。
        CheckPoint 是一个依赖于Object Repository(对象库)中的某个对象的“虚拟对象”。其具体含义是:如果它所依赖的QTP 对象库中的对象没有了,那么此CheckPoint 也就不存在了;这个“虚拟对象”的属性是从它所依赖的对象的属性中“抽取”出来的,它具有它所依赖的对象的一个或几个属性,但不能增加它所依赖的对象没有的任何属性。
        CheckPoint 是一个“虚拟对象”的重要原因是:每个Object都能在Object Repository找到它的Name、Class Properties,而CheckPoint 在Object Repository中就根本不存在。选择脚本中的某个对象后,在Object Property 的对话框里面有个Respository按钮,点击它后,你会看到此对象在Object Respository 的Name、Class 和 Properties。
        选择一个CheckPoint后,在CheckPoint Properties 的对话框里没有 Respository 按钮,在Object Respository中也找不到此CheckPoint的Name、Class 和 Properties(因为它在对象库中根本就不存在!)。

 

相关阅读:

QTP关键技术(二)——QTP同步点、并行Action间的参数传递

QTP关键技术(三)——对Check Point的较为深入理解

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • belie
    2007-9-20 17:29:23

    +1

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号