Pages

Wednesday, April 6, 2011

QTP Tutorial Summary

第一章:QTP测试步骤。 1:Analyze the application 确定应用程序的开发环境,在开启QTP的时候加载相应的add-in(active-X, VB, Web)。确定你需要测试哪些流程(business processes)或者功能(functionality)。思考怎么把流程分割成更小的单元,也就基于那些流程是创建action。这样使得test更加容易理解以及维护。 2:Prepare Resources 基于你的测试需求,确定你需要哪些资源(resource),然后创建这些资源,这些资源一般包括: [1]shared objects repositories,(这个里面包括test objects,这就是你测试的应用程序中的objects)。 [2]function libraries(这个里面存放一些函数,可以加强测试的功能) 3:Create a test and add steps 创建一个空的testà往test中加入action(形成一个test的框架)把之前准备好的resource与对应的action关联起来, 在action下通过关键字加入steps,在这一步,我们可能还需要进行参数设置等操作 4:Enhance the test [1]Add Checkpoint [2]Pparameterize [3]Add logic or loop statement 5:Run and Analyse test 6:报告测试出来的问题 第二章:action Action的类型:internal action:存放在别的test中,但是被应用的action。external action:存储在当前Test中的action。Reusable action允许在任何test中调用的action。Non-reusable action:是一种仅仅只能在当前test中使用的internal action。 A call to a new action:默认为reusable action A call to copy of action:这种action相当于一种internal action,在其他的test中调用该action时,和原test中的该action没有任何关联。 A call to exiting action :这种action只能在存储该action的test中修改,在调用该action的其他test中不能修改。 总结:如何创建action很关键,因为action直接影响到你整个test的架构。把要测试场景分割为多个action。每一个action完成特定的功能。 第三章:创建对象库 Object repository(.trs):包括test object, other type object, check points这些内容。而object repository又分两种类型:shared以及local Ashared object repository:这里面的内容可以在任何action中使用。【注意:我们最好是为我们应用程序或者web的每一个页面分别建立一个shared object repository,这样的话,方便我们在修改维护test的时候找到正确的object】 A local object repository:这里面的内容只能在特定的action中使用。 Test objects(包含在object repository中)以及Run-time objects(不包含在object repository中),关于这两个概念我一直没有理解。通过网上找到的一些资料,终于知道了。转载如下: 【QTP为用户提供了两种操作对象的接口,一种就是对象的封装接口,另一种是对象的自身接口。对象的自身接口是对象控件本身的接口,只要做过软件开发,使用过控件的人应该很清楚。对象的封装接口是QTP为对象封装的另一层接口,它是QTP通过调用对象的自身接口来实现的。两种接口的脚本书写格式的差别在于:自身接口需要在对象名后面加object再加属性名或方法名,封装接口就不用在对象名后面加object。 比如操作JavaEdit对象,通过QTP封装的封装接口,脚本如下: 设置JavaEdit的内容: JavaDialog("Add NE").JavaEdit("NE Name").Set "NE1" 读取JavaEdit的内容: msgbox JavaDialog("Add NE").JavaEdit("NE Name").GetROProperty("value") 如果通过JavaEdit的自身接口,脚本如下 设置JavaEdit的内容: JavaDialog("Add NE").JavaEdit("NE Name").object.setText("NE1") 读取JavaEdit的内容: Msgbox JavaDialog("Add NE").JavaEdit("NE Name").object.getText() QTP执行JavaEdit().Set语句时,是通过执行JavaEdit().object.setText()来实现的。 QTP执行JavaEdit().GetROProperty("value"),是通过执行JavaEdit().object.getText()来实现的。 JavaEdit对象的封装接口Set()和GetROProperty("value"),是QTP封装JavaEdit对象的自身接口setText()和getText()而得来的。 对象的封装接口是QTP使用的缺省接口,我们录制出来的脚本都是使用封装接口,大家用的也都是封装接口。但是封装接口不如自身接口丰富,因为QTP只是封装了部分常用的自身接口嘛。所以我们在需要时,可以绕过封装接口,直接调用对象的自身接口。不过有些自身接口不够稳定,在实践中偶尔会出现问题,但是概率很少。封装接口有相应功能的话,就尽量用封装接口吧!理解了封装接口和自身接口的原理,我们就可以更加灵活的操作对象了。但是我们怎么知道对象都有哪些封装接口和自身接口呢?其实很简单,用对象查看器(Object Spy)查看对象,在查看窗口里有列出这些接口,包括属性和方法。窗口中间有选择栏让你选择Run-time Object或者Test Object,当你选择Run-time Object时,它显示的就是对象的自身接口(自身的属性和方法)当你选择Test Object时,它显示的就是对象的封装接口(封装的属性和方法)明白了这些,你还等什么呢?快拿起对象查看器,看看对象都有哪些封装接口和自身接口,肆意的操作它。 比如执行 JavaDialog("Add NE").JavaEdit("NE Name").object.setVisible(false) 哈哈,你的JavaEdit对象就当场消失不见了!!!此部分内容为转载】 第四章:创建函数以及函数库可以创建自定义的函数放在函数库中,在测试的时候可以将需要的函数库与test结合,那么该Test就可以调用该函数库中的所有函数。(可以用VBS编写QTP脚本)自己编写的函数的后缀(.qfl) 第五章:创建test 创建test 创建action 关联object repository 关联function library 往action中添加step(从object repository中选择object或者自己编写object,描述性编程,或者通过step generator定义一整个step)。 第六章:创建检查点,使用函数添加检查点的方法:1:在record的时候添加 2:直接在修改脚本的过程中添加。 检查点的类型: 1:standard checkpoint 2:image checkpoint 3:table checkpoint 4:page checkpoint5:text checkpoint6:bitmap checkpoint 7:database checkpoint 8:accessibility checkpoint 9:xml checkpoint 10:text area checkpoint 通过函数执行检查:

No comments:

Post a Comment