基于XML SPY进行QTP自动化设计文档格式.docx

上传人:b****6 文档编号:18371943 上传时间:2022-12-15 格式:DOCX 页数:25 大小:1.13MB
下载 相关 举报
基于XML SPY进行QTP自动化设计文档格式.docx_第1页
第1页 / 共25页
基于XML SPY进行QTP自动化设计文档格式.docx_第2页
第2页 / 共25页
基于XML SPY进行QTP自动化设计文档格式.docx_第3页
第3页 / 共25页
基于XML SPY进行QTP自动化设计文档格式.docx_第4页
第4页 / 共25页
基于XML SPY进行QTP自动化设计文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于XML SPY进行QTP自动化设计文档格式.docx

《基于XML SPY进行QTP自动化设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于XML SPY进行QTP自动化设计文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

基于XML SPY进行QTP自动化设计文档格式.docx

基础脚本库:

按照业务实现的QTP脚本,其中每个Action基本对应某个相对比较独立重复操作(如Login,Logout)或最低层子菜单(如,NB中DataEntry)。

控制台(ControlCenter):

自动化测试用例执行的控制中心,该控制台根据配置文件获取需要运行的测试用例,然后根据每个测试用例对应的操作测试数据文件调用基础脚本库中Action执行。

测试集配置文件:

该文件包含了自动化测试用例集合,其中每个自动化测试用例包括本次测试是否执行设置(true/false),该测试用例对应的业务测试数据文件和操作测试数据文件的保存路径。

业务测试数据文件:

每个自动化测试用例包含的关键业务测试数据。

操作测试数据文件:

每个自动化测试用例包含了测试步骤(即对应基础脚本库中的Action)。

函数库文件:

将一些公共的操作提炼为各个辅助函数,放到VBS文件。

其中测试集配置文件,业务测试数据文件和操作测试数据文件为XML,框架提供XMLSchema用来产生和验证XML测试数据。

NB.xsd:

对应业务测试数据XML文件

Operation.xsd:

对应操作测试数据XML文件

框架执行基本流程如下:

1.控制台(ControlCenter)调用测试集配置文件,获取本次需要运行的自动化测试用例集合。

2.控制台运行每个测试用例。

2.1获取业务测试数据文件和操作测试数据文件

2.2根据操作测试数据文件执行该测试用例的每个测试过程步骤

2.3在每个测试步骤执行时

2.3.1调用和执行基本脚本库中相应的Action

2.3.2被调Action运行过程中读取对应的业务测试数据进行测试

本框架下进行自动化设计涉及3种Role:

1.QTP基础脚本库开发和维护人员

2.XMLSchema开发和维护人员

3.测试用例包含业务和操作测试数据文件设计人员

其中1,2部分的开发主要发生在框架设计阶段,一旦框架完成后,后期只需维护即可,一般情况下不需多次和持续的开发,而3部分则就是本文标题所示,基于XMLSPY进行即可,而且这些测试数据文件只需要从2部分的XMLSchema创建,可以很方便地实现通过操作XML文件玩转GS业务功能自动化测试。

后续的章节将详细的介绍本框架包含的各个部分,并最后用一个实例说明如何真正实现设计XML文件即是完成自动化测试。

三、基础脚本库

基础脚本库是本框架最基本的组成部分,由各种系统基本功能的测试脚本(QTP中各种Action)组成。

目前主要包括4大类脚本:

∙基本功能脚本,以某个基本功能为单元的测试脚本,如客户信息等,开始点击按钮链接,然后页面操作,最后退回到开始点击按钮页面。

∙产品脚本,也叫基础产品脚本,以产品定义产生的各种产品页面为单元的测试脚本,包含了GS系统所有的产品。

∙菜单脚本,也叫基础菜单脚本,以最底层菜单项为单元的测试脚本,如报案理赔功能等,该脚本开始于点击菜单,完成某个菜单项模块业务功能,然后结束于退回到菜单主界面。

基础菜单脚本有自己主页面脚本外,会通过调用基础页面脚本完成某个模块业务功能,甚至调用产品基础脚本。

∙辅助脚本,一些基本辅助功能的测试脚本,比如登陆系统,退出系统等。

目录结构

框架按照GS模块划分方式对上述脚本分类保存,目前脚本的目录及其说明如下:

C:

\Baseline

BasicModule_Claim

理赔基础脚本目录

BasicModule_Endt

批改基础脚本目录

BasicModule_NewBiz

新契约基础脚本目录

BasicModule_Renewal

续保基础脚本目录

BasicModule_RI

