原帖由 MarsNoNo 于 2007-8-1 03:56 发表
QTP并不能识别所有的对象!
而且,对象库也占存储空间的。
还有,假如,对象变化了,难道你还要去对象库中修改对象的属性等等?到时候光修改对象就头痛死了,更别说改脚本啦。
还有……还有就是该睡觉了!
...
原帖由 zhong1984314 于 2007-8-1 08:28 发表
描述性编程需要熟练掌握常用对象的基本特性,对于新手来说先通过对象库也不识为一种好办法,现在需求变更平凡,对象也多变,用描述性编程对脚本维护非常有利
原帖由 sidneylover 于 2007-8-1 11:53 发表
看你们的帖子太搞笑了sdlkfj3
一般情况能不用描述性编程就不要用,通过对象库识别对象的时间要远小于通过描述性编程找到对象的时间,执行效率要高的多。
原帖由 loho1968 于 2007-8-1 12:12 发表
你是否有测试呢?时间真的快吗?
我认为2都的原理是一样的,通过描述对象的属性和类型,来识别对象。对象初学者,对象库确定使用简单方便。但对象库维护不方便,如果使用描述性编程,对象有变化时,可 ...
原帖由 loho1968 于 2007-8-1 22:12 发表
看看下面的脚本:
对象库:VbWindow("frmBrower").VbWindow("frmApparatusList").VbButton("∨ 从仪器项目列表中删除").Click
描述性编程:vbWindow(frmAppara).vbbutton(add).click
哪个更简洁?
描述性编程还有一个好处,就是支持通过框架和数据进行配置和设置式的自动化测试,而不是录制+修改+回放
原帖由 yabest 于 2007-8-2 02:35 发表
>描述性编程还有一个好处,就是支持通过框架和数据进行配置和设置式的自动化测试,而不是录制+修改+回放
搞自动化的人,竟然排斥自动化,推崇自己手工写出每一行脚本(包括啥框架、配置方式的伪脚本) ...
原帖由 yabest 于 2007-8-2 02:35 发表
>描述性编程还有一个好处,就是支持通过框架和数据进行配置和设置式的自动化测试,而不是录制+修改+回放
搞自动化的人,竟然排斥自动化,推崇自己手工写出每一行脚本(包括啥框架、配置方式的伪脚本) ...
原帖由 jackymail 于 2007-8-2 00:13 发表
楼上的不对吧,你定义frmappara and add的代码呢?不用定义就能用啊??
定义以后关键属性发生改变你不用修改定义阿?
还有框架数据配置设置式的自动化测试。
框架就比较宏观了。数据配置我用对象库方法也作 ...
原帖由 loho1968 于 2007-8-2 15:34 发表
假设你的脚本全部做好了。现在界面上增了加5个输入的内容,你打算怎么办?
我的办法很简单,打开框架配置的EXCLE,在输入数据的配置中插入5行,设置好输入对象的类型和属性。然后在后面的测试数据中输入对 ...
原帖由 loho1968 于 2007-8-2 15:34 发表
假设你的脚本全部做好了。现在界面上增了加5个输入的内容,你打算怎么办?
我的办法很简单,打开框架配置的EXCLE,在输入数据的配置中插入5行,设置好输入对象的类型和属性。然后在后面的测试数据中输入对应的测试数据就OK了,各个过程不超过5分钟。
当然是基于对于我们的产品非常熟悉,一看界面就知道这5个对象是什么,不用使用对象库,也不用录制就知道它们的属性是什么。如果是新的对象,或者是不熟悉的对象,通过Object SPY功能查看,找到可以唯一识别的属性记下来。已经有网友自己编写了工具来自动识别对象,并生成自己的配置对象库(XML文件),这样,只需要在框架的配置文件中填写对象的名称就可以了。
录制+修改+回放的做法,不是不好。而描述性编程也不是某些网友所说的是落后,应该是根据不同的使用人员,环境和目标,各取所需,不然,QTP就不会提供2种方法了。
原帖由 jackymail 于 2007-8-2 16:26 发表
就算描述性编程,qtp也一样要经过必要的判断步骤。
还有就是对象库里面的描述属性是可选的,你可以选择和你描述性编程使用一样的数量和属性。
你的5个元素修改过程在使用对象库的时候是一样的。
把对应的脚本 ...
原帖由 loho1968 于 2007-8-3 12:46 发表
》》yabest说的还是很有道理的。。。qtp在对象识别和获取上花了很大功夫。是重头戏。
QTP的对象识别,不是在对象库上,对象库只是一个管理工具而已。QTP对对象的识别和处理,关键在它对运行对象的识别和操 ...
原帖由 jackymail 于 2007-8-3 12:52 发表
QTP对对象的识别和处理,关键在它对运行对象的识别和操作
上面这句话我实在知识有限,无法理解。
对象的识别过程你可以看一下帮助。
关于描述性编程的作用帮助里面也有。
不武断是对的。但是要把正 ...
原帖由 loho1968 于 2007-8-3 13:20 发表
>>QTP对对象的识别和处理,关键在它对运行对象的识别和操作
就是说,QTP可以识别更多的对象,可以对这些对象进行更多的操作,比如,WR对网页的支持就没有QTP好,但WR的对象管理与QTP的对象管理没有本质上的区 ...
原帖由 jackymail 于 2007-8-3 13:34 发表
智能识别的基础就是对象库,没有对象库就先进行识别就不会启动智能识别。
排序也是在对象库中的排序。没有对象库不纯在排序识别。
还有其他的。。。所有的你提到的都是基于对象库才有的特性,没有对象库就没 ...
原帖由 loho1968 于 2007-8-3 14:06 发表
>>智能识别的基础就是对象库,没有对象库就先进行识别就不会启动智能识别。
智能识别,我理解如下
1、Windows中多个对象,一个对象中多个属性。
对象的数量,再加上属性的数量非常巨大。
原帖由 loho1968 于 2007-8-3 14:30 发表
QTP8.2中,关于智能识别的一段说明
了解智能标识进程
如果 QuickTest 在运行会话期间激活智能标识机制(原因是,它不能基于录制的描述标识对象),它将按照以下进程标识对象:
QuickTest“忘记”录制的测 ...
原帖由 loho1968 于 2007-8-3 12:41 发表
我认为,在windows环境内,语言没有高级、低级的区分,只有你能否掌握和使用得好。不是有人说VB是落后的语言吗?我们靠10几年靠编VB的程序养活了几百号人
QTP的对象识别,不是在对象库上,对象库只是一个管理工具而已。QTP对对象的识别和处理,关键在它对运行对象的识别和操作,而不是在于你是通过对象库,还是description对象来描述对象。
当然,使用对象库和KEYWORD视图确实很方便,通过鼠标操作,就可以设计自动化测试脚本。但实际应用中,不同的软件有不同的需求,再加上测试的业务流程的复杂程度不同,光靠鼠标是不能就会所有的情况的。
我不是反对录制+回放,而是认为不要太武断,除了对,就是错,应该区别情况对待。
原帖由 loho1968 于 2007-8-3 14:23 发表
这是QTP9.2中生成的设置识别属性的脚本
App.Options.ObjectIdentification("vbradiobutton").AvailableProperties.Add("abs_x")
App.Options.ObjectIdentification("vbradiobutton").AvailableProperties.A ...
原帖由 ppent 于 2007-8-10 22:33 发表
对象库和描述性编程都是基于对象识别原理上的应用,两者在识别原理上是一致的,唯一的差别是对象库比描述性的对象识别多了一层封装,正如高级语言对于汇编语言。也正是如此,所以在使用上有信手拈来的感觉。
在应用技术上,关键字视图大大降低了用户的技术门槛,而相对来说,描述性编程灵活一些。
两者并非决然对立,而是相辅相成,共同构成了一个功能强大、有竞争力的工具。
最后引用魔兽世界中流行的一句话:没有垃圾的种族或职业,只有垃圾的玩家。大家体会一下这句话
原帖由 ppent 于 2007-8-10 22:33 发表
对象库和描述性编程都是基于对象识别原理上的应用,两者在识别原理上是一致的,唯一的差别是对象库比描述性的对象识别多了一层封装,正如高级语言对于汇编语言。也正是如此,所以在使用上有信手拈来的感觉。
在 ...
原帖由 wtucel 于 2007-8-11 11:08 发表
强烈赞同,感觉去争论是用编程描述还是录制回放没有什么意义,存在即是合理,两者相铺相成,讨论这还不如讨论什么时候用录制回放什么时候用编程描述的方式.
原帖由 loho1968 于 2007-8-3 13:20 发表
>>QTP对对象的识别和处理,关键在它对运行对象的识别和操作
就是说,QTP可以识别更多的对象,可以对这些对象进行更多的操作,比如,WR对网页的支持就没有QTP好,但WR的对象管理与QTP的对象管理没有本质上的区 ...
原帖由 danmy 于 2007-8-11 16:16 发表
兄弟不要极端了, 比如B/S系统的测试,大量的对象都是动态生成,增加一个记录,生成一个链接,表格增加一行,这些动态的东西太多了,不用描述性编程,参数化以后根本不能流畅运行.
比如 Link("text:="&datatable.value("职员",dtLocalSheet))可以对应页面上的某员工链接,录制的化只能针对这一个员工有效, 要匹配datatable里大量的员工,只能描述性编程.
所以不用录制的方式,是不影响自动化测试流程的,但是不使用描述性编程,往往很多流程根本无法覆盖.
原帖由 ppent 于 2007-8-13 09:55 发表
你勇于辩论的精神我很佩服,但极端的方式并不会给讨论交流带来良好的解决。现在很多事情,都没办法也不应该一句话对和错去判定的。
要不我们换个角度来交流吧,也别列举什么罪状了,在什么情况下使用对象库,什 ...
原帖由 loho1968 于 2007-8-13 12:13 发表
[quote]原帖由 yabest 于 2007-8-11 17:00 发表
你可能对象库用的不熟吧,对象库一样可以动态设置的,一样可以解决问题!
只要动态设置一下对象属性
...
原帖由 yabest 于 2007-8-11 17:00 发表
你可能对象库用的不熟吧,对象库一样可以动态设置的,一样可以解决问题!
只要动态设置一下对象属性
Link("职员").SetTOProperty("text", datatable.value("职员",dtLocalSheet))
然后就可以反复的使 ...
原帖由 danmy 于 2007-8-13 13:09 发表
受教~~ 不过本人还是对对象库持保留意见
就说这个例子吧
其实
Link("职员").SetTOProperty("text", datatable.value("职员",dtLocalSheet))
Link("职员").click
和Link("text:="& datatable.value(" ...
原帖由 danmy 于 2007-8-13 13:09 发表
受教~~ 不过本人还是对对象库持保留意见
就说这个例子吧
其实
Link("职员").SetTOProperty("text", datatable.value("职员",dtLocalSheet))
Link("职员").click
和Link("text:="& datatable.value(" ...
原帖由 yabest 于 2007-8-13 13:35 发表
界面的操作对象大部分是可以静态识别的,需要动态识别的还是少数的!这少数,可以用SetTOProperty实现的。不要因小失大,舍弃对象库。
录制是对象库方式的优点,一系列操作下来,你手工写脚本要写的半死, ...
原帖由 loho1968 于 2007-8-13 13:51 发表
>>对的,具体问题具体分析。但是为什么对话框你不使用对象库,而使用一个通用的函数呢?从理论上来讲,描述性编程的,对象库都可以实现呀(包括动态产生的对象)。
原帖由 ppent 于 2007-8-10 22:33 发表
对象库和描述性编程都是基于对象识别原理上的应用,两者在识别原理上是一致的,唯一的差别是对象库比描述性的对象识别多了一层封装,正如高级语言对于汇编语言。也正是如此,所以在使用上有信手拈来的感觉。
在 ...
原帖由 mstiunicon 于 2007-8-14 08:55 发表
无聊,yabest觉得讨论这个话题很有趣么?
这两种方式你分别研究3个月了,再来说吧。
本贴终结到66楼。
66楼的是猪,白痴!
原帖由 wtucel 于 2007-8-14 09:40 发表
...
yabest也确实有点偏激了.人家说"尽量多用对象库,少用描述性编程"的时候,你说人家是"和稀泥"的说法
但是上面你又自己说特殊情况下还是要用描述性编程,这不是搬石头砸自己的脚么?
...
原帖由 yabest 于 2007-8-13 13:08 发表
所以要尽量多用对象库,少用描述性。
>>如果是针对软件测试这个目标,使用什么方式不是最重要的,关键在于你是否掌握了,能否熟悉的运用,并达成的你的目标,结果才是最重要的。
又来了,和稀泥。不同方式,虽然一样可以达到目的,但是要付出的成本和代价可能相差很远的!
本贴终结到66楼。
66楼的是猪,白痴!
原帖由 danmy 于 2007-8-13 13:09 发表
受教~~ 不过本人还是对对象库持保留意见
就说这个例子吧
其实
Link("职员").SetTOProperty("text", datatable.value("职员",dtLocalSheet))
Link("职员").click
和Link("text:="& datatable.value(" ...
原帖由 auqdppyv 于 2007-8-14 21:49 发表
这哥们正解
我来个例子,一个工作流系统,发起工作流会生成一个以日期后加6位数字的ID
那么下一执行者,要点页面上的列表中的这个ID号的Link进入执行他的操作,(工作任务列表的排序为任务流转时间先后顺序) ...
原帖由 yabest 于 2007-8-14 23:44 发表
你这样说不清楚,你就先用描述性脚本写出来吧,我用对象库脚本实现给你看!
除了不确定的对象,或者很难抓取的对象,对象库都能实现描述性的功能,只是把对象描述写在象库或脚本里的差别而已。
原帖由 auqdppyv 于 2007-8-15 13:25 发表
Function SearchList ( )
Dim i,j,tempText,text,referOperation
listOperation = DataTable("工作列表操作",dtGlobalSheet)
'取要定位的表格行数
rows=Browser("Browser").Page("Page").WebTab ...
原帖由 auqdppyv 于 2007-8-15 16:49 发表
Browser("Browser").Page("Page").WebTable("WorkList").SetTOProperty("innertext", innertext_v)
Browser("Browser").Page("Page").WebTable("WorkList").SetTOProperty("index", index)
脱裤子的技术果真高
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |