使用rft设计web应用的自动化测试框架

上传人:第*** 文档编号:31384192 上传时间:2018-02-07 格式:DOCX 页数:9 大小:117.12KB
返回 下载 相关 举报
使用rft设计web应用的自动化测试框架_第1页
第1页 / 共9页
使用rft设计web应用的自动化测试框架_第2页
第2页 / 共9页
使用rft设计web应用的自动化测试框架_第3页
第3页 / 共9页
使用rft设计web应用的自动化测试框架_第4页
第4页 / 共9页
使用rft设计web应用的自动化测试框架_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《使用rft设计web应用的自动化测试框架》由会员分享,可在线阅读,更多相关《使用rft设计web应用的自动化测试框架(9页珍藏版)》请在金锄头文库上搜索。

1、使用 Rational Functional Tester 设计 Web 2.0 应用的 GUI 自动化测试框架2010-03-12 作者:吕宁,Stella Juang 来源:IBM本文内容包括: 前言 Web 桌面应用及特点 ITCL 框架 LotusLive Meeting 的框架设计原则 使用 RFT 来探测对象属性 总结 参考资料 近些年来,随着 Web 2.0 技术的大范围普及和广泛应用,在全球范围内出现了众多新颖的激动人心的软件产品或服务。在这些 Web 应用中,有一类主要的分支被称作 Web 桌面应用。Rational Functional Tester(RFT)是 IBM 提

2、供的一款自动化测试工具,适用于各种测试工作,特别擅长于 GUI 方面的自动化测试。本文借助在 Rational Functional Tester(RFT)平台下设计和开发 LotusLive Meeting 这个自动化测试项目,介绍了如何使用 Rational Functional Tester 设计 Web 2.0 应用的 GUI 自动化测试框架,并介绍自动化测试框架设计和开发中的一些原则和经验。前言近些年来,随着 Web 2.0 技术的大范围普及和广泛应用,在全球范围内出现了众多新颖的激动人心的软件产品或服务。在这些 Web 应用中,有一类主要的分支被称作 Web 桌面应用。例如,wid

3、getop、cloudworks、eyeOS、Mygoya、Wixi 等。在 IBM 公司内部很多产品线也开始逐步开发出或者转移到 Web 平台。在 IBM 软件产品和服务中,具有 Web 桌面应用特点的产品也非常的多,像是 Domino iNotes,LotusLive Meeting,Sametime Meeting 等。作为 GUI 自动化软件测试人员或者框架及脚本开发人员,如何找到一种高效、稳定的并且是针对这种软件架构和产品特性的 GUI 自动化测试方法就显得尤为重要了。Rational Functional Tester(RFT)是 IBM 提供的一款自动化测试工具,适用于各种测试工

4、作,特别擅长于 GUI 方面的自动化测试。在 IBM 公司内部的各个测试组,例如 FVT、BVT、GVT,甚至是 SVT 都得到了广泛的应用。本文借助在 RFT 平台下设计和开发 LotusLive Meeting 这个自动化测试项目,来介绍一下自动化测试框架设计和开发中的一些原则和经验。Web 桌面应用及特点随着 Web 开发技术的日新月异,很多 Web 应用都开始越来越注重用户的体验。其中 Web 桌面应用(Webtop )在很大程度上满足了用户日常使用桌面应用的习惯,在众多的新颖的 Web 应用中占有较大的比例。具有 Webtop 特点的 Web 应用一般具有以下的特点:首先从使用者的角

5、度,如果我们没发觉它是运行的浏览器里面,那么它的用户体验更像是传统桌面程序。也就是说在使用过程中不像是其他 Web 应用要在相对较多的浏览器窗口之间或者页面之间进行跳转,而是一直维持着一个相同的浏览器窗口。UI 的变化都发生在同一个浏览器窗口对象内部。另外从技术角度上讲,浏览器窗口内的顶层 DOM 对象基本保持不变,很多 UI 的变化都是刷新或动态加载局部容器的来实现的。对于这类应用的特点,在做自动化测试脚本开发过程中可以加以利用,大大提高脚本的质量和执行效率。ITCL 框架ITCL 框架是 IBM 公司内部被广泛使用的自动化设计框架,也叫做 IBM 框架。主要的设计宗旨就是将代码划分成三层结

6、构,即对象层(Objects layer)、任务层(Task layer)、测试用例层(Testcase layer)。将代码划分成三层结构使得“做什么“ 和”如何做“分离开来,有利于代码的组织,结构清晰。同时提高了代码的可复用性和扩展性。当使用 ITCL 框架开发自动化测试脚本时,最核心的任务就是合理的设计和组织对象层和任务层。合理的设计对象层和任务层常常会使整个自动化项目的开发和后期维护达到事半功倍的效果。本文的主要目的就是提供一套设计原则以及一些对象是别的经验,针对 Web 桌面应用程序的特点给出对象层设计的解决方案。以提到对象识别的准确性和稳定性,这一点对于 UI 经常变化的软件和 N

7、VL 版本软件的国际化测试有特别重要的意义。LotusLive Meeting 的框架设计原则LotusLive Meeting 是一个典型的 Web 桌面应用程序,对于这类型的应用,最大的特点就是很多 RFT 可识别的对象是以树形结构组织并且结构较为固定。同时这些对象是在同一个浏览器窗口内被展现。针对于这样的特点我们可以借鉴树形结构搜索对象的一些基本方法,即从树根开始逐级遍历树的各个节点进行匹配,直到找到我们要操作的 GUI 对象。那么构成这棵树的节点是什么呢?这里我们就要说面一个 HTML 容器对象的概念。HTML 容器对象Web 应用说到底是基于 Web 技术,是基于浏览器的。那么不管目

