基于QTP+QC自动化测试框架

上一篇 / 下一篇  2014-09-28 14:47:00 / 个人分类:QTP

1.    介绍

QTPHP公司的自动化测试工具,目前主流版本为HP QuickTest Professional 10.0HP QuickTest Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。

QTP采用VBS作为脚本语言,提供灵活的脚本编程方法,在传统录制-回放基础上可以对VBS脚本进行优化、结构化,并增加脚本的复用。而且,可以依据需要,利用VBS脚本在QTP的基础上摆脱对象库,建立与Excel通讯,以Excel为脚本和结果载体的框架。

本文总结利用QTP实现自动化测试脚本、结果管理的各种方法。并初步拟定各种方法框架下的规范,为实现自动化测试提供理论基础和参考。

2.    关键字驱动的自动化测试

QTP采用的是关键字驱动的自动化测试思想,其本身提供的脚本录制处理方法都是基于关键字驱动,所以在研究QTP的使用方法前需要先简单介绍关键字驱动自动化测试思想。

关键字驱动的自动化测试是在传统的录制-回放自动化测试和数据驱动自动化测试基础上发展而来的,传统的录制-回放自动化测试方式只是复制了用例的操作,测试步骤和数据都写死在脚本中,脚本维护非常不灵活;之后发展而来的数据驱动自动化测试,讲测试数据从脚本中分离出来,大大加强了维护测试数据的灵活性,但对页面变动等情况依然不能灵活的适应;现在的关键字驱动自动化测试,是在将测试数据分离的基础上,将自动化测试的对象、方法也分离出来,实现测试脚本的结构化,测试内部对象名与页面对象相分离。

关键字驱动的自动化测试的结构由,对象库、数据表格、脚本所构成:

l  对象库记录了页面中对象的信息,用于准确定位页面中的对象(如:按钮、输入框、菜单等)

l  数据表格用于保存大量测试数据,将数据从脚本中分离,测试数据一般为测试中需要输入或选择的数据,通过循环执行可运行海量的数据;数据表格中也可以和对象库结合,将一些对象名保存到数据表中,依据逻辑执行,从而可以精简脚本的结构。

l  脚本4部分组成:窗口、对象名、操作、数据。

例:Browser("Richfit OCS Logon").Dialog("来自网页的消息").WinButton("确定").Click

窗口和对象名用于定位,操作是对象执行的方法,数据为需要输入的数值。

关键字驱动的运行机制为:

脚本中的窗口和对象的名称与对象库接口的,依据脚本中的名称,在对象库中寻找对应的对象,对象库依据该对象的信息,在界面中定位,然后对页面的对象进行相应的操作,或输入数据。如下图所示:

[转载]基于QTP+QC自动化测试框架


上例中,对象库中已包含“密码”“用户名”的对象信息,以及其所在的页面和窗口的信息,这些信息可对应到系统界面的对象“User ID”和“Password”输入框。当需要对这两个输入框进行操作时,只需要在脚本中写下对象库中名称的对象名,就可以实现对系统界面的操作。

等于是在脚本和界面之间多了一道对象库的转换,这道转换有什么好处呢?简单总结如下几点:

l  可重命名内部对象名,使得脚本更加易读易懂

l  方便对象的统一管理

l  在界面发生变化时,只需要修改维护对象库,不用繁琐的修改脚本

l  方便自动化管理(设想),在团队工作时,方便分工,如:a组建立对象库,b组依据用例编写脚本

l  QTP中,可直接拖动对象库中的对象形成脚本,减少打字输入,提高效率(此优点尽在使用QTP原对象库时实现)

   以上就是关键字驱动的主要思想,即由对象库、脚本、数据表组成的立体测试体系。关于更详细的信息,可参阅《关键字驱动的自动化测试》。

 

3.    QTP实现关键字驱动自动化测试的几种方式

前面介绍了关键字驱动的主要思想,QTP的设计框架即使基于这个思想的,QTP提供了对象库和数据表,并可以利用QC方便的集成,进行对象库、脚本、数据表、测试结果的整体管理,是比较一体化的自动化测试解决方案,使用方便,管理统一。

但此方案也有一定的局限性,由于对象库和测试结果都是集成在软件中会造成:

l  测试结果只能在QTPQC中查看,测试结果的统计和调用存在局限。

l  对象库只针对于QTP,不具有通用性,当不使用QTP时,对象库无法移植。

l  脚本和对象库占用的空间相对较大

由于以上的问题,可以利用QTP完整的VBS脚本功能,重新搭建对象库甚至测试框架,目前可行的解决方案为:

1.利用描述性编程,摆脱QTP自带的对象库,另外建立对象库,并打包成库文件,在脚本开始时调用。

2.类似于Robot测试框架,使用VBS编写一个驱动逻辑,建立一个运行脚本的框架,完全摆脱QTP,利用与Excel交互,将测试的步骤个关键字保存在Excel表格中,通过框架读取Excel表格中的窗口、关键字、操作、数据,然后通过QTP执行,并保存结果到Excel中。

   下面对QTP提供的整体解决方案和另外2中延伸解决方案进行介绍。


 

