|
这里,根据自己的所知,整理一份关于QTP9.2的要点概述。
早先QTP是属于Mercury公司的,后来被HP买下,也就是说,现在当家的是HP公司了。貌似老大的名声更响,但是对于我们这些使用QTP进行测试开发的人来说,感觉QTP的支持、服务,比以前更差了。技术论坛也找不到了,支持电话在庞大的HP产品系列中转来转去,就是找不到管事的人;还有 QTP本身的很多Bugs,什么时候解决?后续版本的update,什么时候出来?(千呼万唤,现在版本似乎到9.5了,距离9.2差不多1年了,却没有大的改进。)叹一个!
1)QTP是一个侧重于功能的回归自动化测试工具;提供了很多插件,如:.NET的,Java的,SAP的,Terminal Emulator的等等,分别用于各自类型的产品测试(每种插件都是要花钱的哟,^_^)。默认提供Web,ActiveX和VB。也就是说,你要是花几十万大洋买了QTP,但是没有购买这些addins,对不起,不支持测试.net或者java或者SAP系统......(哭一个吧)。当然,可以测试标准的Windows32程序。
2)QTP支持的脚本语言是VBScript,这对于测试人员来说,感觉要“舒服”得多(如相比SilkTest采用C语言)。VBScript毕竟是一种松散的、非严格的、普及面很广的语言。
3)QTP支持录制和回放的功能。录制产生的脚本,可以拿来作为自己编写脚本的template。录制时,还支持一种lower level 功能,这个对于QTP不容易识别出来的对象有用,不过它是使用坐标来标识的,对于坐标位置频繁变动的对象,采用这种方式不可行。另外,QTP的编辑器支持两种视图:Keyword模式和Expert模式。Keyword模式想法是好的,提供一个描述近似于原始测试用例的、跟代码无关的视图(我基本很少用,除了查看、管理当前test中各个action的完整流程),而Expert就是代码视图,一般编写脚本都在这个区域。
4)一个有用的工具:Object Spy,可以用来查看Run-time object和Test object属性和方法。
5)QTP通过三类属性来识别对象:a)Mandatory; b)Assitive; c)Ordinal identifiers。大部分情况下,通过对象的一些特定属性值就可以识别对象(类型a)。这些属性可以通过Tools->Object Identification 定义。
5)Object Repository(OR)是QTP存储对象的地方。测试脚本运行后,QTP根据测试脚本代码,从这个对象库中查找相应对象。每个Action可以对应有一个或者多个OR,也可以设置某个OR为 sharable的,这样可以供其他Action使用。注意,使用QTP录制功能时,默认将被测对象放在local OR中,可以通过 Resources->Object Respository,选择Local查看。
6)说到QTP的要点,不得不说Action。Action是QTP组织测试用例的具体形式,拥有自己的DataTable和Object Repository,支持Input和output参数。Action可以设置为share类型的,这样可以被其他test中的Action调用(注意:QTP是不支持在一个test中调用另外一个test的,只有通过sharable action来调用)。
7)如3)所述,一个test中,多个action的流程组织,只有通过Keyword视图查看和删除,在Expert视图中没有办法看到。
8)调用Action可以通过菜单Insert->Call to *** 来实现。QTP提供三种类型的调用方式:a)call to new Action,在当前test中创建一个新的Action;b)call to Copy of Action;c)call to existing action,调用一个re-usable action,如果这个re-usable action来自另外一个test,将以只读的方式插入到当前test中。
9)QTP提供excel 形式的数据表格DataTable,可以用来存放测试数据或参数。DataTable有两种类型:global 和local。QTP为DataTable提供了许多方法供存取数据,在对测试代码进行参数化的时候,这些方法非常有用。
10)环境变量(Environment Variables)。在一个test中,环境变量可以被当前test中所有action共享。环境变量也有两种类型:build in 和user defined。用户自定义的环境变量可以指向一个XML文件,这样可以实现在众多test之间共享变量。
11)QTP可以引用外部的VBS代码库,通过Settings-》Resource加入,也可以ExecuteFile命令在代码中直接执行。这种VBS库可以为所有action和test共享。
12)QTP默认为每个test提供一个测试结果,包括Passed,Failed,Done,Warning和information几种状态类型,可以进行对结果Filter。但是,只能为每个test产生一个testing result,不能为多个testing产生一个总的testing result.
13)描述性编程(DP),一种OR替代方案。正常情况下,不要大量采用DP,维护起来远没有OR方便,也不直观。另外,两种情况下,都可以使用Regular Express,这个在多语言版本测试时非常有用。
14)Recovery Scenario错误现场恢复。运行测试代码过程中,总是有这样那样的不可预料的错误产生,若连续运行多个test,前面一个test的不可预料的错误可能导致后一个test没有机会运行。设置现场恢复处理,可以在前一个test出错后,将被测系统恢复到初始状态,以供后一个test运行。
15)QTP和被测系统(AUT)必须在同一台机器上运行(当然,可以远程控制QTP)
16)QTP对外提供了大量的API和对象,可以利用这些,通过编写Scripts来实现测试的操作、配置、运行和管理完全自动化,这一块可以有很多文章可以做。
17)用QTP编写的测试代码,必须在QTP上运行。由于QTP非常占用内存,其运行时可以设置visible和invisible模式,但是能否将其运行环境裁剪至最小,移植到对性能要求较高的机器上运行?我至今没有看到。 |
|