3_TD_QTP实用操作手册—银行付款实例讲解_第1页
3_TD_QTP实用操作手册—银行付款实例讲解_第2页
3_TD_QTP实用操作手册—银行付款实例讲解_第3页
3_TD_QTP实用操作手册—银行付款实例讲解_第4页
3_TD_QTP实用操作手册—银行付款实例讲解_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TD+QTP使用操作手册银行付款实例讲解7/1/2022目录测试设计测试实现测试执行2测试设计设计测试用例现在要针对银行付款业务设计一个测试用例,进行功能的覆盖1 划分业务功能、画出业务流程图1 新增2复核3 取消复核4 修改5 删除3测试设计设计测试用例2 根据流程图,写出测试方案银行付款有一个起始点,两个结束点,按照功能覆盖的思想,选择两条路径即可。如果要考量到动作之间的关联性,路径就比较多了。基于以往的经验,取消复核、二次复核比较容易出现问题,因此两条路径分别为:路径一:新增-复核-取消复核-修改-复核路径二:新增-复核-取消复核-删除3 确定业务功能在流程图中,可以得出,本业务可以划分

2、成以下业务功能:新增、复核、取消复核、修改、删除4测试设计设计测试用例4 确定业务数据由于只要进行流程的覆盖,所以暂时可以把业务数据作的简单一点。5 在TD中录入测试用例访问TD效劳器,如: :/stc-hrye/tdbin/start_a.htm5测试设计在TD中录入测试用例在“Test Plan新建一个文件夹,用来存放测试脚本6测试设计在TD中录入测试用例新建一个测试脚本,这个脚本是用来存放银行付款的标准业务功能的。下阶段的测试实现,主要就是实现这个脚本的内容。7测试设计在TD中录入测试用例添加对脚本的描述说明文字。说明脚本实现的内容、目的8测试设计在TD中录入测试用例录入所有的步骤。如果

3、是业务功能的根底脚本,每一个step,就对应一个业务功能。如果该脚本是用来描述一个测试用例的,那么一个step就是一个操作。9测试设计在TD中录入测试用例Step录入完成后,自动生成QTP的测试脚本。如果不能生成,请检查是否安装了TDPlus10测试设计在TD中录入测试用例生成的脚本中,只包含说明信息。11目录测试设计测试实现测试执行12测试实现测试实现,需要实现两局部的内容1 测试用例的实现 testCase Action的实现2 根底业务功能的实现reusable Action的实现其中,testCase Action只调用reusable Action,每个业务功能如何实现,都放在了re

4、suable Action中。13测试实现实现testCase Action1 使用QTP连接TD14测试实现实现testCase Action2 输入TD效劳器的信息,并连接。3 翻开要编辑的根底业务功能的脚本。15测试实现实现testCase Action216测试实现实现testCase Action4 按照脚本的说明信息,将根底的业务功能脚本分割成多个resuable的Action。注意:分割了的Action,不能再合并。17测试实现实现testCase Action18测试实现实现testCase Action依次的,将所有的Action分割完成。19测试实现实现testCase A

5、ction5 修改根底业务功能Action的属性,使其可重用。20测试实现实现testCase Action6 修改Action的传入、传出参数。传入传出参数的数据类型建议只使用String型,且各只有1个。传入的参数,是将数组转成字符串传入的,需要经过解析后才能使用。21测试实现实现testCase Action7 根底的业务功能的Action暂时就完成了。现在开始编写testCase的Action。翻开测试用例的脚本payment0122测试实现实现testCase Action8 切换到Expert View,调用“银行付款-新增的Action23测试实现实现testCase Actio

6、n24测试实现实现testCase Action25测试实现实现testCase Action说明:insert call to copy 与 insert call to Exists假设要在ActionA中调用ActionB call 是获得ActionB的引用,只是引用,如果原本的ActionB的内容发生了变化,那么ActionA中的内容也跟着变化,且不能在ActionA中对ActionB修改。copy 是把ActionB的脚本复制到ActionA中,得到ActionB的一个copy,修改ActionB_copy不对ActionB造成影响,修改ActionB也不对ActionB_copy

7、造成影响。有点像C语言中的传指针和传值的意思。另外,还可以去看编写的脚本,一个没有分割Action的脚本,默认会生成Action0和Action1两个Action,其中Action0中一般只有一句话:RunAction Action1,oneIteration当运行脚本时,实际上,只是运行了Action0,其他的Action都是被Action0调用的。copy过来的Action,如果没有使用RunAction的方法来调用,应该是不会被运行的,因为没有被Action0直接或间接调用。 26测试实现实现testCase Action9 确定要调用的新增的Action的传入参数根据页面的信息,新增银

