51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 15231|回复: 46
打印 上一主题 下一主题

[原创] 让QTP走下神坛--SilkTest 卷土重来!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-7-4 15:09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 songfun 于 2013-7-4 22:21 编辑

参考原帖:http://www.51testing.com/?uid-35-action-viewspace-itemid-848659
业内但凡玩过QTP的,多半都知道songfun的名字,多少读过几篇我写的关于QTP的文章。然而今天,作为捧红它的一员,我决定亲自推翻它,让它从神坛走下。

前面博文说了QTP已死,这里要谈谈最近势头正劲的 SilkTest 。
众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系、IBM RobotJ (RFT)系、Borland Segue SilkTest系,但是几年下来,QTP在国内和国外都将同类工具远远甩在身后几条街。即使后起之秀Web界翘楚Selenium也只能将超越QTP作为自己终身己任,以至于连名字上都要以 Selenium(硒) 克一下它的偶像 Mercury(汞,硒解汞毒)。
但是时过境迁,SilkTest 已经不再是当年的那个SilkTest,QTP也不再是当年的QTP。2013年的自动化测试工具因为QTP的裹足不前和SilkTest 的浴火重生变得有了味道。
好吧,一定有人要站出来说QTP现在的市场份额在国内的仍然有60%,SilkTest还远未成气候,而Selenium只能进行B/S的自动化,不可能取代之……我只想说,这几年以来QTP并无太大建树,除了界面更加华丽,兼容性更差,更耗资源,内核未做更新,就是多了一些华而不实噱头级别的功能特性和某几个小功能——真的一直没有太大变化,按照这样的趋势,QTP很有可能成为下一个WinRunner。
好吧,最近网站和论坛正在热捧 WinRunner,好多朋友连这个名字都没听过,跑个题,告诉大家 曾经的WinRunner就像今天的QTP一样统领自动化领域的武林,如果大家去看国外最大的SQAForum就会看到它的历史回帖数在今天仍然跻进 Top 3,但是如果你去 bbs.51testing.com 的论坛看看它目前的人气那真是令人嗟叹,整个季度的回帖数不足10篇!
QTP可能会变成下一个WinRunner,作为使用了QTP 十年之久的我从感情上有些舍不得,但是必须面对的要去面对,我们应该拥抱变化。
好吧,闲话少说,以下横向PK两大商业级自动化测试工具:

(一)编程语言:
QTP一直以来都使用 VBScript. 作为自己的引擎,这在一定程度上降低了学习的成本,确实吸引了很多初学者来学习和使用QTP。
但 VBScript. 不是一个纯粹的面向对象编程语言,除了可以封装Class,是不能继承和多态的。直接一点说,这样天生缺陷使得QTP的重用性从骨子里就很差,执行效率还很低!
而SilkTest呢,可以支持 .Net, C#, Java, 以及它自身的 4Test,这本身就可以吸引一大批编程基础扎实的开发人员参与到自动化的实施过程中,而它强大的面向对象基因,强大的重用性,强大的维护性(甚至可以轻而易举进行版本管理,学过QTP的同学都知道,QTP所谓的简单只是入门简单,后期维护是非常恐怖的),极高的开发效率更是远超QTP。


(二)检查点(Checkpoint)
QTP的检查点一向不伦不类,好像基于对象库(因为是在对象库中才能看属性),又好像脱离于对象库(因为不是所有的检查点都可以进行对象模式的维护管理,而Checkpoints和Test Objects是并列节点不是归属关系),这在开发过程中被很多朋友直接抛弃,改用其他手段做验证(比如经典的 GetRoProperty)。
而SilkTest呢,直接通过代码秀出自己要检查的对象的属性等信息,简单易懂不说,维护方便很多——毕竟,难道你喜欢一边在Expert View里编程一边在对象库里看对象吗?累不累啊?

(三)“录制/回放”
QTP的录制分为:标准录制模式、低级别录制模式(WinObject对象模式)、模拟录制模式(模拟鼠标运动轨迹)。在视图上采用了业务专家(SME)的 Keyword View和编程人员的 Expert View。
总体来说还算不错,除了专家视图模式下的编程功能太坑爹。
而SilkTest呢,有 SilkWorkBench、Silk4J、Silk4Net、SilkClassic等一堆的IDE,支持VB.Net、C#、Java等IDE,真的觉得假如你是团队化开发自动化测试脚本的话,SilkTest的优势要比 QTP明显很多。

(四)脚本
QTP的脚本我一直不喜欢,因为不是纯文本。它在创建工程的时候(QTP中的工程叫Test,而不叫 Project),会生成一堆的资源文件,比如ObjectRepository.bdb、Resource.mtr,还有截图目录SnpaShots目录,而脚本代码放在 Script.mts 中,还偏偏在代码行后附着了 Active Screen关联的图片信息。
另外启动信息非要整在 Action0 这个目录里面,这种规划思路很不好,过度分离的结果是你维护的时候不得不关注一大堆地方。
而SilkTest呢,就是单一的脚本文件,我即使不开工具也可以直接修改。简单即美,难道不是么?

(五)异常捕获、场景恢复
QTP的场景设计也很复杂,又是独立于脚本(脚本里看不到),在脚本外进行配置(类似resource),需要开发者思路很清晰的规划它可能在什么地方出现什么错误、怎么处理,最糟糕的是可读性极差,假如你在场景里面还有Function Call还得再配一个外部qfl或vbs文件,而如果引发了迭代还要在另一个Settings中做迭代设置,否则你场景恢复的时候可能莫名其妙的调起了好几遍自己的应用。一句话,真的很坑爹,不是一般的高手搞不定它。
而SilkTest呢,自己编程实现,开箱即用,真正的 7*24小时支持。

(六)插件支持(Add-ins)
QTP每个编程语言都需要一个插件,通过插件来识别对象。而有时候这种插件加载显得很不灵活,比如你勾选插件进去以后居然没法再添加,这什么易用性啊?
而SilkTest呢,不需要安装这个那个插件。一句话:哪儿那么多麻烦啊。

(七)Web 2.0支持
QTP对于 Web 2.0 的支持,我连写的欲望都没有,因为实在太差了! 什么Ajax/DHTML,什么Flex,全部都不认(或者干脆整个窗口认为ActiveX),……你真的想用是吧,好,激活object,通过native object调用HTML DOM对象。那么这样一来就很强大了吗?NO,NO,NO,穿上了钢铁侠盔甲的QTP顶多跟 Selenium RC(也就是Selenium 1.0)打个平手,因为原理都是通过 JavaScript注入HTML DOM来实现的(一样的可以采用innerHTML赋值,可以RunScript),跟WebDriver(Selenium 2.0)就没法比了。
可以说,QTP曾几何时打败 WinRunner的 关键就是Web 1.0 的支持超强,可如今死在了自己的最强绝学上。这也是为什么后来给了 Selenium 以可趁之机的地方!
但是 Selenium 的强项在于纯HTML/JS应用,对于 Flex基本无能为力。
而反观 SilkTest,全面支持 Ajax/DHTML,Flex/Adobe Air,全面支持 .Net 4.0,即使 Adobe公司自己也是选择SilkTest作为它的自动化测试工具哦!

(八)参数化、数据驱动
QTP号称自己采用 Keyword-Driven,一种在Data-Driven基础上派生的更高级的扩展驱动理念,而事实上是QTP 直接把数据驱动的框架内嵌在自己的DataTable上,以 DataTable Object的内核结合Action迭代驱动脚本运行。这意味着号称自己是共产主义社会,但其实在封建主义社会。这么说已经很客气了,事实上DataTable并不好用,在实际项目中应用不多,一般往往采用外部文件(文本、csv/excel格式、数据库、XML)做配置,扩展性比DataTable好多了。
而且坑爹的是,我还要爆料一下,QTP从诞生到现在,DataTable对象的SetNextRow 一直都有指针重置的Bug,我一般都推荐用SetCurrentRow。
而SilkTest呢,有自己的Data Driven向导,直接操作、快速完成,还支持直接从数据库里面查询测试数据。是不是很霸气侧漏呢?!

(九)平台支持
QTP只能运行在 Windows上,而且对于不同Windows的兼容也有问题,比如我几年前提及的OCR识别验证码技术,现在已经没落了。
而SilkTest呢,通过SilkBean支持 Java的应用,可以在Linux平台上回放哦!

(十)分布式、云计算
QTP本身带有Remote Agent,可以远程调度,但是它的商业意图过度明显,因为这个远程调用是通过Quality Center/ALM来完成的,哥们你知道意味着什么吗?意味着你要去迪拜旅游得自己买个直升机,我擦。。。
Selenium 有 Grid,而SilkTest原生支持,它通过Runtime&Agent技术实现。都明显强过QTP!

(十一)对象库、对象存储
QTP可以说是成也对象库,败也对象库。QTP用单独的文件存储对象库,本地对象库放在ObjectRepository.bdb文件里,共享对象库放在 XXXX.tsr 文件里。管理起来很复杂,有些人看我介绍过高阶的对象库管理,一致都表示很晕。因为对象库的比较、合并、参数化全部都得额外的对象库管理器里去实现,而且实现参数化还要做映射,弄完之后满身的汗。。。
而SilkTest呢,可以直接通过编辑器编辑,是不是灰常的爽?!

(十二)采购成本、ROI
得说“ROI(投资回报率)”的问题了。
QTP以前根据插件收费,后来整合起来销售,美其名曰打包赠送。等于你就是先买个铁钉,人家卖你一套家具让你自己拔出来。
SilkTest不一样,提供了 RunTime的 License模式,降低了采购成本,什么意思呢,就是你买的时候可以分的,看你是编写脚本,还是只是运行脚本,等于说你买个套餐,居然还可以单点套餐里的东西——靠,这还叫套餐吗?没见过这么好的销售啊,哈哈。

(十三)自动化框架
QTP的天生劣势使得它的自动化框架部署非常困难和麻烦,这也是几年前很多人在网上争论不休的原因,大家都说不出一个真正被认可的很实用可以大面积推广的成熟框架。
这点上,跟 Selenium、SilkTest 这种工具本身的设计理念就有很大差异。
试想,你把自己的工具捆绑在QC上、自己的工具上,你怎么拥抱开源?没有开源,你自己的东西怎么集成别人的东西?没有集成,你的自动化能叫框架吗?这不搞笑吗?撑死了就是个半自动化框架。


(十四)成功案例
QTP名气相当大,国内外都是!但是真正成功实施的用户很少,给客户带来的收益很低。
为什么?因为它虽然上手非常快,但是管理维护非常麻烦,没有成熟的 framework 。比如建设银行2007年就开始使用QTP做自动化,迄今没有形成成熟成型的自动化测试体系,一直在通过外部程序控制QTP执行还是QC控制QTP之间徘徊。
而SilkTest呢,它的不足在于不支持 VBScript,哈哈,不够简单,这直接造成了门槛偏高,等于做测试的人一定、必须精通编程,而不能只是能改改脚本那么初级。但是,只要你迈过了前期这个槛,就会发现它的精妙和强大之处。它内置的设计框架,管理比QTP简单非常多,后期收益大,试想,连 Adobe/SAP/Oracle这样的大公司都在拥抱 SilkTest,你觉得它们都是傻瓜吗?而 国际上有几个巨头在使用QTP呢?呵呵,Google用吗?微软用吗?Facebook用吗?呵呵呵……

所以啊,玩QTP其实就是一场空,你玩QTP顶多只是QTP(因为你会VBScript还是做不了JUnit/TestNG/HTMLUnit/Selenium/JMeter等测试,而你会Java以后就能做所有的测试包括SilkTest和Selenium了),用它抢抢票、灌灌水还是可以的,可是,你既然都要花那么多时间学一个工具,为什么不顺便在学自动化工具的同时把编程学会了,一举两得,顺便还拿到了高薪,对不?


好了,说了这么多,大家觉得要不要让QTP走下神坛呢?
当然,我并不是让大家停下自己手中的QTP项目,特别是你们团队如果已经做的比较成熟,这时候就暂时没有必要更换其他工具。但是,要做到心中有数,你不可能靠QTP吃一辈子饭的。自动化测试做到后面已经不仅仅只是工具了,还有流程、模式、管理等等一系列的配合。
有要拍砖的尽管来,但是别搞人身攻击!呵呵呵
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3
回复