再保基础脚本目录

BasicModule_FN

财务基础脚本目录

BL_Party

Party和用户基础脚本目录

BL2_Product_XML

产品基础脚本目录

BasicModule_Other

其他基础脚本目录

由于控制台只根据Action名字进行调用,因此在每个脚本目录中都会包含MyCall的Action,它将需要暴露给控制台的Action进行了统一的调用,这样在控制台中只需调用各个脚本目录中MyCall就可完成所有所需Action的引用,而且每个具体的Action在控制台中都显示为相对路径,从而实现控制台直接根据Action名字调用相应得Action。

此方法同样适用于其他需要调用基本脚本库进行自动化设计的QTP脚本,后面以控制台介绍为主.

调用关系

整个基础脚本库调用关系以及与外部关系如上图所示。

控制台脚本根据操作测试数据文件逐个调用菜单脚本或辅助脚本,同时传递该脚本Action所需的参数(如指示在业务测试数据中位置,Action中操作控制条件等)。

在QTP中,即通过RunAction函数的参数输入实现。

菜单脚本根据这些参数值,调用对应业务测试数据文件中的测试数据进行实际测试,其中指示在业务测试数据中位置的RowNum参数在大部分Action中使用,用来说明本次Action应该使用第几个测试数据,比如录单公共信息Action对应得业务测试数据中DataEntry部分,如果某个测试用例中包含多次录单操作步骤,则业务测试数据中就会包含相应个数的DataEntry部分,脚本就通过指定RowNum的值来告诉QTP应该调用那个DataEntry部分的测试数据。

框架通过QTP环境变量记录测试数据文件的保存路径和需要在各个菜单脚本中传递的实时变化的信息,比如保单号,理赔号等,即框架将环境变量作为整个系统的信息共享区。

另外在业务测试数据文件中precondition包含了部分重要的环境变量名,用户可以将保单号或理赔号等信息保存在该处,控制台运行时进行的初始化工作会及时更新环境变量中取值。

站在编程角度可以将每个Action看作某个API,整个框架通过Action相互调用实现。

Action实例

下面将通过最常使用的录单业务功能Action来介绍基础脚本库中最重要的菜单脚本。

输入参数——该Action(单公共信息)保存在BasicModule_NewBiz目录脚本中,它的输入参数如下表所示,其中Operation表示进入录单主界面选择的操作,包括保存,下一步和退出等等,而Operation1表示作为Decision后系统ModuleLink功能操作。

参数名

数据类型

描述

取值描述

RowNum

Integer

使用第几个测试数据

缺省值为1

Operation

String

在录单主界面中选择的操作动作

缺省值为Next

Next-ClickNextbuttontocontinue

Exit-ClickExitbuttontoexit

Save–ClickSavebuttontosave

DataEntry

Boolean

表示询价还是录单

缺省值为True.

True-DataEntry

False-Quotation

Operation1

Decision后系统ModuleLink功能操作或退出操作

缺省值为Exit

Exit–clickExitbuttontofinishtheaction

Other–clickthebuttonwhosenameissameasthevalueofOperation1.

Theactionusesthedescriptionprogrammingmethod

内部调用关系——该Action本身还调用很多基本功能脚本Action和产品脚本,具体如下图所示。

它还使用了环境变量PolicyNo,Product来保存录单产生的保单号和产品名,用于后续测试使用,同时它会调用业务测试数据中root->

DataEntry部分的业务数据作为关键测试数据。

外部调用关系——框架将在操作测试数据文件中编写调用关系,比如表示根据业务测试数据中第一个录单数据进行公共信息录单,点击Next按钮,做完Decision后直接点击Underwriting按钮ModuleLink到核保页面。

操作测试数据文件中对应部分如下所示。

<

ActionValue="

录单公共信息"

>

<

Param1>

1<

/Param1>

Param2>

Next<

/Param2>

Param3>

True<

/Param3>

Param4>

Underwriting<

/Param4>

Description>

GeneralNewBusiness/DataEntry<

/Description>

/Action>

四、控制台

控制台为自动化测试用例执行的控制中心,它根据配置文件获取需要运行的测试用例,然后根据每个测试用例对应的操作测试数据文件调用基础脚本库中Action执行。

控制台流程

1.控制台(ControlCenter)调用测试集配置文件(默认名字为TestData.xml),获取本次需要运行的自动化测试用例集合。

2.控制台运行每个测试用例。

3.当运行某个测试用例时,控制台脚本会根据TestData.xml中记录的路径,获取业务测试数据文件和操作测试数据文件。

