51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: jackymail
打印 上一主题 下一主题

[原创] 描述性编程VS 对象库

[复制链接]

该用户从未签到

101#
发表于 2008-3-11 17:11:18 | 只看该作者
原帖由 yabest 于 2007-8-2 13:28 发表


现在教育都产业化了,我也不能落伍啊!你看,这学费怎么算啊?!sdlkfj3


算我一个~~也愿意把第一个月的工资上交~~
回复 支持 反对

使用道具 举报

该用户从未签到

102#
发表于 2008-3-11 23:08:33 | 只看该作者
原帖由 ccmouse 于 2008-3-11 17:11 发表
算我一个~~也愿意把第一个月的工资上交~~



我的银行帐号已经pm给你了,你寄过来吧,现在是优惠期,打95折
回复 支持 反对

使用道具 举报

该用户从未签到

103#
发表于 2008-3-12 09:51:59 | 只看该作者
原帖由 yabest 于 2008-3-11 23:08 发表



我的银行帐号已经pm给你了,你寄过来吧,现在是优惠期,打95折

极力赞成yabest的方法!
很多人大面积使用描述性编程是因为他们对对象库不很了解,一遇到问题就觉得描述性编程可以解决,其实也未必,描述性编程也未必是高深的表现,白猫黑猫能抓住老鼠就是好猫
让那些喜欢玩弄技术不怕麻烦的多使用描述性编程吧,yabest给他们提供那么多省劲的方法他们反倒不领情,qtp给他们提供了那么宝贵的对象库,他们偏偏看不上。
yabest说话语气激烈,但字字珠玑!!!
鉴于最近跟yabest学习的人比较多,想报名的到我这里,我有黄牛票的!
回复 支持 反对

使用道具 举报

该用户从未签到

104#
发表于 2008-4-11 10:32:58 | 只看该作者
yabest 其实不用那么激动的,大家讨论而已,你之前的有些帖子有点人身攻击了,使用描述性编程和使用对象库都可以。看自己公司怎么用的,我们公司自动化做的还是很初级的,但是也使用描述性编程,有时候确实方便。
我只是说句公道话,不要攻击我哈
回复 支持 反对

使用道具 举报

该用户从未签到

105#
发表于 2008-7-8 09:24:44 | 只看该作者
这个帖子很受用,谢谢大家的讨论
回复 支持 反对

使用道具 举报

该用户从未签到

106#
发表于 2008-7-23 14:45:51 | 只看该作者
yabest 偶看看了回帖实在是。。。艾。
其实描述性编程的优点就是可以更好的做到脚本的共享,比如说我写个新增的校验,那其它人就可以调用我的代码。你用对象库可以做到么??你还不是要去录制然后修改再回放?
其实描述性编程和对象库各有各的优点,看你怎么做了。。但是如果一个项目去用对象库去处理,每个人都去录制脚本你觉得是不是效率很低啊。。
如果我用描述性编程搭好框架,其它人只要写少量的代码然后维护下EXCEL数据就可以了。。如果你还停留在录制、修改、回放你觉得你绝对是体会不到描述性编程的好处。。
还有,描述性编程是可以跨平台的,对象库可以么??若可以操作也是很麻烦的吧!!


两种方法各有各的优点。。没有必要那么激动,谁爱用啥就用啥。。。

