51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 32874|回复: 122
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-31 23:54:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
是先把所有要操作的对象添加到对象库里去,然后看着对象库里面对象的属性来写,写了以后删除对象库。
还是用spy一个一个去查找然后写?

有的人说对象库是精华,你们不用对象库,为什么?

我测试的软件。在主界面上能获取上千个对象,但是不能获取到子叶面的对象。然后具体到某个叶面也都有几十个上百个自己的对象。

我全部用的对象库。

或许可以把主叶面上的对象加入到对象库,子叶面里面的对象就用描述性编程好了,这样获取了主叶面对象以后就共享给所有人,用到子叶面的对象的时候就让相关负责的人用描述性编程。你说呢?

[ 本帖最后由 walker1020 于 2007-9-6 23:43 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    无聊
    2016-7-1 15:17
  • 签到天数: 16 天

    连续签到: 2 天

    [LV.4]测试营长

    123#
    发表于 2016-6-12 10:40:22 | 只看该作者
    喜欢用就用,不喜欢用就不用,这点事,这墨迹的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    122#
    发表于 2010-9-14 15:55:27 | 只看该作者
    结论:二者结合使用最好
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    121#
    发表于 2009-8-18 10:50:40 | 只看该作者
    我是描述性编程加对象库2者结合着用,自己看着办~~~~
    不同的项目肯定有不同合适的使用方式,怎么好用怎么配合,自己研究吧!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

    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 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

    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识别和操作对象的原理》里所举的例子。
    我那例子写得很详细的,相信你看了,也会知道怎么用对象库模式来实现你的函数。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

    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表就可以了。。。
    这种东西都是个人喜好问题,。。当然我承认他运行的效率没有有对象库好。。但是他的优点也是毋庸置疑的。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

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

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

    使用道具 举报

    该用户从未签到

    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来申请内存,可以即时来释放内存,但那样代码就得写疯了。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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


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

    使用道具 举报

    该用户从未签到

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


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

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 17:40 , Processed in 0.088257 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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