基于QTP+QC自动化测试框架
上一篇 / 下一篇 2014-09-28 14:47:00 / 个人分类:QTP
1. 介绍
QTP是HP公司的自动化测试工具,目前主流版本为HP QuickTest Professional 10.0。HP QuickTest Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。
QTP采用VBS作为脚本语言,提供灵活的脚本编程方法,在传统录制-回放基础上可以对VBS脚本进行优化、结构化,并增加脚本的复用。而且,可以依据需要,利用VBS脚本在QTP的基础上摆脱对象库,建立与Excel通讯,以Excel为脚本和结果载体的框架。
本文总结利用QTP实现自动化测试脚本、结果管理的各种方法。并初步拟定各种方法框架下的规范,为实现自动化测试提供理论基础和参考。
2. 关键字驱动的自动化测试
QTP采用的是关键字驱动的自动化测试思想,其本身提供的脚本录制处理方法都是基于关键字驱动,所以在研究QTP的使用方法前需要先简单介绍关键字驱动自动化测试思想。
关键字驱动的自动化测试是在传统的录制-回放自动化测试和数据驱动自动化测试基础上发展而来的,传统的录制-回放自动化测试方式只是复制了用例的操作,测试步骤和数据都写死在脚本中,脚本维护非常不灵活;之后发展而来的数据驱动自动化测试,讲测试数据从脚本中分离出来,大大加强了维护测试数据的灵活性,但对页面变动等情况依然不能灵活的适应;现在的关键字驱动自动化测试,是在将测试数据分离的基础上,将自动化测试的对象、方法也分离出来,实现测试脚本的结构化,测试内部对象名与页面对象相分离。
关键字驱动的自动化测试的结构由,对象库、数据表格、脚本所构成:
l
l
l
例:Browser("Richfit OCS Logon").Dialog("来自网页的消息").WinButton("确定").Click
窗口和对象名用于定位,操作是对象执行的方法,数据为需要输入的数值。
关键字驱动的运行机制为:
脚本中的窗口和对象的名称与对象库接口的,依据脚本中的名称,在对象库中寻找对应的对象,对象库依据该对象的信息,在界面中定位,然后对页面的对象进行相应的操作,或输入数据。如下图所示:
上例中,对象库中已包含“密码”“用户名”的对象信息,以及其所在的页面和窗口的信息,这些信息可对应到系统界面的对象“User ID”和“Password”输入框。当需要对这两个输入框进行操作时,只需要在脚本中写下对象库中名称的对象名,就可以实现对系统界面的操作。
等于是在脚本和界面之间多了一道对象库的转换,这道转换有什么好处呢?简单总结如下几点:
l
l
l
l
l
3. QTP实现关键字驱动自动化测试的几种方式
前面介绍了关键字驱动的主要思想,QTP的设计框架即使基于这个思想的,QTP提供了对象库和数据表,并可以利用QC方便的集成,进行对象库、脚本、数据表、测试结果的整体管理,是比较一体化的自动化测试解决方案,使用方便,管理统一。
但此方案也有一定的局限性,由于对象库和测试结果都是集成在软件中会造成:
l
l
l
由于以上的问题,可以利用QTP完整的VBS脚本功能,重新搭建对象库甚至测试框架,目前可行的解决方案为:
1.利用描述性编程,摆脱QTP自带的对象库,另外建立对象库,并打包成库文件,在脚本开始时调用。
2.类似于Robot测试框架,使用VBS编写一个驱动逻辑,建立一个运行脚本的框架,完全摆脱QTP,利用与Excel交互,将测试的步骤个关键字保存在Excel表格中,通过框架读取Excel表格中的窗口、关键字、操作、数据,然后通过QTP执行,并保存结果到Excel中。
3.1 方案一:QTP原厂解决方案
本方案,按照QTP设计的整体解决方案,使用QTP原代对象库、数据表,并和QC集成管理脚本、对象库、测试结果等。本方案充分利用HP产品体系的整体性,最大程度利用现有的对象库和QC强大的管理功能,并且QC同时具有手动测试管理功能,可以手动测试和自动化测试方便的整合到一起管理。
在QC与QTP建立连接后,可用QC的Test Plan管理QTP脚本、QC的Test Resource管理QTP的对象库。
3.1.1 建立测试脚本流程
准备工作:本机安装QTP,在本机或服务器安装QC,已建立工程,并将QC和QTP的链接,具体方法可参阅《HP Quality Center10集成手册》
1.
2.
添加对象后,需要对对象进行重命名,以方便管理和易于在脚本中阅读,直接修改Name框就可完成,注意:连带上级的窗口也应一起修改。修改后如下图所示:
对象添加完成后,点击保存,出现如下画面:
当QTP和QC建立连接后,保存会出现QC的模块,我们可以将对象库保存到QC中(或者保存到本地文件中)。若之前没有建立文件夹,也可以点击 建立文件夹。
比较:录制QTP脚本后,系统会自动保存运行脚本所用到的对象到Local对象库,并且每个Action会存在一个单独的Local对象库,这种方法不易管理,且对象命名混乱,避免采用。
3.
测试数据会随着脚本的保存一起保存到QC,不需要单独保存。
4.
添加对象库,然后在Available Actions中选择Action,点击>添加到Associated Actions完成关联。
添加后再QTP的左侧的Available Keywords页中会出现对象库中的对象:
在Expert View拖动对象库中的对象到脚本框中形成脚本:
然后将数据表与脚本进行关联,在Set后加DataTable("列名", dtLocalSheet)
之后可点击Run运行,调试脚本
5.
3.1.2使用QC执行QTP自动化测试脚本
HP整体解决方案可以使用QC对QTP的脚本进行管理,并且可以使用QC调用执行机,在本地或远程执行QTP脚本,再将结果返回QC。QC将记录每次脚本执行的结果。
使用HP原汁原味的自动化测试解决方案,上手比较容易,直观。可以充分利用QC的强大的管理能力。在基本需求上,可以全部满足。
3.2 方案二:QTP描述性编程对象库
在不使用QTP自带对象库时,可用描述性编程的方法,用脚本语句创建对象,并描述对象的信息,从而定位页面中的对象。使用描述性编程有两种方式,第一种,将对象统一输入到一个QTP的Library库文件中,Library库文件也可以保存到QC的Resource中,统一管理。Library库文件可替代QTP对象库,起到对对象的定义、管理作用。第二种,直接在脚本中使用描述性编程
采用描述性编程创建对象库的优势是可以摆脱QTP自带对象库不可移植等的约束。
3.2.1描述性编程
描述性编程是QTP脚本的一种生命类语句,可创建一个描述对象,对其特有属性进行描述。在进行描述性编程后,脚本可摆脱对象库,进行界面对象的识别。
利用QTP对象库生成的脚本:
TAG: