51Testing软件测试论坛

标题: 解读DP和对象库 [打印本页]

作者: lantianwei    时间: 2008-3-5 10:09
标题: 解读DP和对象库
刚开始学QTP时,用的是对象库,因为对象库简单易学,使用方便;后来慢慢地,有人说描述性编程(简称DP)功能强大,所以也很自然的用起了DP。
          首先说一下我在一个项目中的真实经历:我在之前用QTP做了一个WEB项目,在该项目中全部用了DP,其实原本是想用对象库的,但考虑到用对象库的话,必须严格按照对象库命名规范,比较烦琐,而且那个系统还有一个特殊的地方,就是所以的网页都是在一个PAGE下,那么势必导致所有的子对象都会在一个PAGE下,这样维护起来也是非常麻烦的,不过其实这个问题是可以解决的(yabest兄给了一个比较好的解决方案-http://bbs.51testing.com/thread-102128-1-1.html),大家如果以后遇到也可以参考一下。在整个项目用DP的开发过程中确实发现DP可以提高脚本的编写速度,而且DP的使用起来也非常灵活。但慢慢地随着项目进度的发展,发现项目中还是会有较多的UI发生了改变,这时麻烦的事就来了,需要一个一个地到脚本文件里进行修改,非常麻烦,脚本少还可以处理一下,如果非常多的话,那会晕死人的。还有如果在脚本中不进行一些特殊处理,那么具体定位到出错的对象也是非常困难的事(我们项目用的是FUNCTION,可能ACTION会好些)。因此可以看出DP将会导致了一个非常严重的问题:项目后期对象的维护将会变地非常困难!
           如果用DP,有什么办法可以避免这种问题呢?也许有人会说有,自己再建个XML来放置对象库吧,这样就可以通过外部文件修改对象了啊!其实不知道大家有没有发现,如果我们用一个XML来管理对象库和我们用QTP的对象库来管理有什么本质区别吗?其实他们的本质是一样的,都是一个外部文件,目的都是可以独立地对对象库进行管理维护,而且自定义的XML远没有QTP自身提供的对象库功能强大!那么我们何必要舍近求远呢?硬要自己搞出一个东西来呢!可能有时还会沾沾自喜地和别人炫耀:看,我把DP的对象处理问题解决了!呵呵。。。。真有点让人哭笑不得!我这里有一个比较好的关于DP的处理工具,是老外写的,应该比我们一般的简单好用,特奉献给热衷于DP的朋友们使用(下载地址:http://www.qantom.shubharaghu.com/html/dor_download.html),具体的使用可以参看该工具自带的说明,确实非常方便!但存在的问题也显而易见!!!
           当然DP并不是没有存在的理由!首先有一个取子对象(ChildObjects)的例子就只有DP可以做到,其他的应该DP可以做到的,对象库也可以办到。还有一个,也就是DP最突出的优势,可能我们平时也不怎么碰到,大家也就可能都不知道DP的核心用处原来是这个,那就是当我们在开发项目时,我们需要自动化测试,软件开发同步进行,而这时因为我们的项目还没有开发出来,那么UI对象就无从说起,所以这时我们要用对象库进行自动化测试显然是不现实的,而这时DP就可以大显神威了,呵呵。。。。我想此时再没有人会对DP抱怨了!
           综合上述,我个人觉得我们在做自动化项目时(如果项目已开发出来)还是应该以对象库为主,DP为辅,要不后期项目的对象库维护将会非常困难(当然你确定你的项目中的对象不发生变化或变化极少除外)。工具中对象库的出现本身就是为了解决对象和脚本的分离,以便更好地对对象进行管理和维护,因此我觉得我们没有必要再吃回头草了。(这里也说一个特例,比如是外包项目,你想偷懒,也可以用DP。哈哈。。。。)
           [以上是本人在学习DP和对象库过程中的一点看法,欢迎大家提出不用看法!]

[ 本帖最后由 lantianwei 于 2008-3-5 10:29 编辑 ]
作者: language_fw    时间: 2008-3-5 10:16
不错!支持一下,正在学习中。。。。。。
作者: ppent    时间: 2008-3-5 10:27
这么说楼主是偏向于用对象库了,我也是这么想的。
另外,你说“在整个项目用DP的开发过程中确实发现DP可以提高脚本的编写速度”,这是为什么呢?用对象库的话,那是慢在哪里?对象库的管理与维护上?
作者: lantianwei    时间: 2008-3-5 10:34
原帖由 ppent 于 2008-3-5 10:27 发表
这么说楼主是偏向于用对象库了,我也是这么想的。
另外,你说“在整个项目用DP的开发过程中确实发现DP可以提高脚本的编写速度”,这是为什么呢?用对象库的话,那是慢在哪里?对象库的管理与维护上?

1.对象库的整理比较麻烦,因为所有的页面都是在一个PAGE下的,那么必须人为的进行划分,否则对象的维护也非常麻烦
2.对象的命名规范问题,这是我想偷懒 ,用DP就没有这个问题了
作者: xiaoyaoke    时间: 2008-3-5 10:38
DP有它的意义所在,个人感觉当项目开发和测试脚本并行开发的时候,DP当然体现了它的意义。然而目前形式,一般功能自动化都是项目后期介入,此时软件开发已经进入开发后期,也经历了大量的手工测试,所以软件相对稳定,功能自动化用来做回归测试。
大多时候我也都使用对象库,正如LZ所说,对象库用起来简单方便,节约了大量的劳动力,而DP往往与正则表达式结合起来用来定义那些动态改变的对象。
作者: hsjzfling    时间: 2008-3-5 11:16
代码中还真还少用到DP。。。除了ChildObjects外,就只有在回复别人问题时候才用——可以省掉对象库截图这一步~~

另外,ls说得不错,自动化测试应该是在产品比较成熟稳定的中后期才会引入的吧,过早开始进行自动化测试成本是不是太高了点,至少得UI相对稳定吧,否则每天更新个版本就得维护一次脚本,累死不说,天天搞些重复维护脚本的体力活,兴趣也都要被磨光了。。。

PS:LS同学能不能换个头像。。。每次看见都特倒胃。。。
作者: higkoo    时间: 2008-3-5 15:00
非常支持你!   描述性编程虽好,可不能贪杯喔!  前不久我也做了一个尝试,所有脚本都用描述性编程,完全不对对象库,发现了一些问题。   它们两者确实是相辅相成的,对象库要为主打!   描述编程本身还有些我认为是缺陷的地方:http://bbs.51testing.com/thread-106282-1-1.html
作者: lantianwei    时间: 2008-3-5 20:11
原帖由 higkoo 于 2008-3-5 15:00 发表
非常支持你!   描述性编程虽好,可不能贪杯喔!  前不久我也做了一个尝试,所有脚本都用描述性编程,完全不对对象库,发现了一些问题。   它们两者确实是相辅相成的,对象库要为主打!   描述编程本身还有些我认为是 ...

非常感谢兄弟的支持!最近看兄弟在QTP板块发表的帖子很多,有时间可以互相交流一下.
作者: jaunty    时间: 2008-3-14 09:26
这里我看到你一直在讨论对象库的问题,我想问你提到的对象库的使用是指直接的录制回放再修改,还是指建立自己的对象库,然后关键字驱动脚本?
不太理解。我作QTP时间还不长。
作者: lantianwei    时间: 2008-3-14 10:24
原帖由 jaunty 于 2008-3-14 09:26 发表
这里我看到你一直在讨论对象库的问题,我想问你提到的对象库的使用是指直接的录制回放再修改,还是指建立自己的对象库,然后关键字驱动脚本?
不太理解。我作QTP时间还不长。

至于对象库的得到,无论什么方法都可以,只要你觉得适合你就行了.可以录制后再修改,也可以先创建对象库.各有各的优势.
作者: lantianwei    时间: 2008-3-14 10:40
之前和sqafuroms的QTP版主tarun_lalwani交流了一下,他告诉我他们用的是DP,问其理由是方便,灵活.后来我又非常认真的考虑了这个问题,可能我这篇文章写的还是有点偏颇,其实DP和对象库是各有优势的,DP主要是会花费后期的维护时间,而对象库则主要会花费前期对象库建立的时间.所以不能一棒子打死任何一个,如果真的需要得到答案,必须进行一个度量.(而且可能不同的项目度量的结果也会不一样)
作者: walker1020    时间: 2008-3-14 23:32
对象库 和 描述性编程 各有千秋,各有自己的用武之地。为什么一定要比出个 哪个好 那个不好呢? 可能在某些项目上 使用对象库比较好,因为它们的UI比较稳定,应用程序也比较稳定;而有些就比较适合使用 描述性编程,如某些需要动态获取的对象。但更多的时候,是 两者兼备,只是比例不太一样。

[ 本帖最后由 walker1020 于 2008-3-14 23:34 编辑 ]
作者: walker1020    时间: 2008-3-14 23:33
比较它们,没有一个统一的标准。如果有,那也是:如果它适合自己的测试项目,那么它就是最好的。套用一句话,适合的就是最好的。
作者: yabest    时间: 2008-3-15 02:54
一声叹息。。。
作者: walker1020    时间: 2008-3-15 12:55
原帖由 yabest 于 2008-3-15 02:54 发表
一声叹息。。。


叹息什么?
作者: lantianwei    时间: 2008-3-17 10:52
原帖由 yabest 于 2008-3-15 02:54 发表
一声叹息。。。

yabest前辈应该还是比较赞成对象库吧,呵呵...怎么不多给点评价呢?
作者: lantianwei    时间: 2008-3-17 12:37
原帖由 walker1020 于 2008-3-14 23:33 发表
比较它们,没有一个统一的标准。如果有,那也是:如果它适合自己的测试项目,那么它就是最好的。套用一句话,适合的就是最好的。

版主说的不错,适合自己才是最好的!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2