宋锋专访:他和他的QTP

发表于:2009-10-20 14:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing    来源:51Testing软件测试网原创

宋锋个人简介:

51Testing论坛帐号songfun测试工具栏目版主。原福建新大陆软件工程有限公司测试经理,现任51Testing高级讲师。具备多年开发和测试工作经验。参与过CRM软件产品研发,主持并参与过福建移动、江苏移动、新疆移动BOSS系统及相关大型项目的测试管理、测试设计和测试执行,有丰富的项目实战经验,对自动化测试实施具有深刻的认识。

专题地址:http://www.51testing.com/zhuanti/qtp/qtp.htm

关于他:

  51Testing:说说您的职业发展历程吧。

  宋锋:很普通很简单,从开发做起,然后做测试、再到测试管理。现在的工作是讲师——在我看来,这是一个新的高度,以前是你自己会就可以了,现在是不但自己会还要让别人也会。

  51Testing:职业发展过程中让您印象深刻的困难或者事情?

  宋锋:每个做技术的人都会遇到职业发展的困惑期,比如是继续钻研技术呢,还是向管理发展?这可能会反复,当它到来的时候,你会陷于困惑,这个时候就要学会自我调节。

关于QTP学习

  51Testing:什么时候开始接触QTP的?

  宋锋:04年开始接触AQT(Astra QuickTest) 6.5,也就是今天QTP的前身。

  第一份工作,也就是刚开始做开发的时候,曾经和同事为了做数据迁移,手工做了几天复制黏贴的工作。

  我是很不喜欢做机械式工作的人,不喜欢重复,觉得那是在浪费时间浪费生命。我喜欢新鲜感,喜欢创造性的事情。那次的经历就促使我去思考自动化的事情(不是“自动化测试”而是“自动化”)。

  当时没听过有个软件叫QuickTest,连WinRunner都没听过。自己用VB写了个自动化软件来实现这些功能,用的多是VBA COM+、WSH、ADO之类的技术。

  后来认识了个做测试的女孩,看到她在用WinRunner和LoadRunner,觉得这软件很神奇,随后开始了QTP之路。

  51Testing:学习过程中碰到过什么技术困难和瓶颈吗?

  宋锋:困难主要在于计算机知识面的广度和编程的基础。瓶颈主要在于相关学习资料的匮乏(尤其是中文的)。

  当然,这些都不至于影响你最终把问题解决掉,只不过会走一些弯路——所以我觉得今天51Testing的同学很幸运,我可以充当他们的“长江前浪”,让他们少走一些弯路。

  51Testing:为新人们提供一个从入门到精通的学习方法和思路?

  宋锋:要重视基础知识的学习,尤其是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之类的。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号