8、行付款业务时,需要输入以下数据:付款方客户编号 付款方账户号 开户行编号收款方账户编号收款方名称汇入行所在省汇入行所在市汇入行名称金额支票号报单号摘要27测试实现实现testCase Action10 将传入参数和数据写入到一个Excel表格中,并保存同时,填写?设计参数说明?,将Action的名称和传入参数的字段记录存档。28测试实现实现testCase Action11 将测试数据导入到脚本payment01的Action1中29测试实现实现testCase Action12 将业务数据作为参数传入到“新增的Action中从DataTable中读取所需要的数据,组成一个字符串。假设这个功能

9、,我们把它写成一个方法,命名为getLocalDTData,我们在testCase Action中可以这样使用它:dataList=getLocalDTData(3,12)RunAction 新增 payment, oneIteration,dataList由于这个功能经常要使用,所以我们把它添加到库函数中去30测试实现实现testCase Action另存到TD效劳器上31测试实现实现testCase Action点击 File Setting,翻开设置页面,将脚本与库函数关联起来32测试实现实现testCase Action在库函数文件中,实现getLocalDTData(rowNumbe

10、r,columnCount)方法。具体的代码如下:Function getLocalDTData(rowNumber,columnCount)取出当前sheet的第rowNumber行的前columnCount列的所有数据,拼成一个字符串返回。如getBizData(1,8),表示取出当前Sheet的第1行的前8列数据。字符串之间使用空格作为分隔符。如果数据本身有使用空格,用两个下划线代替,如果数据本身是空,使用两个特殊符号代替。“datatable.SetCurrentRow (rowNumber)Dim rowData()For i=0 to columnCount-1If isEmpty

