51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 11467|回复: 42
打印 上一主题 下一主题

[原创] 【运行速度】对象库 与 描述性

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-13 12:53:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
场景:
     1,使用了QTP论坛页面中某个主题的连接link
    2,为了公平起见,使用先把browser,page等对象先添加进对象库,使用描述时候只使用link点击才测试速度
     3,对象库中的link对象属性就使用了html tag 与 text

方法:   一个方法至少运行5次                                
1,browser("...")page("....").link("....").click
平均时间是:0.501 sec

2,browser("....")page("....").link("html tag:=...","text:=....").click
平均时间是:1.031 sec

3,dim a
set a =description.creat
a("html tag:=").value=....
a("text:=").value=....
browser("....")page("....").link(a).click
平均时间是:1.060 sec      

4,browser("....")page("....").link("html tag:=...","text:=....","x:="...,"y:="....).click
平均时间:0.750 sec

由上面数据(可能有点不太科学)可以得到的结论如下:
1,QTP的对象库运行速度比描述的速度有优势,但是是建立在忽悠用户的基础上(带了点感情色彩)。为什么这么说呢?
   使用对象库的测试,速度确实一目了然,我们在对象库中看到的属性也就只有html tag 与value,而我们使用描述方法中使用的也是这2个,速度却是将近一半的差距。但是后来在第四个方法中,简单的添加进x,y的相对坐标后,速度却可以提高0.3sec之多?!这说明了,在描述的时候,只要给的有效属性值越多,找到对象速度越快!
   为什么说忽悠用户呢?我这人心眼特坏,好吧,对象库你不老实,说明只用html tag和text的,哪么我就给你改,我随便在论坛顶了一个帖子,那个原来的帖子位置变了,大家猜用的平均时间是多少?0.653sec(有高无减)
2,论坛有人说是先拟定和虚拟的对象出来,这个说法很不科学。
3,由上面的结果可以看到了对象库的优势!这点我也不得不承认(不喜欢犯规的人),描述的速度没有对象库实现代码的速度快,或者到这里也就应验了那句话,对象库是QTP的精华。
4,可以这么说,如果对项目的要求速度不高,可以使用描述,而且是测试人员在这个过程中享受编程乐趣的时候,大家喜欢就干吧。对于对象库来说,速度确实快(还是那句话,你作弊),而且代码速度高,适合新手(自然不是说那些用到出神入化的高手),入手快,见效好。
这就好比中药与西药。中药重调理,西药重速度...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

43#
发表于 2008-8-25 10:33:11 | 只看该作者
原帖由 yabest 于 2008-8-21 14:40 发表


这个当然不一致了,所以可以用模式匹配url或者title(用'|'或者'.*'通配符),简单设置一下,就一劳永逸了。

磨刀不误砍柴工的!

比起你描述性编程还得手工写一行行代码,一处界面变动了,不知道要到哪里修 ...


为什么使用描述性编程,一处界面变动了,就要到处去找地方修改呢?一处界面变动,影响到的最多是一个模块或者子模块,其它模块如果都是调用该模块来进行该界面上的操作,那么改动只会局限在某个Action或者Function。如果该界面实在是难以写成一个通用模块来复用,那么还可以尝试全文查找替换嘛。

btw,按模块来划分Test,按子模块来划分Action的方式来组织可复用脚本的结构,个人觉得还是好用些,也许是用习惯咯~
回复 支持 反对

使用道具 举报

该用户从未签到

42#
发表于 2008-8-23 23:24:06 | 只看该作者

欢迎加入软件测试群60709105

60709105
回复 支持 反对

使用道具 举报

该用户从未签到

41#
发表于 2008-8-21 14:40:50 | 只看该作者
原帖由 假装不在 于 2008-8-21 11:59 发表
一般例如你说的修改或者增加,它的URL很大的可能不一致。