8、前主流的 Web 应用是以何种技术开发,使用的是何种平台,他们都依赖于最基本的 HTML 语言。我们可以发现,HTML 的作用主要是布局 Web 应用的展示层。也就是说 Web 应用的 GUI 布局主要是通过 HTML 的各种标记例如 等来实现的。这些标记划分出的各个区域就像是一个个小的容器,容纳了其他的 GUI 对象。而且这些标记可被 RFT 的对象识别机制识别,对应成相应的 HTML 容器对象。另外还有一个可被 RFT 识别的主要对象,就是 DOM 对象。在 RFT 的对象识别机制中,它是浏览器对象下的第一个容器对象同样对 GUI 元素的识别有重要作用。前面提到的对象树就是由这些容器对象构

9、成的。如下图所示:图 1. HTML 容器对象架构( 查看图 1 大图)从上图我们可以看出,容器对象的包含关系是有一定的规则的。也就是说 HTML DOM 是浏览器对象下的第一个对象,承载整个页面的内容。THML DOM 对象之下可以是 Frameset 对象、Frame 对象、Form 对象、或者是 GUI 对象。 Frameset 对象之下只能是 Frame 对象,Frame 对象之下又可以是 HTML DOM 对象或者 Form 对象。这样由 HTML 容器对象便可以组成容器对象树。而被操作的 GUI 对象元素就是这棵树的叶子节点。从根对象出发找到某个 GUI 对象的过程就是沿着这棵树的

10、某个分支搜索 GUI 对象的过程。如下图:图 2. 容器对象查找从图中我们可以看到,从 A 对象开始找到 D 对象的过程经过了 B 和 C 对象。如果 D 对象就是我们要操作的 GUI 对象,那么它上层的对象就是包含它的容器对象。从前面的介绍中我们知道,容器对象在应用中是不可见的。也就是说他们都是些 HTML 标记,在满足 HTML 语法规则的情况下相互嵌套,构成了整个页面的布局。按照 ITCL 框架的规则,在对象层我们要定义 A、B、C 三个容器对象,同时实现 geter 方法。A 对象首先定位到 B 对象,然后 B 对象搜索得到 C 对象。这样逐级搜索得到对象便于对象层的扩展。如果产品修改

11、了 UI 的设计使得 A 对象下面多出了 B 对象,那么只要在 A 对象内重新实现 B 对象的 getter 方法。LotusLive Meeting 容器对象架构以 lotusLive Meeting 为例,借助于 RFT 的对象查看器(Object Inspector)我们绘制出了容器对象的基本架构。如下图:图 3. LoutsLive Meeting 容器对象架构( 查看图 3 大图)从图中我们可以看到,由 HTML 容器节点构成的树将应用的整个页面进行了划分。被操作的 GUI 对象都是树的叶子节点。从图中我们可以看到如果我们想找到并操作位于 ToolbarDOM 对象下的一个 butt

12、on 对象的话,那么我们要做的就是通过这样一条路径: Root-ConsolDOM-MainFrameSet-ConfwinFrame-ConferenceWindowDOM-VframeSet-ToolbarFrame-ToolbarDOM-Buttom object 。在具体的实现过程中,上图中的所有容器对象都将被定义成一个类。这些类有一个共同的基类那就是 RFT 提供的 TestObject 类。通过对这些容器类的实例化对象调用 RFT 的方法,也就是我们常使用的动态查找对象的方式,即对象的 find() 方法来逐级的找到要操作的 GUI 对象元素。ConsolDOM 类的代码示意如下:

13、清单 1. ConsolDOM 类的代码public class ConsolDOM extends HtmlDocumentpublic ConsolDOM(TestObject arg0) super(arg0);public ConsolDOM(TestObjectReference arg0) super(arg0);ObjectGetter og = new ObjectGetter();public MainFrameSet getMainFrameSet()try return new MainFrameSet(og.getObject(this, Webfuncs.gsClas

14、sProp, Webfuncs.umHFraSetRef, Webfuncs.gsIDProp, main);catch(Exception e)return null; 从代码中我们看到,除了构造方法 ConsolDOM 类只实现了一个 Getter 方法 getMainFrameSet(),因为它的下层只有这一个容器对象。MainFrameSet 类的实现代码如下:清单 2. MainFrameSet 类的实现代码public class MainFrameSet extends HtmlFrameSetpublic MainFrameSet(TestObject arg0) super(

15、arg0);public MainFrameSet(TestObjectReference arg0) super(arg0);ObjectGetter og = new ObjectGetter();public ConfwinFrame getConfwinFrame()tryreturn new ConfwinFrame(og.getObject(this, Webfuncs.gsClassProp, Webfuncs.umHtmlFrameRef, Webfuncs.gsIDProp, confwin);catch(Exception e)return null;ConferenceW

16、indowDOM 类的实现代码如下:清单 3. ConferenceWindowDOM 类的实现代码public class ConferenceWindowDOM extends HtmlDocumentpublic ConferenceWindowDOM(TestObject arg0) super(arg0);public ConferenceWindowDOM(TestObjectReference arg0) super(arg0);ObjectGetter og = new ObjectGetter();public VframeSet getVFrameSet()tryreturn new VframeSet(og.getObject(this, Webfuncs.gsClassProp, Webfuncs.umHFraSetRef, Webfuncs.gsIDProp, vframes

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号