使用道具 举报

  • TA的每日心情
    无聊
    前天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2013-7-4 15:25:03 | 只看该作者
    支持宋哥的分享~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2013-7-4 15:42:37 | 只看该作者
    分析的很到位
    对SilkTest知道的太少了,不敢随便评论。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-4 10:34
  • 签到天数: 1208 天

    连续签到: 1 天

    [LV.10]测试总司令

    4#
    发表于 2013-7-5 09:17:14 | 只看该作者
    大开眼界
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-24 08:32
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]测试营长

    5#
    发表于 2013-7-5 14:45:24 | 只看该作者
    支持 Web 2.0 这点让我心动了。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2013-7-9 08:56:55 | 只看该作者
    大力的顶一下~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2013-7-9 09:21:02 | 只看该作者
    不要因为VBS简单就觉得QTP好,懒惰的人会逐渐掉队,让我们进入JAVA和C#的时代吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-5 13:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2013-7-10 09:58:02 | 只看该作者
    Selenium和SilkTest的学习资料比较少吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2013-7-10 19:26:56 | 只看该作者
    对,这个问题,我们很快会解决。关键是中文的资料
    Selenium和SilkTest的学习资料比较少吧
    wsryyffs 发表于 2013-7-10 09:58
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-7-16 15:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2013-7-11 11:08:32 | 只看该作者
    准备学自动化。。。准备安装QTP的。既然如此,转SilkTest试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2013-7-12 13:28:33 | 只看该作者
    谢谢,最近也在看java,正好下一个SilkTest 用一用 谢谢 这篇文章让我受益匪浅
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2013-7-14 14:04:57 | 只看该作者
    不知道

    也许你的QTP不是正版的吧

    我们这里是QTP+SVN+perl进行java applet以及solaris的应用程序测试

    不管测试工具如何强大,最终还是靠个人的idea来改进或发现测试过程

    没必要过多的强调 什么工具好用或不好用, 举个例子,性能测试我们这里通过java+R来实现业务的压力测试

    可以完全不用工具 也可以 用工具 但都是次要的

    我们主要的工作是测试,退一步讲,自动化工具在功能测试中没有那么必要,投入产出极低,可以说自动化测试就是坨X
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2013-7-15 10:29:30 | 只看该作者
    你觉得把QTP工程直接svn ci 上去就叫版本管理了吗?
    呵呵,这其实只是保存到服务器去做备份,当你对脚本做了修改,对象库做了修改,你根本没有办法做diff 或者 merge。虽然你确实可以回滚某个版本,但是跟其他工具相比还有一大截差距。

    其次,自动化的实施是不可能脱离工具的。如果你过度否定了工具,认为QTP/SilkTest/Selenium一无是处,要么就是你根本没有深度体会到工具带来的好处,要么就是没有在一个很好的环境中应用和实施过自动化。再强的人都需要趁手的兵器,孙悟空也需要金箍棒,你以为人人都是如来佛祖念个咒语就管用吗?
    事实上每一个工具都有自己适用的场合,这就好像开发操作系统都用C语言,做应用多用java的道理一样。工具固然不需要过度依赖,但前提是你对工具足够了解。否则事倍功半坐井观天。
    别的不说,拿你说的 java的 JDK 从 1.0 到 1.5 、 1.6、 1.7,不断增加新特性,按你的说法,工具是次要的,那你是不是无所谓用 jdk1.4 还是 jdk 1.6 做开发呢?
    虽说草木竹石不滞于物,但不要歪解这话的意思,完全不用工具或者认为自动化就是X ,只能说明你对自动化的认知还处在非常片面的角度,所以才会得出“自动化工具在功能测试中没有那么必要”这样的结论。
    有句话叫“没有调查就没有发言权”,如果你都没有深刻理解工具的特性,没有体会到它带来的收益成本比,那我只能说:哥们,自动化测试这行 可能不太适合你,还是做手工测试去吧


    不知道

    也许你的QTP不是正版的吧

    我们这里是QTP+SVN+perl进行java applet以及solaris的应用程序测试
    ...
    liyueyue 发表于 2013-7-14 14:04
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2013-7-16 17:19:15 | 只看该作者
    我做QTP也四年了,发现了许多不好的地方,可是目前没机会接触其他的测试工具,求等机会。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2013-7-16 21:54:19 | 只看该作者
    呵呵,又是工具之争,吸引眼球啊!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2013-7-18 09:58:09 | 只看该作者
    非常赞同,2年前,使用QTP,刚开始觉得上手很快,确实方便,但是管理起来真是不方面。。。
    后来接触了Selenium,以及了解PageObject的测试设计模式,就转向了Selenium了,现在又听说SilkTest工具,还支持C#和Java,这个要了解了解
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2013-7-18 21:54:32 | 只看该作者
    有空讨论讨论如何基于自动化测试工具构建自动化测试框架,真正解决自动化测试的项目实施问题吧!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2013-7-19 15:06:41 | 只看该作者
    给个silk test的下载链接啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2013-7-19 15:25:03 | 只看该作者
    楼上的可以看看这个版块http://bbs.51testing.com/forum-127-1.html
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2013-7-19 15:28:03 | 只看该作者
    呵呵,又是工具之争,吸引眼球啊!
    TIB 发表于 2013-7-16 21:54



        工欲善其事,必先利其器。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 08:02 , Processed in 0.084487 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表