论文部分内容阅读
摘要:目前软件系统功能测试已经不局限于人工测试,自动化测试能够有效提高软件测试的效率,降低测试成本,缩短测试周期。一个好的自动化测试工具,可以使测试事半功倍。UFT(Unified Functional Testing)是惠普公司推出的一款基于GUI对象识别技术的自动化功能测试工具。对象库是UFT中的一项重要技术,该文主要研究UFT中的对象库的设计与实现。
关键词:自动化测试;UFT;对象库
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)36-0088-02
1 UFT简介
随着市场对软件质量要求的不断提高,软件测试愈来愈受到重视。随着测试工作的不断深入,越来越多的软件公司开始借助自动化测试工具来提高测试效率和测试质量、缩短测试工期、降低测试成本。特别是对于一些工期较长、发布版本较频繁且对软件质量要求较高的大项目,是否使用自动化测试工具是关系项目成败的一个关键因素。
UFT(Unified Functional Testing)是美国惠普公司的一款功能性測试工具,目前在测试工具市场上占据绝对主流位置。UFT提供先进的自动化测试解决方案,用于功能测试和回归测试,它自动捕获、验证和回放用户的交互行为。UFT是基于GUI对象识别技术的,而GUI的自动化脚本都是针对应用程序中对象的操作。因此,界面上的操作对象能否准确地被识别,关系到自动化测试能否正常自动执行。所以在UFT自动化测试项目中对对象的集合,即对象库的设计、研究和实现就显得尤为重要。[5]
UFT的工作原理就是将应用程序回放过程中各个控件的主属性拿来和测试对象进行比较,如果各个主属性完全匹配,测试即通过。
2 UFT对象库简介
测试对象(Test Object):UFT录制过程中所录制被测应用程序中的对象,这些对象会保存在UFT的本地对象库中。UFT使用测试对象标识被测应用程序中的对象,并存储该对象属性及属性值,这些属性有助于UFT在回放会话期间标识和检查被测应用程序中的对象。
运行时对象(Runting Object):被测应用程序运行时的实际对象。
UFT识别对象原理一般是按下面三个步骤完成:(1)在对象库中创建测试对象,里面存有测试对象的属性值,主要标注一个或多个主属性;(2)在运行被测应用程序时UFT会根据脚本里面对象的名字,在对象库中找到对应的测试对象;(3)根据测试对象的主属性,在被测应用程序中找到运行时对象,最后对运行时对象进行操作。在此过程中,如果测试对象和运行时对象不匹配,将给出报错信息,无法顺利完成对此对象的操作。
对象库是UFT的核心,因为UFT是通过维护对象库来达到对象识别的目的的。虽然在描述性编程中不需要提供测试对象,但实际上是在UFT脚本中描述对象的属性,而测试执行中对象识别的原理是不变的。在事先抓取”代理名称:”、”密码:”两个文本框对象和”确定”按钮对象的前提下,基于对象库编程的脚本如下:
Dialog("登录").WinEdit("代理名称:").Set "mercury"
Dialog("登录").WinEdit("密码:").Set "mercury"
Dialog("登录").WinButton("确定").Click
还是”登录”这个功能点,采用描述性编程的脚本如下:
with Dialog("text:=登录")
.winEdit("attached text:=代理名称:").Set "mercury"
.winEdit("attached text:=密码:").Set "mercury"
.winButton("text:=确定").Click
end with
3 对象库的创建
UFT的对象库可以分为两种:
1)本地对象库(Local Object):与Action相关联,每创建一个新的Action会自动创建相应的本地对象库。
2)共享对象库(Share Object):多个Action可以共用的对象库,其扩展名为tsr。
脚本录制过程中或通过对象库专门抓取的对象都是保存在本地对象库中,这些对象的作用范围仅限于当前的操作。如果其他的操作也需要这些对象,则需要手动再重修添加一次。要让这些本地对象能够应用于多个操作、测试中,我们经常将录制好的本地对象导出,生成一个共享的对象库文件。
以下情况建议使用本地对象库:
1)创建单一操作测试脚本时;
2)不需要频繁修改对象属性时。
以下情况建议使用共享对象库:
1)使用关键字驱动测试技术;
2)包含(创建)多个测试脚本、接口或对象设置的多个测试;
3)需要经常维护测试对象的属性或有规律的更新测试对象属性;
4)经常进行多个测试你或有规律的使用Insert Copy of Action或Insert Call to Action。
由于编程人员在编码过程中未注意控件的命名,导致测试人员使用UFT时抓取的对象名称不规范,造成对象库维护和使用不便,因此建议在对象捕捉完后进行重命名。命名规则如下:
1)名称应与所对应的对象相关,做到“见名思义”;
2)如果一个对象中包含动作,则对象名称建议为:动作名 对象名;
3)必须是英文名,建议采用驼峰标识格式书写;
4)名称不包含特殊符号;
5)名称应不超过15字符。[6] 4 对象库的对比、合并
对象库的管理在整个UFT自动化测试过程中占据非常重要的地位,特别是大型的项目,其界面中的控件多而杂,拥有一个规范、统一的对象库将有助于脚本的快速开发和团队成员之间的协作。一般情况下,一个自动化测试项目会设置专人对对象库进行严格管理。在某些特殊的场合,可能需要有多人同时对对象库进行管理,则在项目测试的后期需要由专人对对象库进行对比、合并。
在UFT的对象库管理中自带两个辅助工具:Object Repository Comparison Tool(ORCT)和Object Repository Merge Tool(ORMT)。它們所处的位置如图2所示。
ORCT工具用于对两个对象库文件进行分析统计、并查看两者之间的差异。ORTC比较之后在Statistics(统计对话框)直观地显示统计结果,而图形化的差异标识使用户能更快捷有效地查看对象库之间的差异。ORMT工具用于两个对象库文件合并,当两个对象库中的对象没有冲突,所有的合并工作就由系统代劳,不用再手工去设置,最后只需把Statistics对话框关掉,把合并的结果保存即可。如果两个对象库有冲突,ORMT会准确标记出那些需要合并但是又有冲突的对象的位置,用户在解决选项(Resolution Options)的上半部分可以查看有差异的两个对象的信息,在下半部分可以选择三种解决方案中的任一种。
5 结束语
总之,在成本、技术都可行的情况下,在项目中选择UFT进行自动化功能测试工具,将能够提升测试的效率、降低测试成本,而UFT强大的对象库能够对GUI对象进行高效、合理的管理。
参考文献:
[1] 李晓鹏, 赵书良, 魏娜娣. 软件功能测试—基于Quick Test Professional应用[M]. 北京: 清华大学出版社, 2012.
[2] 余杰, 赵旭斌. 精通QTP—自动化测试技术领航[M]. 北京: 人民邮电出版社, 2012.
[3] Tarun Lalwani. QTP自动化权威指南[M]. 北京: 人民邮电出版社, 2013.
[4] 林勤花, 张彩鲜. 企业案例软件测试技术[M].成都: 西南交通大学出版社, 2015.
[5] 沈涵超. QTP中的对象库的设计、研究和实现[J]. 科技信息, 2011(29).
[6] 朱云溪. QTP自动化测试对象库的设计、研究和实现[J]. 天津职业院校联合学报, 2014 (8):59-61.
关键词:自动化测试;UFT;对象库
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)36-0088-02
1 UFT简介
随着市场对软件质量要求的不断提高,软件测试愈来愈受到重视。随着测试工作的不断深入,越来越多的软件公司开始借助自动化测试工具来提高测试效率和测试质量、缩短测试工期、降低测试成本。特别是对于一些工期较长、发布版本较频繁且对软件质量要求较高的大项目,是否使用自动化测试工具是关系项目成败的一个关键因素。
UFT(Unified Functional Testing)是美国惠普公司的一款功能性測试工具,目前在测试工具市场上占据绝对主流位置。UFT提供先进的自动化测试解决方案,用于功能测试和回归测试,它自动捕获、验证和回放用户的交互行为。UFT是基于GUI对象识别技术的,而GUI的自动化脚本都是针对应用程序中对象的操作。因此,界面上的操作对象能否准确地被识别,关系到自动化测试能否正常自动执行。所以在UFT自动化测试项目中对对象的集合,即对象库的设计、研究和实现就显得尤为重要。[5]
UFT的工作原理就是将应用程序回放过程中各个控件的主属性拿来和测试对象进行比较,如果各个主属性完全匹配,测试即通过。
2 UFT对象库简介
测试对象(Test Object):UFT录制过程中所录制被测应用程序中的对象,这些对象会保存在UFT的本地对象库中。UFT使用测试对象标识被测应用程序中的对象,并存储该对象属性及属性值,这些属性有助于UFT在回放会话期间标识和检查被测应用程序中的对象。
运行时对象(Runting Object):被测应用程序运行时的实际对象。
UFT识别对象原理一般是按下面三个步骤完成:(1)在对象库中创建测试对象,里面存有测试对象的属性值,主要标注一个或多个主属性;(2)在运行被测应用程序时UFT会根据脚本里面对象的名字,在对象库中找到对应的测试对象;(3)根据测试对象的主属性,在被测应用程序中找到运行时对象,最后对运行时对象进行操作。在此过程中,如果测试对象和运行时对象不匹配,将给出报错信息,无法顺利完成对此对象的操作。
对象库是UFT的核心,因为UFT是通过维护对象库来达到对象识别的目的的。虽然在描述性编程中不需要提供测试对象,但实际上是在UFT脚本中描述对象的属性,而测试执行中对象识别的原理是不变的。在事先抓取”代理名称:”、”密码:”两个文本框对象和”确定”按钮对象的前提下,基于对象库编程的脚本如下:
Dialog("登录").WinEdit("代理名称:").Set "mercury"
Dialog("登录").WinEdit("密码:").Set "mercury"
Dialog("登录").WinButton("确定").Click
还是”登录”这个功能点,采用描述性编程的脚本如下:
with Dialog("text:=登录")
.winEdit("attached text:=代理名称:").Set "mercury"
.winEdit("attached text:=密码:").Set "mercury"
.winButton("text:=确定").Click
end with
3 对象库的创建
UFT的对象库可以分为两种:
1)本地对象库(Local Object):与Action相关联,每创建一个新的Action会自动创建相应的本地对象库。
2)共享对象库(Share Object):多个Action可以共用的对象库,其扩展名为tsr。
脚本录制过程中或通过对象库专门抓取的对象都是保存在本地对象库中,这些对象的作用范围仅限于当前的操作。如果其他的操作也需要这些对象,则需要手动再重修添加一次。要让这些本地对象能够应用于多个操作、测试中,我们经常将录制好的本地对象导出,生成一个共享的对象库文件。
以下情况建议使用本地对象库:
1)创建单一操作测试脚本时;
2)不需要频繁修改对象属性时。
以下情况建议使用共享对象库:
1)使用关键字驱动测试技术;
2)包含(创建)多个测试脚本、接口或对象设置的多个测试;
3)需要经常维护测试对象的属性或有规律的更新测试对象属性;
4)经常进行多个测试你或有规律的使用Insert Copy of Action或Insert Call to Action。
由于编程人员在编码过程中未注意控件的命名,导致测试人员使用UFT时抓取的对象名称不规范,造成对象库维护和使用不便,因此建议在对象捕捉完后进行重命名。命名规则如下:
1)名称应与所对应的对象相关,做到“见名思义”;
2)如果一个对象中包含动作,则对象名称建议为:动作名 对象名;
3)必须是英文名,建议采用驼峰标识格式书写;
4)名称不包含特殊符号;
5)名称应不超过15字符。[6] 4 对象库的对比、合并
对象库的管理在整个UFT自动化测试过程中占据非常重要的地位,特别是大型的项目,其界面中的控件多而杂,拥有一个规范、统一的对象库将有助于脚本的快速开发和团队成员之间的协作。一般情况下,一个自动化测试项目会设置专人对对象库进行严格管理。在某些特殊的场合,可能需要有多人同时对对象库进行管理,则在项目测试的后期需要由专人对对象库进行对比、合并。
在UFT的对象库管理中自带两个辅助工具:Object Repository Comparison Tool(ORCT)和Object Repository Merge Tool(ORMT)。它們所处的位置如图2所示。
ORCT工具用于对两个对象库文件进行分析统计、并查看两者之间的差异。ORTC比较之后在Statistics(统计对话框)直观地显示统计结果,而图形化的差异标识使用户能更快捷有效地查看对象库之间的差异。ORMT工具用于两个对象库文件合并,当两个对象库中的对象没有冲突,所有的合并工作就由系统代劳,不用再手工去设置,最后只需把Statistics对话框关掉,把合并的结果保存即可。如果两个对象库有冲突,ORMT会准确标记出那些需要合并但是又有冲突的对象的位置,用户在解决选项(Resolution Options)的上半部分可以查看有差异的两个对象的信息,在下半部分可以选择三种解决方案中的任一种。
5 结束语
总之,在成本、技术都可行的情况下,在项目中选择UFT进行自动化功能测试工具,将能够提升测试的效率、降低测试成本,而UFT强大的对象库能够对GUI对象进行高效、合理的管理。
参考文献:
[1] 李晓鹏, 赵书良, 魏娜娣. 软件功能测试—基于Quick Test Professional应用[M]. 北京: 清华大学出版社, 2012.
[2] 余杰, 赵旭斌. 精通QTP—自动化测试技术领航[M]. 北京: 人民邮电出版社, 2012.
[3] Tarun Lalwani. QTP自动化权威指南[M]. 北京: 人民邮电出版社, 2013.
[4] 林勤花, 张彩鲜. 企业案例软件测试技术[M].成都: 西南交通大学出版社, 2015.
[5] 沈涵超. QTP中的对象库的设计、研究和实现[J]. 科技信息, 2011(29).
[6] 朱云溪. QTP自动化测试对象库的设计、研究和实现[J]. 天津职业院校联合学报, 2014 (8):59-61.