11、(dataTable.Value(i+1,dtLocalSheet) ThenExit forEnd IfDim temp_valuetemp_value=dataTable.Value(i+1,dtLocalSheet)ReDim preserve rowData(i)If instr(temp_value,)0 ThenrowData(i)=replace(temp_value, ,)elseif temp_value= ThenrowData(i)=elserowData(i)=temp_valueEnd IfNextgetLocalDTData=join(rowData)End Fun

12、ction33测试实现实现testCase Action13 继续调用“复核的Action,方法与之前的类似。不过复核时,需要把交易号传出来,有一个传出参数的问题。形成的脚本如下:dataList=getLocalDTData(3,12)RunAction 新增 payment, oneIteration,dataListRunAction “复核 payment, oneIteration,dataList,transNO这样一个简单的“制单-复核的流程就完成了。当然,在这之前要调用“登陆、“选择模块、“选择币种、“选择菜单、“退出系统的Action。完成后的脚本如以下图:34测试实现实现t

13、estCase Action35测试实现实现testCase Action传入参数与传出参数的使用:如果所调用的操作已定义了输入和/ 或输出参数,您还可以提供输入参数的值以及输出参数的存储位置,作为 RunAction 语句的参数。输入参数列在输出参数之前。对于输入参数,可以指定一个固定值,也可以指定另一个已定义的参数数据表参数、环境参数或调用操作的操作输入参数的名称,输入参数将采用该已定义参数的值。对于输出参数,可以指定一个用于存储值的变量,或者是一个已定义参数数据表参数、环境参数或调用操作的操作输出参数的名称。带有参数的操作调用使用以下语法:RunAction ActionName,=It

14、erationQuantity,=Parameters例如,假设从 Action1 调用 Action2,并且 Action2 有一个已定义的输入参数和一个已定义的输出参数。 RunAction Action2, oneIteration, “MyValue , MyVariable为输入参数提供 MyValue 的字符串值,并将输出参数生成的值存储在名为MyVariable 的变量中。 摘自QTP用户手册第308页36测试实现测试实现,需要实现两局部的内容1 测试用例的实现 testCase Action的实现2 根底业务功能的实现reusable Action的实现其中,testCase

15、Action只调用reusable Action,每个业务功能如何实现,都放在了resuable Action中。37测试实现实现根底业务功能的脚本现在,开始实现“银行付款-新增的功能。翻开payment脚本,编辑“新增的Action解析传入参数。因为传入参数是一个字符串,需要将其转换成数组。仍然是在函数库中添加一个方法,具体的脚本如下:Function stringToArray(bizDatas)与getBizData()方法相对,解析字符串成数组返回。myString=split(bizDatas, ,-1,1)For i=LBound(myString) to UBound(myStr

16、ing)temp_value=myString(i)If instr(temp_value,)0 ThenmyString(i)=replace(temp_value, )elseif temp_value= ThenmyString(i)=elsemyString(i)=temp_valueEnd IfNextstringToArray=myStringEnd Function38测试实现实现根底业务功能的脚本解析传入参数bizData=stringToArray(dataList)那么bizData就是一个数组,为了查看方便,在注释中写明每个参数的含义:39测试实现实现根底业务功能的脚本识

17、别第一个放大镜客户编号的放大镜。对于放大镜,为了统一识别,采用以下两步操作来完成:1 点击放大镜的图标2 在弹出框中选择编号的链接第一步,识别放大镜的图标先用object Spy查看一以下图标的属性。对于静态Web对象的识别,在?自动化测试的实践-应用QTP测试框架?的PPT中有一个常用属性的列表,可以参考。这里使用name属性来识别图片。页面上有4个放大镜的图标,所以仅仅靠name属性是不能唯一识别的,这里需要使用index属性来辅助识别。完成后的脚本就是这样的:Browser(“creationTime:=1).Page(“index:=0).Image(“name:=button,ind

18、ex:=0).Click40测试实现实现根底业务功能的脚本41测试实现实现根底业务功能的脚本第二步,在弹出窗口中点击客户编号的超链接脚本如下:Browser(creationTime:=2).Page(index:=0).Link(text:=&bizData(0).Click这句话的意思是:在第3个被翻开的IE窗口中,点击一个超链接,超链接的内容是bizData(0)。bizData(0)就是解析出来的数组,第一个数据是客户编号。注意这里的特殊写法,因为bizData(0)是一个变量,连接字符串需要使用“&。考虑到传入的参数可能为空,所以在这之前加一个判断:如果客户编号的值不为空,那么才点击

19、客户编号的放大镜,否那么不点击。脚本如下:If bizData(0) ThenBrowser(creationTime:=1).Page(index:=0).Image(name:=button,index:=0).ClickBrowser(creationTime:=2).Page(index:=0).Link(text:=&bizData(0).ClickEnd If42测试实现实现根底业务功能的脚本依次的,写出付款账户编号,及开户行的脚本:43测试实现实现根底业务功能的脚本然后是收款方外部账户的信息。采取每次都重新录入的原那么,来输入收款方外部账户的信息。由于是输入框,就不需要判断是否为

20、空了。脚本如下:44测试实现实现根底业务功能的脚本接着,录入付款金额等信息,并点击“保存按钮。注意保存按钮的文字的前后均有空格,描述这个button时,也要保存空格。45测试实现实现根底业务功能的脚本关闭弹出对话框。注意:弹出对话框中的对象,属于windows对象,不是Web对象,因此其属性的识别也不一样。如弹出框的“确定按钮,其类别就是WinButton, 而不是WebButton,识别的属性也改成text了。在这里,是假设了银行付款业务通过了所有的页面和后台的校验。如果要检查输入的数据是否能够通过程序校验,需要写一些脚本来实现。46测试实现实现根底业务功能的脚本到此,一个简单的银行付款-新

21、增的功能就完成了。最后再加上一句话:Reporter.ReportEvent micPass,银行付款-新增,完成“最终输出的报告就会显示“银行付款-新增功能成功完成的字样。其中,micPass是表示事件的状态:0或micPass 表示该事件通过1或micFail 表示该事件失败2或micDone 表示该事件完成注意,完成与通过的区别3或micWarning 表示生成警告信息47测试实现实现根底业务功能的脚本编写“银行付款-复核的脚本银行付款-复核的页面分两个,一个是匹配复核信息,一个是复核页面。首先还是解析传入参数:现在开始要使用传出参数了。48测试实现实现根底业务功能的脚本输入匹配信息,点

22、击“匹配按钮:49测试实现实现根底业务功能的脚本由于匹配时,有时能完全匹配,有时又不能完全匹配。这里就需要增加一个判断。分析事件:如果匹配上的话,那么就直接显示单据信息,如果不能匹配的话,就要弹出提示框显示。而且如果是脚本的话,大多数时候是能匹配上的。因此,判断条件为,如果页面上存在交易编号的输入框,那么就认为匹配上了,如果有弹出框,且弹出框的内容为“无匹配信息的话,那么就认为没有匹配上。具体的脚本如下:50测试实现实现根底业务功能的脚本51测试实现实现根底业务功能的脚本这段脚本中有如下内容需要解释:If browser(creationTime:=1).Page(index:=0).WebE

23、dit(name:=textfield2352).Exist Then这句话的意思是说,如果存在name属性为textfield2352的输入框就是交易编号的输入框,开发人员在写jsp页面时,没有把这个输入框的名称改正来的话,那么Exist: 指示 QuickTest 等待翻开窗口或显示对象。Exist 语句返回一个布尔值,指示对象当前是否存在。如果使用.Exist(20),就表示等待20秒,不参加等待时间,取系统默认的等待时间。等待时间的设置在File-Setting菜单中。如以下图。如果在无人值守的情况下,还需要使用场景恢复机制。这个需要另外的PPT说明。52测试实现实现根底业务功能的脚本53测试实现实现根底业务功能的脚本parameter(outStr)=Browser(creationTime:=1).Page(index:=0).WebEdit(name:=textfield2352).GetROProperty(value)这句话的意思是说,把交易编号的值赋给本Action的传出参数ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论