51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4196|回复: 17
打印 上一主题 下一主题

[讨论] 嫌速度慢,嫌步骤冗余,这一切都源于你对QTP不够了解。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-3 14:42:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
执行速度和对象识别的属性关系最大。和对象库里面对象多少关系很小很小。

步骤冗余。。。还是没设置好,我录制的就是跟所谓的框架产生的步骤基本一样的,。。


欢迎讨论。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-3 15:04:47 | 只看该作者
如果你用描述性编程的话,执行速度也会受到影响。尤其是隐式声明Description对象。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-3 15:37:16 | 只看该作者
原帖由 songfun 于 2007-8-3 15:04 发表
如果你用描述性编程的话,执行速度也会受到影响。尤其是隐式声明Description对象。


>>隐式声明?
是否是指定vbwindow("text:=记事本").active这种方式?
这种方式肯定慢,因为每次识别对象都是却分析属性,然后现来识别。使用Description速度会快些。但和使用对象库的方式,速度要快多少,有人试验过吗?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-8-3 15:40:28 | 只看该作者
......

[ 本帖最后由 jackymail 于 2007-8-3 16:00 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-8-3 15:43:10 | 只看该作者
哈哈,你两干上了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-8-3 15:46:02 | 只看该作者
......

[ 本帖最后由 jackymail 于 2007-8-3 16:00 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-8-3 16:15:14 | 只看该作者
原帖由 jackymail 于 2007-8-3 15:46 发表
互相学习嘛,有分歧才会有进步。呵呵
那哥们也挺厉害的,值得请教。。。

赞成,不是“干”,交流才能进步。


我认为,不管是使用隐式申明,Description对象,还是直接使用对象库中的对象,每次执行vbwindow(???).active时,QTP都要去识别对象。作了如下的试验

     vbwindow("dd")只有一个识别属性,就是窗体的Caption

        Set hh=vbwindow("dd")
       
        Set jj=hh.Object
       
       
        jj.Caption="asfasdf" '改变了窗口的标题
        vbwindow("dd").Activate '执行出错,因为找不到对象了
        jj.Caption="检验仪器管理" '而jj这个对象却还可以继续使用
        vbwindow("dd").Activate '执行成功,因为caption又对了。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-3 16:23:46 | 只看该作者
呵呵,谁知道songfun还会进来么
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-12-13 15:49:29 | 只看该作者
没使用描述性语言,回放时特别慢,修改后速度快了很多,语句如下:
前: browser("预订编辑").Page("预订编辑").Sync                       耗时:15-20秒
后: browser("title:=预订编辑").Page("title:=预订编辑").Sync   耗时:1秒左右
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-12-13 16:28:26 | 只看该作者
还不是枚举之后匹配,
事实上枚举对象的数量是由实际运行的对象数量确定.

你用描述事实上也只是根据描述来匹配枚举出来的一系列对象.

打个比方,假如系统现在可以枚举出10个对象,对象仓库有10个对象
直接用描述的话就是不需要经过对象仓库拿具体匹配的属性数据,但是跟系统的匹配次数还是10(假设都很不幸的要最后一次才匹配到)
使用对象仓库的话是先要根据名字在对象仓拿属性数据,这一步需要10(假设都很不幸的要最后一次才匹配到),然后再到枚举列表里查找和匹配,就是整个过程是10+10.是相加,而不是相乘,所以复杂度其实还是同一个几何级的.

所以理论上用描述的话少了到对象仓找属性数据的过程,要比使用对象仓的快,但是影响有限,而且描述和对象仓2种的区别的大小正是跟对象仓的对象多少有关.

定位时间 = 在枚举中匹配的时间 + 取对象属性的时间进行匹配的时间.

这个工具的定位对象的过程跟MFC程序员定位对象的过程应该没区别的(我不知道工具的源码,但是实现这个功能的原理是一样的).先枚举所有窗口和对象.然后根据指定的属性值去遍历枚举到的所有对象,匹配到的话马上返回.

当然,以上都基于一个假设,使用对象仓的方法是根据脚本指定的对象名再到仓库中拿属性值.
对错于否自己想,爱咋D就咋D,爱拿砖头砸就砸吧.
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2007-12-13 17:43:00 | 只看该作者
    任何测试都离不开环境,使用QTP进行自动化测试也一样。如果你打开了N个窗口,特别是有与测试的系统无关的网页时,无论对象是放在对象库里面,还是采用描述性编程“临时”找到的对象,那么 执行速度都会受到影响。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2007-12-13 17:44:49 | 只看该作者
    因此我们要尽量保持环境的干净,如果有单独的测试机器就最好了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    13#
    发表于 2007-12-13 17:48:21 | 只看该作者
    如果应用程序变化很大,特别是对象的属性改变很大或GUI变化非常大,那么 QTP很有可能无法根据原来的属性及其属性值找到相匹配的对象,这时QTP就会 采用 Smart Identification 技术去找类似的对象。如果还是没有找到,那么 就报告错误。在这个寻找到过程中,肯定要花费一定的时间。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2007-12-13 17:50:32 | 只看该作者
    因此 需要我们对QTPP脚本进行增强,如你已经预测到 Image对象的 text 属性(其属性值 与测试系统的URL有关系)在以后有的测试版本里面会发生变化,那么就尽量不要以text 作为识别  Image对象的依据。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    15#
    发表于 2007-12-13 17:54:57 | 只看该作者
    欢迎 大家踊跃讨论。如果有这方面的问题 说出来也可以
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-12-13 17:59:58 | 只看该作者
    原帖由 5555 于 2007-12-13 15:49 发表
    没使用描述性语言,回放时特别慢,修改后速度快了很多,语句如下:
    前: browser("预订编辑").Page("预订编辑").Sync                       耗时:15-20秒
    后: browser("title:=预订编辑").Page("title:=预订编辑 ...


    你这案例肯定是测试环境有问题,或者是仓库对象描述有问题。
    我用了那么多年的Sync,都是用对象库方式的,从来都是飞快的完成的,从没有遇到过如此变态的情况。

    [ 本帖最后由 yabest 于 2007-12-13 18:02 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-12-13 18:21:42 | 只看该作者
    原帖由 mythxhg 于 2007-12-13 16:28 发表
    还不是枚举之后匹配,
    事实上枚举对象的数量是由实际运行的对象数量确定.

    你用描述事实上也只是根据描述来匹配枚举出来的一系列对象.

    打个比方,假如系统现在可以枚举出10个对象,对象仓库有10个对象
    直接用描述 ...


    对象库方式定位对象时间 = 根据名字在对象库中查找仓库对象的时间   + 根据仓库对象的过滤属性在被测软件中查找对象的时间
    描述性方式定位对象时间 = 解析脚本里的对象描述得到过滤属性的时间 + 根据仓库对象的过滤属性在被测软件中查找对象的时间

    对象库方式:
      计算机里的查找算法很多的,啥二分法、哈希法啥的,否则在大数据库里找一条记录岂不是要等得累死!
      QTP的对象库就是一个小型的数据库了,事先已经进行解析和优化了。几百条内的记录查找,对计算机来说,简直不值一提,丝毫感觉不到。
    描述性方式:
      解析脚本里的对象描述得到过滤属性,一般也就那么一两个属性,计算机解析一下这个,也是不值一提的。

    所以我觉得两种方式的花费时间,几乎是相同的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2007-12-13 18:28:57 | 只看该作者

    回复 17# 的帖子

    你说的没错,我只是在解析2个方法之间的区别而已,如何查找用什么算法都不需要理会.时间上有区别,但是会很少,如你说的,甚至可以忽略不计.
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-21 08:37 , Processed in 0.101833 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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