[ 本帖最后由 luckxiaot 于 2008-7-23 14:47 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

107#
发表于 2008-7-23 18:00:30 | 只看该作者
原帖由 luckxiaot 于 2008-7-23 14:45 发表
yabest 偶看看了回帖实在是。。。艾。
其实描述性编程的优点就是可以更好的做到脚本的共享,比如说我写个新增的校验,那其它人就可以调用我的代码。你用对象库可以做到么??你还不是要去录制然后修改再回放?
其实 ...


呵呵,不明白你的意思,好像你说的对象库都能做到。
回复 支持 反对

使用道具 举报

该用户从未签到

108#
发表于 2008-7-24 10:38:08 | 只看该作者
原帖由 luckxiaot 于 2008-7-23 14:45 发表
yabest 偶看看了回帖实在是。。。艾。
其实描述性编程的优点就是可以更好的做到脚本的共享,比如说我写个新增的校验,那其它人就可以调用我的代码。你用对象库可以做到么??你还不是要去录制然后修改再回放?
其实 ...


前两个月刚给一个项目做完一套比较完整的框架,包含主要的业务流程处理,大约有1%-2%左右的代码使用描述性编程,基本上都因为比较懒,针对单一代码行的修改懒得再跑到对应页面去重新录制过~~

对于luckxiaot的看法无法认同的~对象库的共享也很方便,在代码改动量大的情况下,录制->修改 比凭空写代码效率要高的多,维护的时候更是如此。新增或者修改某个业务模块,相对于使用描述性编程来说,用对象库只需要在改完后多上传个tsr文件而已,其它人一样能直接拿过去用。描述性编程能做到的,对象库基本都能照样做到~

使用Browser("xxx:xxx").Page("xxx:xxx").Link("xxx:xxx").Click等语句,写起来确实挺爽的,但这种语句一旦太多,用在长时间的回归测试或者系统验证的时候,比如要连续跑个几十个小时,那机器多半会崩溃,因为每一条描述性语句都是会申请新内存的,直到Test执行结束才释放。以前处理这种情况,不得不更改框架结构,把所有test case在一个Test中执行的方式修改为每个test case都得重新打开一个Test。用Description.Create来申请内存,可以即时来释放内存,但那样代码就得写疯了。。。
回复 支持 反对

使用道具 举报

该用户从未签到

109#
发表于 2008-7-24 11:33:02 | 只看该作者
自动化开发也是软件开发,软件开发最怕的就是冗余和杂乱!

对象库的思想就是将 测试脚本 和 对象描述 分离,每个对象只要在对象库里做一次描述就够了,所有对象的描述都放在对象库里统一管理,这种模式是最简单最清晰的。

不要在每行脚本里重复、冗余、分散的描述对象,这样很难管理和维护对象描述。
不要将对象描述和测试脚本混杂在一块,这样的测试脚本很杂乱,很难看的。
回复 支持 反对

使用道具 举报

该用户从未签到

110#
发表于 2008-7-25 13:45:59 | 只看该作者
Function NeedInput(el_page,id_len)
Set dtSheet=GetGlobalSheet(TestDir&"\Data\InsertInfo.xls","Global")
For i =1 to V_NUM
                dtSheet.SetCurrentRow(i) '获取当前行
                get_text= DataTable.Value(el_page,"Global")
                isStatus=DataTable.Value(el_page+"Status","Global")
                codeNum=GetLen(get_text)  '调用函数来获取其字符串长度
                tszf=CheckTszf(get_text)  '调用函数判断其是否含有特殊字符   返回值是 True 和 False;若含有特殊字符则返回True
                If  get_text=""   or  tszf="True"  or  codeNum>id_len Then            
                        browser("browser").page("page").Frame("name:=main").WebEdit("name:=" & el_page).Set get_text
            browser("browser").page("page").Frame("name:=main").WebButton("name:=提交").Click  
                        getStatus=replace(browser("browser").Dialog("text:=Microsoft Internet Explorer").Static("window id:=65535").GetROProperty("text"),vbcrlf,"")  
        If  isStatus=getStatus Then
                    browser("browser").Dialog("text:=Microsoft Internet Explorer").WinButton("text:=确定").Click
            rep micPass,"提示信息" ,"提示信息 :"+getstatus+"正确"
            else
                QTP_Capture(TestDir&"\Pictures")
                        browser("browser").Dialog("text:=Microsoft Internet Explorer").WinButton("text:=确定").Click
                        rep micFail,"提示信息","提示信息:"+getStatus+"不正确"+vbcrlf+"正确的提示信息为:"+isStatus
            End If
            elseif codeNum>0 and codeNum<=id_len then
                    browser("browser").page("page").Frame("name:=main").WebEdit("name:=" & el_page).Set get_text
                        rep micPass,"录入信息" ,"录入信息 :"+get_text+"正确"
                        Exit for
                End If
        Next
ClsGSheet "dtSheet"
End Function


上边的代码是一个对输入域为必输项的一个校验,其中包括特殊字符和长度。。
整个系统只要用到这个校验的地方。。OK。。只要维护要EXCEL表就可以了。。。
这种东西都是个人喜好问题,。。当然我承认他运行的效率没有有对象库好。。但是他的优点也是毋庸置疑的。。
回复 支持 反对

使用道具 举报

该用户从未签到

111#
发表于 2008-7-25 13:48:45 | 只看该作者
其实偶也挺笨的。。不知道在有对象库的时候如何搭建更好的框架。。
所以也请知道的朋友 讲解一下。。学习一下。。
回复 支持 反对

使用道具 举报

该用户从未签到

112#
发表于 2008-7-25 15:54:29 | 只看该作者
你这函数里涉及到的几个对象

browser("browser").page("page").Frame("name:=main").WebEdit("name:=" & el_page)
browser("browser").page("page").Frame("name:=main").WebButton("name:=提交")
browser("browser").Dialog("text:=Microsoft Internet Explorer").Static("window id:=65535")
browser("browser").Dialog("text:=Microsoft Internet Explorer").WinButton("text:=确定")

其中除了第一个WebEdit对象外,其他几个对象都没必要用描述性编程,你看改成下面的对象库方式后,脚本是不是好看太多了?

browser("browser").page("page").Frame("main").WebButton("提交")
browser("browser").Dialog("Microsoft Internet Explorer").Static("Dialog info")
browser("browser").Dialog("Microsoft Internet Explorer").WinButton("确定")

对第一个WebEdit对象,因为这个对象是不特定的,是泛指多个实际的WebEdit对象。
对于这种情况,用描述性编程也是合适的,但是对象库模式也一样能处理的。

具体你可以看我在《QTP识别和操作对象的原理》里所举的例子。
我那例子写得很详细的,相信你看了,也会知道怎么用对象库模式来实现你的函数。
回复 支持 反对

使用道具 举报

该用户从未签到

113#
发表于 2008-7-25 17:59:07 | 只看该作者
你说的对。。是可以改,改后带来的效应是什么??
是你要把那个对象加入对象库,而我就不用了!不需要操作任何对象库就OK了。。
回复 支持 反对

使用道具 举报

该用户从未签到

114#
发表于 2008-7-25 18:31:29 | 只看该作者
定义常量干什么,你要弄个头文件,要定义常量,我不用!

我用到 pi 的时候,我就直接写3.1415926,  我就直接写3.1415926!
用一百次pi,我就直接写一百次3.1415926就好了。
你看,不用定义常量,不用头文件,多方便!!

哪天需要把 pi 的值改为3.14,我就直接改代码好了,只要改一百处代码就好了。根本就不用改头文件,不用改常量。
虽然用常量和头文件时,只要改一处常量值,比改一百处代码少多了,但那也是太麻烦,反正维护头文件和常量定义总是比直接写代码麻烦的。

哪天别人要用我的代码,直接拷过去就好了,不需要拷我的头文件和常量定义,那多麻烦啊!
别人拷过去后,如需要把 pi 调整为3.1415,那他只要直接改代码,只要改一百处代码,根本就不要管什么头文件和常量定义,多好!

反对使用常量!反对使用头文件!

呵呵

[ 本帖最后由 yabest 于 2008-7-25 18:40 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

115#
发表于 2009-3-9 18:04:41 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

116#
发表于 2009-4-1 18:33:42 | 只看该作者
翻出了两年前的强帖,向前辈们拜服
回复 支持 反对

使用道具 举报

该用户从未签到

117#
发表于 2009-4-7 17:35:22 | 只看该作者
很不错的帖子
回复 支持 反对

使用道具 举报

该用户从未签到

118#
发表于 2009-4-8 18:35:58 | 只看该作者
学习了,本人在项目里,刚刚苦苦的思索到底是用描述性编程,还是用对象。这个帖子提供了很好的建议
回复 支持 反对

使用道具 举报

该用户从未签到

119#
发表于 2009-4-8 19:03:26 | 只看该作者
不用特意去怎么样,大家说的都是自己总结出来的经验。
在有足够多的时间和精力及兴趣的前提下,最好的办法就是自己多实践,各种方法都多尝试,然后就会慢慢知道什么情况下用什么方法最合适了
回复 支持 反对

使用道具 举报

该用户从未签到

120#
发表于 2009-8-18 10:05:33 | 只看该作者
haot受益匪浅
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-14 17:31 , Processed in 0.076825 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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