51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1703|回复: 3
打印 上一主题 下一主题

[原创] 不知道大家对象库以何种方式维护和读取的

[复制链接]
  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2010-11-3 23:22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 kavensyw 于 2010-11-3 23:33 编辑

    不知道大家对象库都是如何维护的,是用tsr,xml,excel,database中哪种比较好呢。

    我总感觉系统默认的tsr占用空间比较大.
    所以我打算这样做:(如果对转换后的xml结构熟悉,可以把123省略,可以直接写xml文件)
    1. 录制脚本,生成tsr;
    2.把tsr先导出为xml;
    3. 删除xml中不必要的属性,只保留Object,Property,BasicIdentification等需要的部分.这样空间能缩小很多.(这部分可以考虑做个脚本或小工具来自动处理);
    4. 在脚本运行时,再把xml转换成tsr关联,用完后删除tsr文件(因为tsr任会占用很大空间).
    不知道这样使用起来是不是方便,我担心这种方式如果对象很多的话,转换会不会对测试运行效率影响很大

    大家有没有更好的方法,分享一下,不胜感激

    '附件_backup是未修改的tsr,xml
    '不带backup是修改后的xml及临时tsr

    下面是我试运行的脚本,拷贝到QTP中运行

    'TEST HEADER
    '*****************************************************************************************************************
    '@Name :  Action1
    '@Description :   把xml形式的对象库转变成tsr,然后关联,用于测试
    '@Author :   kavensyw
    '@CreationDate : 11/03/2010
    '@Remarks :  xml对象库从录制的对象库导出为xml,并删除其中不必要的属性等内容;
    '      可以先手动导入一次,看导入xml会否有故障;
    '     保留足够的空间以便存放临时tsr文件.
    '
    'TEST HEADER
    '*****************************************************************************************************************
    Dim oObjRep  '  Mercury.ObjectRepositoryUtil对象的引用
    Dim qtApp, qtRepositories   
    Set oObjRep = CreateObject("Mercury.ObjectRepositoryUtil")
    '  这儿添加脚本:先检查xml是否存在,不存在则Fail,退出测试
    ' 这儿添加脚本:先检查tsr是否存在,存在就先删除,否则import会出错
    oObjRep.ImportFromXML "G:\Test\baidu.xml","G:\Test\baidu.tsr"
    Set qtApp = CreateObject("QuickTest.Application")
    Set qtRepositories = qtApp.Test.Actions.Item(1).ObjectRepositories ' 获取object repositories集合
    '移除不必要的对象库/RemoveAll
    lngPosition = qtRepositories.Find("G:\Test\Debug.tsr") ' 查找不需要的tsr的index
    If lngPosition <> -1 Then ' 如果找到tsr
        qtRepositories.Remove lngPosition ' 移除tsr
    End If
    '  关联需要的tsr对象库
    If qtRepositories.Find("G:\Test\baidu.tsr") = -1 Then  ' 查找tsr的index
        qtRepositories.Add "G:\Test\baidu.tsr", 1  ' 添加tsr
    End If
    Reporter.ReportEvent micPass, "开始运行实际测试脚本", ""
    SystemUtil.Run "Iexplore.Exe", "www.baidu.com"
    Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "嗷嗷嗷叫"
    Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Click
    Reporter.ReportEvent micPass, "结束运行实际测试脚本", ""
    '  取消关联
    lngPosition = qtRepositories.Find("G:\Test\baidu.tsr") ' 查找tsr的index
    If lngPosition <> -1 Then ' 如果找到tsr
        qtRepositories.Remove lngPosition ' 移除tsr
    End If
    Set qtRepositories = Nothing
    '  这儿添加脚本:用完之后删除tsr文件
    Set qtApp = Nothing ' 释放qtApp

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2010-11-4 08:36:38 | 只看该作者
    我不会看你下面的脚本, 因为你的 1 2 3 4 让我感觉实在是麻烦,  tsr大不假难道现在机器的硬盘还不够么,  要说QTP运行时加载大, 那可否在脚本中做处理呢,  每次都只加载用到的.    不知道你的这种做法是否有经过大批量开发脚本的验证.   QTP的一大优点(对象库管理机制) 你完全忽略了.    个人观点   LZ慎重 , 经历不应放在这.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2010-11-5 13:13:02 | 只看该作者
    本帖最后由 xhhuang1618 于 2010-11-5 13:15 编辑

    将CASE中所有用到的测试对象保存到外部文件中(如:Dictionary),并使用描述性编程的方式定位到相关对象上(支持多层次的嵌套)。当测试页面中的对象发生改变时,只需要修改Dictionary中的Value的就可以确保CASE能继续运行。
    优点:可以节省对象库的存储空间,同时维护起来也比QTP自带的对象库来的方便
    缺点:不支持录制/回放功能

    示例:
    Dim ObjectRepository
    Set  ObjectRepository = CreateObject("Scripting.Dictionary")
    ObjectRepository.Add "UserName","Class Name;name|WebEdit;username"
    ObjectRepository.Add "PassWord","Class Name;name|WebEdit;password"
    ObjectRepository.Add "Login","Class Name;type|WebButton;submit"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-11-5 14:45:17 | 只看该作者
    方法多种多样,拿出来拓宽思路是不错的,找到一个最适合自己的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 03:37 , Processed in 0.070029 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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