这个当然不一致了,所以可以用模式匹配url或者title(用'|'或者'.*'通配符),简单设置一下,就一劳永逸了。

磨刀不误砍柴工的!

比起你描述性编程还得手工写一行行代码,一处界面变动了,不知道要到哪里修改上n处的脚本,实在是好太多了。
回复 支持 反对

使用道具 举报

该用户从未签到

40#
发表于 2008-8-21 14:34:49 | 只看该作者
原帖由 hsjzfling 于 2008-8-21 12:02 发表


这样确实会比较舒服,但是仅仅依靠页面的相似性来划分,概念比较模糊啊。
我希望的是能有一个明确的统一的规范,让其他同事在开发新脚本的时候能够有法可依,这样做出来的脚本和我自己做的相比,除了个别细节上 ...


这个可以先一个人把各page对象划分好建好了,其他人就可以直接添加对象到所属page里去了。
回复 支持 反对

使用道具 举报

该用户从未签到

39#
发表于 2008-8-21 12:02:08 | 只看该作者
原帖由 yabest 于 2008-8-21 10:46 发表


不用对模块的概念这么严格,我们的目的是将对象分开管理。

主要是对象太多了,都放在一个page下太多太乱了。所以把对象按页面分开存放,相似内容的页面共用一个page!

就像切蛋糕一样,切多大、切几块都可 ...


这样确实会比较舒服,但是仅仅依靠页面的相似性来划分,概念比较模糊啊。
我希望的是能有一个明确的统一的规范,让其他同事在开发新脚本的时候能够有法可依,这样做出来的脚本和我自己做的相比,除了个别细节上的处理外,就基本不会有什么差别了,而其他人维护的时候也会更方便一些。
我想严格控制模块的概念也就在于此。
回复 支持 反对

使用道具 举报

该用户从未签到

38#
 楼主| 发表于 2008-8-21 12:00:08 | 只看该作者
所以说么,大家还是用描述的好,方便...
回复 支持 反对

使用道具 举报

该用户从未签到

37#
 楼主| 发表于 2008-8-21 11:59:15 | 只看该作者
一般例如你说的修改或者增加,它的URL很大的可能不一致。
回复 支持 反对

使用道具 举报

该用户从未签到

36#
发表于 2008-8-21 10:50:02 | 只看该作者
原帖由 假装不在 于 2008-8-21 10:32 发表
page我们一般都是直接page("index:=0")
但这里我们说的是对象库,在这种情况,我可能会参数化title,至于url我不用这个。
哪么每次要用这个page时候,修改它的参数title就可以用了。
或者把标题给zz化。


page和url都可以,看哪个好区分页面,就用哪一个!
回复 支持 反对

使用道具 举报

该用户从未签到

35#
发表于 2008-8-21 10:46:24 | 只看该作者
原帖由 hsjzfling 于 2008-8-21 10:10 发表


如果能简单的按照模块来划分就好了。。。按照模块来划分还是得根据page的url属性吧(title更不用考虑了),但即使是同一个模块,有些并未链接到其它模块的弹出页面url除了前一段同一环境的IP一样,后面部分完全不同 ...


不用对模块的概念这么严格,我们的目的是将对象分开管理。

主要是对象太多了,都放在一个page下太多太乱了。所以把对象按页面分开存放,相似内容的页面共用一个page!

就像切蛋糕一样,切多大、切几块都可以,只要你觉得舒服就行。
回复 支持 反对

使用道具 举报

该用户从未签到

34#
 楼主| 发表于 2008-8-21 10:32:04 | 只看该作者

回复 33# 的帖子

page我们一般都是直接page("index:=0")
但这里我们说的是对象库,在这种情况,我可能会参数化title,至于url我不用这个。
哪么每次要用这个page时候,修改它的参数title就可以用了。
或者把标题给zz化。
回复 支持 反对

使用道具 举报

该用户从未签到

33#
发表于 2008-8-21 10:10:31 | 只看该作者
原帖由 yabest 于 2008-8-20 17:00 发表
哈哈,笑死了,没叫你每个页面都设置一个page对象。

适当的按照模块来划分page,这样相似的对象会放在同一个page下,不相似的对象会放在不同的page下,就又简单又好管理啦!


如果能简单的按照模块来划分就好了。。。按照模块来划分还是得根据page的url属性吧(title更不用考虑了),但即使是同一个模块,有些并未链接到其它模块的弹出页面url除了前一段同一环境的IP一样,后面部分完全不同,当然这和代码的规范相关,但这样的话,同一模块也只能用多个page了。

还有一种情况,有几个模块很庞大,子功能非常多,这时候按照模块来划分的话一个page中的对象就太多了,如果特殊的来处理,按子模块划分,那么标准就不明确了。我自己用是没关系,但是要写成文档确定规范和标准,告诉其他同事怎么用,貌似就不太好了。

继续请教yabest的高招
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2008-8-21 09:56:30 | 只看该作者
不是啊,比如用户管理模块里的添加用户、修改用户、查看用户几个页面的内容都是相似的,里面的对象也基本是一样的。

那么这几个用户管理页面都可以共用一个page对象,这些页面里的对象都可以放在这个page下,这样可以使得对象的管理既简单又清晰,既减少了冗余又不会混乱。
回复 支持 反对

使用道具 举报

该用户从未签到

31#
 楼主| 发表于 2008-8-21 09:36:47 | 只看该作者
原帖由 yabest 于 2008-8-20 17:00 发表
哈哈,笑死了,没叫你每个页面都设置一个page对象。

适当的按照模块来划分page,这样相似的对象会放在同一个page下,不相似的对象会放在不同的page下,就又简单又好管理啦!



还没死吧....
能说下“按照模块划分”是怎么做呢?“相似对象”是指例如webedit之类的对象?
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2008-8-20 17:00:24 | 只看该作者
哈哈,笑死了,没叫你每个页面都设置一个page对象。

适当的按照模块来划分page,这样相似的对象会放在同一个page下,不相似的对象会放在不同的page下,就又简单又好管理啦!
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2008-8-20 16:32:37 | 只看该作者
原帖由 yabest 于 2008-8-14 16:59 发表


做不好的话,你要先反省一下自己


框架的结构大致定好了,下午开始录脚本,发现所有对象都放在一个对象库中管理实在有点麻烦。。。

虽然用url属性并使用正则表达式确实能够把对象都放在对应的页面中,但貌似也太麻烦了点,上百个页面就得强暴对象库上百次,它不累我累了。。。

难道是yabest兄还私藏了什么绝招~~
回复 支持 反对

使用道具 举报

该用户从未签到

28#
 楼主| 发表于 2008-8-18 10:36:25 | 只看该作者
原帖由 ylm77ojn 于 2008-8-17 01:21 发表
使用描述性编程肯定慢啊,想下,qtp要去系统中寻找匹配的对象,多废时间啊,呵呵



使用对象库同样也需要去系统中查找匹配对象,谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2008-8-17 01:21:08 | 只看该作者
使用描述性编程肯定慢啊,想下,qtp要去系统中寻找匹配的对象,多废时间啊,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2008-8-15 09:08:34 | 只看该作者
觉得yabest的方案不错,呵呵,基本上用出了QTP的精华,呵呵,只要运行合理,应该是木有问题的
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2008-8-14 17:09:35 | 只看该作者
原帖由 kevin_swpi 于 2008-8-13 17:03 发表

目前我就是用的这样的方式
不过我在想  函数多了...如何管理比较有效....

要准备个list菜单..不然N久后
我都不晓得都有那些函数了...


这个肯定是要的,我们是写一个Excel list文件,里面分模块写了各函数的说明,参数含义,返回值等等

这样大家用时,才知道有哪些函数可以用
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-10-5 17:18 , Processed in 0.126648 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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