4.根据操作测试数据文件执行该测试用例的每个测试过程步骤,调用基础脚本库中Action并传递相应的参数值。

5.在每个测试步骤执行时读取对应的业务测试数据进行测试

控制台脚本代码

下面代码来自控制台(ControlCenter)真实脚本,也是本框架调度中心。

'

日志文件保存路径

FilePath="

\baseline\Control.log"

测试集配置文件保存路径

ConfigFilePath="

\baseline\Example\Control\TestData.xml"

......

循环获取测试集配置文件中包括的测试用例,并对每个测试用例如下操作

Fori=1toGetCount(doc,"

/root/Run"

某个测试用例是否在本次运行的设置信息

SetElem=GetElem(doc,"

i)

ifGetAttrValueByElem(Elem,"

check"

)Then

获取该测试用例中业务测试用例数据,预先检查该测试数据路径正确

TestFilePath=GetValueByElem(Elem,"

DataFile"

Environment("

XMLPath"

)=TestFilePath

写到日志文件中,包括QTP结果文件

reporter.ReportEvent0,"

DataXML:

"

&

TestFilePath,"

starttotesting..."

WriteLogToFileFilePath,"

TestFilePath&

IfFileExist(TestFilePath)Then

获取该测试用例中操作测试数据文件

OperFile"

......

在正式启动每个测试用例前先运行前提条件的初始化

InitParameter

循环获取操作测试数据中包含的Action

Forj=1toGetCount(doc1,"

/root/Action"

SetElem1=GetElem(doc1,"

j)

根据操作数据文件中配置参数,调用实际Action,并输入参数

elseIfGetOperDecideByElem(Elem1,"

Param4"

)then

 RunAction "

GetAttrValueByElem(Elem1,"

Value"

),oneIteration,GetValueByElem(Elem1,"

Param1"

),...

上述的代码成型后,基本无需修改,测试执行人员如需控制台调用自己的测试集配置文件运行,则可直接修改ConfigFilePath对应值。

......

五、测试集配置文件

一般情况下,用户会使用QTP提供的batch工作,进行多个自动化脚本的批处理运行问题,但是在实际的运行过程中存在运行结果没有记录,运行一段时间后界面上显示的脚本与实际系统操作页面不相符等不足。

因此目前一般通过单独运行每个自动化脚本进行自动化测试,造成测试过程中需要很多人为干预。

本框架引入测试集配置文件,来解决批处理运行多个自动化测试用例问题。

测试集配置文件包含了自动化测试用例集合,其中每个自动化测试用例包括本次测试是否执行设置(true/false),该测试用例对应的业务测试数据文件和操作测试数据文件的保存路径等三个设置值。

用户将所有自动化测试数据文件中业务测试数据文件和操作测试数据文件添加到该配置文件中,然后根据在每次测试运行时,通过设置每个测试用例是否运行设置值,true为需要运行,false为不需要运行。

框架就会根据该配置文件批处理运行设置为true的测试用例执行。

‘设置是否运行的标志

Runcheck="

false"

‘业务测试数据文件所在路径

DataFile>

\baseline\Example\NCD\NCDData1.xml<

/DataFile>

‘操作测试数据文件所在路径

OperFile>

\baseline\Example\NCD\NCDOperation1.xml<

/OperFile>

/Run>

如果有新增的自动化测试用例需要运行,则只需修改上面DataFile,OperFile结点的路径值,然后添加到测试集配置文件中即可。

六、业务测试数据文件

正如上面提到,自动化的深入需要业务测试数据和测试脚本的分离,而我们需要为这些业务测试数据寻找一个好的存贮地方和保存方式,本框架基于XML文件保存这个关键的业务测试数据。

XML文档已经成为许多公司和组织在数据存贮和交换的标准,同时XML本身有很方便的表示树形结构的内容,而我们业务系统目前很多的测试数据都需要这种格式表示,比如产品信息等。

本框架首先根据业务系统,结合测试实际情况,首先涉及一套业务测试数据的XMLSchema,它能方便而且高效地校验测试数据格式的正确,确认测试脚本得到的测试数据在格式上没有问题,从而减少脚本执行到半途发现测试数据格式问题。

目前这个XMLSchema为NB.xsd,在XMLSPY中如下图所示。

这个业务测试数据文件基本格式如下所示:

目前的测试数据格式,主要按照系统页面上包含的数据布局,从而比较方面直观地显示和阅读。

业务测试数据文件一般采用*Data*.xml命名方式。

框架通过QTP环境变量记录测试数据文件的保存路径和需要在各个菜单脚本中传递的实时变化的信息,比如保单号,理赔号等。

这些环境变量在各个测试步骤间起着承前启后的作用。

本框架其中一个优点就是很方便从中间某个步骤开始运行调试。

具体实现方法如下:

1、业务测试数据文件中precondition包含了部分重要的环境变量名,用户可以将保单号或理赔号等之前运行的信息保存在该处,控制台运行时进行的初始化工作会及时更新环境变量中取值。

2、临时修改控制台中下面语句部分变量j,将它设置为你需要运行的操作测试数据文件的某个Action对应的序号/行号。

Forj={你要运行的步骤序号}toGetCount(doc1,"

3、在测试集配置文件中将该测试用例设置为True,其他全部为False。

完成上述设置后,运行控制台即可,从而非常方便错误调试和开发设计调试。

七、操作测试数据文件

通过QTPAction的调用,我们可方便地根据业务流程调用Action,具体脚本代码如下(ETE_FAR):

RunAction"

Login[BasicModule_NewBiz]"

oneIteration

Product"

)="

FAR--INDUSTRIALALLRISK"

录单共享池[BasicModule_NewBiz]"

‘3表示该Action取哪一行测试数据

录单公共信息[BasicModule_NewBiz]"

oneIteration,3

这种设计自动化的方法在GSV3.0的ETE自动化脚本被应用。

该方法应付操作步骤不是太长的测试用例时还是比较方便的,但是需要在QTP中操作而且打开和调用都需要一定的时间。

为了提高整个设计的效率,本框架可以通过XML直接表示需要操作的Action。

首先涉及一套操作测试数据的XMLSchema,它能方便而且高效地校验测试数据格式的正确,确认测试脚本得到的测试数据在格式上没有问题,从而减少脚本执行到半途发现测试数据格式问题。

目前这个XMLSchema为Operation.xsd,在XMLSPY中如下图所示。

设计操作测试数据文件时,可以从Copy原有某个操作测试数据文件开始,也可以直接通过XMLSPY基于Operation.xsd生成一个新的XML文件。

设计过程中,如果下图所示,可以很方便从下拉框中选择你需要的Action名字,然后根据实际情况设置该Action所需的输入参数,如果不设置就表示全部采用默认值。

设计完成的操作测试数据如下图所示,该文件一般采用*Operation*.xml命名方式。

八、函数库

为了提供脚本的简洁性和可读性,框架将一些公共的操作提炼为各个辅助函数,并保存在2个函数库中:

✓Sub.vbs存放操作Excel和文件等非XML相关的函数

✓XML.vbs存放操作XML的辅助函数

函数库保存路径如下表所示

测试

数据

Datatable

XML.vbs

XML辅助函数库

Sub.vbs

非XML相关的辅助函数库

辅助函数在QTP中设置

通过上图所示顺序,通过多次点击“3”来添加自己的函数库文件,点击“5”来将自己的函数设置为系统缺省调用。

函数使用方式

通过上面函数库设置之后,用户就可以将这些辅助函数当作系统提供的函数调用。

具体方式如下图所示。

重要函数使用方法

XML相关辅助函数

1.读取XML测试数据文件

Setdoc=XMLUtil.CreateXMLFromFile(Environment("

))

2.根据绝对路径或相对路径获取某个结点

FunctionGetElem(doc,path,id)

FunctionGetElemByElem(Elem,path,id)

3.根据绝对路径读写某个结点值或属性值

FunctionGetValue(doc,path)

FunctionSetValue(doc,path,value)

FunctionGetAttrValue(doc,path,AttrName)

FunctionSetAttrValue(doc,path,AttrName,value)

4.根据相对路径读写某个结点值或属性值

FunctionGetValueByElem(Elem,Path)

FunctionSetValueByElem(Elem,Path,value)

FunctionGetAttrValueByElem(Elem,AttrName)

SubSetAttrValueByElem(Elem,AttrName,value)

5.获取某类结点的个数

FunctionGetCount(doc,path)

FunctionGetCountByElem(Elem,path)

6.判断某个结点值是否为空值(不存在,默认为空)

FunctionGetOperDecide(doc,value)

FunctionGetOperDecideByElem(Elem,value)

7.如果是写操作,需要执行下面的保存操作,才能“落袋为安”

其他非XML辅助函数

doc.savefileEnvironment("

其他非XML相关辅助函数

1.时间类

FunctionGetFormatDay(NewDate)

FunctionGetToday

FunctionGSFormatDate(str)

FunctionTimeSequence

2.文件类

SubOpenFileTes

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1