个人简介

        51Testing论坛测试工具栏目版主,具备多年开发和测试工作经验。参与过CRM软件产品研发,主持并参与过福建移动、江苏移动、新疆移动BOSS系统等大型项目的测试管理、测试设计和测试执行,有丰富的项目实战经验,对自动化测试实施有深刻的认识。

关于他

        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之类的。

关于测试工具QTP

        51Testing:QTP的优点、特点、缺点、难点。

        宋锋:优点:使得你的用例可以高度复用。

        特点:简单易学。

        缺点:对象识别的支持还是有些欠缺。软件本身有些BUG历经多次版本,始终未得到修复。

        难点:让你的脚本按照你的需求一马平川的从头Run到尾,很难。对象识别故障的解决就像人类的温饱问题一样,是最原始也是最基础的。然后才是自动化框架的架设——这已经是属于另一个境界的问题了。

        51Testing:最多的运用在哪些测试工作中?(可以举具体实例说明最好)

        宋锋:QTP的特点在于高度复用,在任何相关场合都能得以应用。最典型的是在Regression Testing中。其实在Configuration Testing方向,实战性非常好,可以大量省去手工测试的时间。

        51Testing:关于自动化测试和手工测试。我们常常在论坛上看到类似于“手工测试是没有技术含量的“之类的讨论,您怎么看?怎么样正确的看待自动化测试和手工测试的关系。

        宋锋:这让我想起刚进少林寺的张君宝(少年张三丰),师傅总是让他砍柴、挑水。为什么要砍柴、挑水,这个道理不必再解释了吧?呵呵……

        51Testing:自动化测试框架这个话题现在好像很流行,能不能给大家介绍下自动化测试框架是什么?能具体谈谈吗?

        宋锋:框架本身是抽象的东西,它没有具体的形状,它只是一种思想,它的目的是为了高效、高度复用脚本,同时把所有活动尽可能多的对接起来。理想的自动化是让人做尽可能少的事,让机器尽可能多的帮你做事。

        在这种思想的传递下,自动化框架从最原始的script-object形式,走向Data-Driven(data-script-object)形式,继而走向Keyword-Driven(keyword-data-script-object)形式,最后发展为今天的AOM,把软件研发的所有活动纳入进来,最终你会发现“设计=执行”,当你做好需求的时候,设计框架自动生成了(包括测试框架)、代码自动生成了……WOW!很棒,不是吗?而一旦你变更了需求,你可以不必关心再去同步你的设计、你的编码,你可以不必关心再次去验证新的需求项……所有的工作,这个框架帮你全部完成。那个时候,我们的软件研发团队不再有Designer,不再有Developer,不再有Tester。很美妙,不是吗?

        但我描述的是最理想的状态(可以称之为“乌托邦”),我想说的是,人类对于理想的追求永无止境,自动化框架的追求同样也不会有尽头——如果有的话,那就是“Frameworkless(无框架的框架)”,返璞归真,有点像老子的思想,不是吗?但Frameworkless是真的,早晚的事。

        回到现实中来,以国内目前的测试水平来讲,我们的自动化不必追求大而全,能把配置层、数据层、代码层、对象层、报告层和主控层分离开来,就很不错了。这是我目前所提倡采用的框架。

他的精彩原创进入他的博客>>

关于我们 | 会员注册 | 联系我们 | 站点地图 | 沪ICP备05003035号

Copyright©51testing.com 2003-2019, All Rights Reserved