3.1 方案一:QTP原厂解决方案

本方案,按照QTP设计的整体解决方案,使用QTP原代对象库、数据表,并和QC集成管理脚本、对象库、测试结果等。本方案充分利用HP产品体系的整体性,最大程度利用现有的对象库和QC强大的管理功能,并且QC同时具有手动测试管理功能,可以手动测试和自动化测试方便的整合到一起管理。

QCQTP建立连接后,可用QCTest Plan管理QTP脚本、QCTest Resource管理QTP的对象库。

3.1.1     建立测试脚本流程


[转载]基于QTP+QC自动化测试框架

 

准备工作:本机安装QTP,在本机或服务器安装QC,已建立工程,并将QCQTP的链接,具体方法可参阅《HP Quality Center10集成手册》

1.     分析被测系统和用例:确认文件夹体系结构和对象库的粒度,建议按模块划分,若模块比较大,可按子模块划分。划分的粒度主要依据具体情况分析。确定结构后可以在QCTest Resource中建立好相应的文件夹。

2.     建立对象库:在QTP的 Resource->Object Repository Management中新建对象库,以模块命或子模块命命名。然后使用Add Object依次添加本模块所有页面上的对象。

[转载]基于QTP+QC自动化测试框架

添加对象后,需要对对象进行重命名,以方便管理和易于在脚本中阅读,直接修改Name框就可完成,注意:连带上级的窗口也应一起修改。修改后如下图所示:

[转载]基于QTP+QC自动化测试框架

 

对象添加完成后,点击保存,出现如下画面:

[转载]基于QTP+QC自动化测试框架

 

QTPQC建立连接后,保存会出现QC的模块,我们可以将对象库保存到QC中(或者保存到本地文件中)。若之前没有建立文件夹,也可以点击 建立文件夹。

比较:录制QTP脚本后,系统会自动保存运行脚本所用到的对象到Local对象库,并且每个Action会存在一个单独的Local对象库,这种方法不易管理,且对象命名混乱,避免采用。

3.     准备测试数据(DataTable)QTP的数据表采用的是Excel,每个测试用例有一个Global Sheet,每个Action有一个单独的Sheet。在准备数据时,可以先将数据保存到一个Excel表中,在实现脚本时再复制过来。如此,一个,可以对测试数据进行备份;再有,防止在实现脚本的时候因为Action格局的变化,需要对测试数据重新调整。

 

测试数据会随着脚本的保存一起保存到QC,不需要单独保存。

[转载]基于QTP+QC自动化测试框架

4.     实现脚本:在有了前面几部的准备后,可按照测试用例进行脚本的实现,QTP脚本采用标准的VBS脚本语言,对于对象的操作可直接从对象库拖动生成脚本。在脚本实现前需要将对象库和Action进行关联。进入QTPResource->Associate Repositories如下图:

[转载]基于QTP+QC自动化测试框架

添加对象库,然后在Available Actions中选择Action,点击>添加到Associated Actions完成关联。

添加后再QTP的左侧的Available Keywords页中会出现对象库中的对象:

[转载]基于QTP+QC自动化测试框架

 

Expert View拖动对象库中的对象到脚本框中形成脚本:

[转载]基于QTP+QC自动化测试框架

 

然后将数据表与脚本进行关联,在Set后加DataTable("列名", dtLocalSheet)

之后可点击Run运行,调试脚本

5.     保存脚本:当QTPQC建立连接后,可以将脚本保存到QCTest Plan中。对象库和脚本的关联关系也会一起保存。

3.1.2使用QC执行QTP自动化测试脚本

HP整体解决方案可以使用QCQTP的脚本进行管理,并且可以使用QC调用执行机,在本地或远程执行QTP脚本,再将结果返回QCQC将记录每次脚本执行的结果。

[转载]基于QTP+QC自动化测试框架

 

使用HP原汁原味的自动化测试解决方案,上手比较容易,直观。可以充分利用QC的强大的管理能力。在基本需求上,可以全部满足。

 

 

3.2           方案二:QTP描述性编程对象库

[转载]基于QTP+QC自动化测试框架

在不使用QTP自带对象库时,可用描述性编程的方法,用脚本语句创建对象,并描述对象的信息,从而定位页面中的对象。使用描述性编程有两种方式,第一种,将对象统一输入到一个QTPLibrary库文件中,Library库文件也可以保存到QCResource中,统一管理。Library库文件可替代QTP对象库,起到对对象的定义、管理作用。第二种,直接在脚本中使用描述性编程

采用描述性编程创建对象库的优势是可以摆脱QTP自带对象库不可移植等的约束。

3.2.1描述性编程

描述性编程是QTP脚本的一种生命类语句,可创建一个描述对象,对其特有属性进行描述。在进行描述性编程后,脚本可摆脱对象库,进行界面对象的识别。

利用QTP对象库生成的脚本:

 

 [转载]基于QTP+QC自动化测试框架

TAG:

 

评分:0

我来说两句

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 19637
  • 日志数: 18
  • 建立时间: 2013-06-25
  • 更新时间: 2016-06-01

RSS订阅

Open Toolbar