宋锋:要重视基础知识的学习,尤其是Windows编程,它是你学好QTP的内功。
要注重原理的掌握,否则只会头痛医头脚痛医脚,知其然未知其所以然。
思想好比内功心法,工具好比天下绝学,内功深厚的人任何招式都能随心所欲挥洒自如。所谓“草木竹石不滞于物”,就是这个道理。
51Testing:能再具体一些吗?
宋锋:好。我具体介绍一下学习QTP的几个过程。
首先,在掌握QTP之前,最好先把编程的基础打好——这也是我所强调的内功。QTP采用的是VBScript脚本引擎,因此可以从VBScript的编程语法学起,这包括VBScript自带的一系列丰富的函数库,尤其是字符串操作的相关函数。在此基础上,需要掌握使用VBScript访问各种对象的技术,因为自动化测试做到一定程度就要开始组建自动化测试框架了,而这个框架无论采用Data-Driven思想还是Keyword-Driven思想,都需要去操作各种Windows相关的对象,比如Windows API、WSH(Windows脚本宿主)和WMI(Windows管理规范)。还有各种文件对象的访问技术,比如访问文本文件的FSO(File System Object)、访问XML的DOM(Document Object Model)、访问Excel的EOM(Excel Object Model)以及访问数据库的ADO(ActiveX Data Object),都需要掌握。
其次,要深入了解QTP对象识别的原理和本质。什么是强制属性,什么是辅助属性,什么是顺序标识符,什么是智能识别,它们之间是什么关系,有没有前后顺序?还有就是对象库(Object Repository)和对象类型库(Object Identification),它们之间又有什么联系,都需要学习者去深度了解。
接下来,要掌握QTP最常用的Output Value和Checkpoint。Output Value也就是输出值,可以获取被测程序的实际输出结果;而Checkpoint能够把获取到的实际结果和预先设定好的期望值做比较,也就是所谓的检查点。QTP提供了一组非常丰富的输出值和检查点,方便自动化测试工程师使用它们快速建立测试场景——如果能用好它们,则可以很大程度上提高脚本开发的效率。
再下来,就是要把QTP的参数化功能用熟。因为自动化测试往往需要批量的执行测试用例,所以QTP提供了一种把脚本和参数分离的技术,也就是数据驱动——通过把测试用例的参数参数化到DataTable或者环境变量中,达到循环执行测试用例的目的。QTP中可以被参数化的对象有很多,对象的名称可以参数化,对象的属性值可以参数化,对象的方法的参数也可以参数化,初学者只要围绕着这几个点就可以把参数化功能掌握的很好。
掌握了以上技术之后,接下来还需要掌握各种对象识别故障的解决方案技术。比如虚拟对象、标准类映射等。错误的现象千千万万,但万变不离其宗,掌握了其内在规律,对象识别故障的问题往往很容易解决。
再往下就是QTP容错技术。这里我们把它称之为场景恢复技术。应用程序就像一辆车子一样,当你失控之时,车子会驶向哪个臭水沟你都不知道——但至少你预料到可能会出错,只是不知道什么时候出错而已。这时候你就可以把一些突发情况的解决方案事先设计好,这就是场景恢复技术。与之相关的还有VBScript里的容错处理技术,可以结合在一起学习。
最后,又回到了VBScript上——当我们开始搭建自动化测试框架,就要去了解QTP自身的对象访问技术,也就是 AOM(Automation Object Model)。QTP自己就是一个对象,它拥有自己的对象模型框架,通过编程可以驱动这个对象模型,来完成我们的自动化测试框架。具体的资料可以参考QTP的帮助文档,写的很全。
以上我所说的只是围绕着QTP展开的几个学习关键点,其实做自动化测试同样需要你有很广的知识面,比如对操作系统、计算机网络、数据库以及当今一些主流的技术的全面了解。所以说“路漫漫其修远兮”,需要大家的日积月累,才能把自动化学好、用好、做好。
51Testing:推荐一些书或者资料给在学习QTP的朋友吧。
宋锋:最好的资料就是官方帮助。QTP的帮助非常全,而且有很多代码示例以及视频。
其次,就是Google,要学会去搜索。
当然还有一些知名的QTP网站,比如AdvancedQTP之类的。