1.3 录制与回放—QTP的开关
阶段要点
录制在实际项目应用中的价值观(极低)。
新手切记不可在项目应用时被禁锢在录制中。
录制及其相关功能的重点知识点提炼。
录制功能“旁门左道”式的妙用。
录制的3种模式及应用。
QTP回放机制重要原理。
实际项目应用时关于QTP脚本回放的几项重要设置详解。
1.3.1 请拒绝“录制”,再开始你的实际项目之旅
1.3.1.1 引言
当人们一提到QTP,第一反应就是,它是Mercury公司旗下的一款强大的商业化自动化测试工具(现已被HP公司收购)。那么当提到QTP有什么主要功能的时候,大家的第一反应一定是“录制”。
很多新人认为,QTP自动化测试工具最强大的功能就是“录制”。在众多的自动化测试工具中,QTP的“录制”的确做地非常有优势和全面、以及高档。但是,作者很负责任地告诉读者,QTP的录制功能虽然相当精彩,一些相关的“出彩”功能,作者甚至碰都没有碰过,不过这并不影响作者使用QTP出色地完成各类自动化测试项目,因为靠“录制”是做不了项目的,甚至连一个demo都做不出来。
就像作者在之前的“1.1.2 严格的自动化测试流程”章节中说过的那样,自动化测试项目和软件开发项目同属软件工程学,两者是同属一派的。在自动化测试项目的实际应用中,只有直接编码才能出色地根据之前的设计思想来完成脚本,如果是靠“录制+加强”的模式,那就不可能按照前面定制的设计方法和思想来开发测试脚本。
1.3.1.2 一些“理论性的社会实际问题”实例
作者在1.1.2.1“测试流程是关键”这一节中的第五大点里提到过几种测试脚本种类,录制就属于其中最低级的“线性脚本”的范畴。录制出来的脚本给作者这样一种感觉“貌似华丽,其实没有任何价值和思想”,也可以把这类脚本比作古代战场中的一员有勇无谋的武将,表面上凶猛无比,其实只不过是横冲直撞之辈尔,没有任何战略、谋略,必然无法永远打胜仗。
虽然QTP在录制时有很多“华丽”的辅助功能,比如Keyword View界面的各种直观操作、Active Screen等。但是这些东西基本上也只是有一个华丽的表面而已,如Active Screen,如果开启了这个功能,那么即使你录制一个简单的注册功能,这个脚本的大小估计都有10MB左右!因为脚本里都是截取下来的图!一个注册脚本就要10MB,那么一个自动化测试项目测试下来需要多少MB?另外,在添加对象方面上,录制也显得差强人意,因为靠录制的方式添加对象,表面上来看十分快速,但是通过这种方式添加到对象库中的对象,它们的命名都是QTP自动命名的,相当乱,还需要一个个去改,而且很多对象还是不需要的,QTP也给自动添加进来了,这样,效率远不如一开始就一个个添加对象,并根据规范为它们逐一命名再进行编程呢。对象库这章还没讲到,届时会在章节中引导读者做一个有趣的实验来证明,在这里也不再阐述了。
小提示: 关于文中提到的“录制”两字。—作者在文中提到的“录制”是指以录制的方式并配合使用其他QTP自带的功能录制出来的脚本,从而完成自动化测试脚本编写的整个过程(线性脚本、结构化脚本都在此范畴之内),而不是指单一的录制功能。举个例子,比如QTP这个测试工具自带了很多检查点的设置与操作,其实在真正的项目应用中,是用不到的,而是靠代码的方式去实现,绝非靠工具本身提供的功能去实现。关于检查点,在这里点到为止,后续的“验证点”章节中,会详细地讲解靠代码实现验证点并且通过实例证明,为什么实际项目应用中的验证是从来不靠QTP自带的检查点功能的。 |
最后,有一点需要做声明,本书的作者绝对没有诋毁QTP的录制功能,正是因为有了这项强大功能的开发与研究成果,才能让自动化测试工具一步一步走上更高的高度。只是作者觉得,“录制”在实际的自动化测试项目的应用中几乎没有任何可发挥的余地。因为本书并不是一本自动化测试工具功能的介绍书籍,而是一本融合实战技术、项目实践及经验的指导书籍。
在下一个章节中,会对“QTP录制”的核心做必要的介绍和讲解,这些内容,读者还是必须掌握的。
1.3.2 录制功能更多的只是新人学习时的利器
1.3.2.1 录制相关功能只需把握几个重点
学习“录制”只是能更多的了解QTP这个自动化测试工具,但在自动化测试项目中几乎没有发挥的余地。如果只从实际项目角度出发,那是不是可以完全抛弃学习呢?是可以的。不过在本章节中,作者总结了一些关于“录制”方面的重点知识点,这些重要的知识点不仅和“录制”有关,它们和以后在具体的项目应用中也有关系。所以把这些知识拎出来作重点介绍。希望可以给读者以启发,本书也从本章节开始正式引领读者去实践QTP、实践自动化测试项目应用
1.Add-in Manager & BHO Manager
Add-in和BHO相关的知识点表面看似和“录制”没直接联系,其实它不仅仅和“录制”有关联性,和很多知识点也同样都有关联,比如以后会介绍的对象库,可以说这两个一直伴随着QTP自动化测试项目。选择将这两个知识点放在“录制”这章节介绍更加妥当,毕竟无论是“录制”、“插件”、还是“BHO”都是学习QTP一开始就要接触的知识点。
在打开QTP之后,可以看到一个Add-in Manager 框(见图1-14)弹出来,这是一个QTP插件管理器,每次启动前需要选择对应的插件(在插件名称左侧打钩)才能进行测试。QTP默认自带3个插件,分别是ActiveX、Visual Basic以及Web,其中属Web插件最重要,使用率最高,也是本书所用到的重点插件。如果需要使用其他插件,可以向官方购买,或由用户自主定制自己的插件。加载新插件后,插件管理页面中就会显示新加载的QTP插件。
图1-14
经常会在测试论坛上看到一些测试同行问“这个项目是用什么语言写的?应该选择哪个插件做自动化测试?”。其实提出这个问题足以证明大家并没有了解插件的真正含义和作用。
插件的含义与作用
Add-in的选择是为了能够成功识别对应插件的测试对象控件,也就是说插件的选择是和被测对象控件有关的,以QTP应用最广泛的Web网页测试而言,它与项目具体使用的是哪种语言没有多大关系。但是对于Windows桌面应用程序而言,插件的选择是和开发语言有关系的。针对C++、Java和.NET程序,QTP都有相应的Add-in提供,分别用于对应的语言开发的Windows桌面应用程序。
一个实例:
需求:使用QTP的Spy识别“51Testing软件测试网”首页上的[登录]按钮(WebButton)控件,如图1-15所示。
注1:Spy功能是QTP重要的一个机制,在后续的章节“Object Spy”中会进行详解。这里,只给出该功能的位置及基本用法。
注2:Spy的位置:进入QTP→上方菜单栏→Tools→Object Spy→点击后弹出Spy框。
注3:Spy的基本用法:点击后会出现一个“手指头”并重新切换到之前的页面,用“手指头”点击被测对象控件即可。
图1-15
“51Testing软件测试网”是一个B/S架构的Web网站,需要加载Web插件(见图1-14中的插件选择状况)才能够正确识别网站中的对象。下面看一下选择了正确的插件后,利用Spy定位“登录”这个WebButton对象控件的结果,如图1-16所示。
图1-16
通过图1-16,可以很清楚地看到控件识别成功了。“登录”这个对象控件的所有属性尽在Spy的掌握中。
那么如果没有选择相对应的插件去进行识别会是什么情况呢?首先如图1-17所示,作者把Web插件的钩选去除,只选择Visual Basic插件。然后再次用Spy去定位“登录”这个控件。
图1-17
操作完毕,结果如图1-18所示。
图1-18
这就是选择错误插件后,Spy的识别图。由于没有选择对应的插件,“小手指”都没有办法具体定位到“登录”按钮这个WebButton控件对象,只能把整个浏览器识别为一个对象。
通过上述内容,相信读者已经对插件有了深刻的了解。但是内容还没有结束,你知道吗?即使选择正确的插件,有时仍然会出现图1-18中的情况。如果以后发生类似的问题,解决办法相当简单,只要关闭QTP和测试网页,然后先打开QTP,再打开测试网页即可解决!为什么会这样呢?说的简单点就是,QTP和BHO机制是挂钩的。因为安装完QTP之后,每次打开IE,浏览器会自动加载BHOManager,而QTP在IE中识别对象是依靠一个名为BHOManager Class的动态链接库来完成的,如果是先打开IE再打开QTP,QTP就不能成功读到BHOManager Class这个动态链接库,从而导致QTP识别对象失败。
小提示: What is "BHO"?—BHO(Browser Helper Object,浏览器辅助对象,简称BHO)。BHO是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(INTERACTIVED Interface)。BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的BHO对象实例就要生成。任何BHO对象与浏览器实例的生命周期是一致的。其次,BHO仅存在于Internet Explorer 4.0及以后版本中。BHO是一个COM进程内服务,注册于注册表中某一键下。在启动时,Internet Explorer查询那个键并把该键下的所有对象预以加载。 |
所以,请每位读者要特别注意这里的小细节,别疏忽了它。