Chinaunix首页 | 论坛 | 博客
  • 博客访问: 743823
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:44:19

        当使用 Rational Functional Tester (RFT) 进行 Web 应用程序自动化的时候,通常会遇到这样一个技术问题。一个请求被提交之后,如何在 Rational Functional Tester 中判断响应页面是否为我们所期待的内容,并且该页面是否已经完毕。本文针对这个问题,给出了几个解决办法。

        IBM Rational Functional Tester(简称 RFT)是一款先进的、自动化的功能和回归工具,它适用于测试人员和 GUI 开发人员。使用它,测试新手可以简化复杂的测试任务,很快上手;测试专家能够通过选择工业标准化的脚本语言,实现各种高级定制功能。

        Rational Functional Tester 对基于 Web 的应用程序的测试提供了很好的支持,包括其提供的丰富的类库及对不同浏览器的兼容。使得我们在进行 Web 应用自动化测试的时候,可以快速的开发出可扩展的,能被不同浏览器兼容的自动化测试程序。本文将讨论在用 Rational Functional Tester 进行 Web 应用测试的时候,如何等待页面加载这个问题。

        RFT 中如何进行 Web 应用的测试

        Rational Functional Tester (FRT) 是一个面向对象的自动测试工具,它可以使您测试多种应用程序。您可以通过记录对应用程序的测试来快速地生成脚本,并且您可以测试应用程序中的任意对象,包括对象的属性和数据。

        RFT 会把被测应用程序(Application Under Test,AUT)中所有的元素都看成对象 TestObject, 每个对象都由两部分组成:

        1、一系列代表对象属性的键值对

        2、对象的层次结构。

        下图展示了在 RFT 中一个普通 html 页面的视图:

        图 1. RFT 中一个普通 html 页面的视图

        要想判断一个页面是否全部完毕,同样需要满足两点:指定对象要存在,以及其层次结构是否完整。下面我们探讨一下在 RFT 中具体如何实现。

        方法一、利用 Object Map

        Object map 用于被测应用程序(application under test,AUT)中对象,包括对象的属性和层次结构。我们拿 google 的首页作为例子,看下在 RFT 中是如何的。我们将把页面中的文本输入框抓取到 RFT 中。

        图 2. 以 google 的首页作为例子,看在 RFT 中是如何存储

        下图为其在 RFT 中的存储形式。由两部分组成:图上部的树型结构,图下部的属性列表。

        Object map 中被映射的对象使用被存储的、静态的、识别属性和对象层次来识别,因此利用 Object Map 中存储的对象将能很好的判断对象所在页面是否完整。

        利用 RFT 录制功能,将响应页面的一个对象添加到 Object Map,RFT 会自动为该对象生成查找方法。例如,我们可以针对具体页面上(能明显区别开响应页面与其他页面的)的特定页面元素进行识别。在实际测试运行当中,如果该对象能被找到,即证明该页面已经加载完毕。例如,针对页面中的一个按钮 button_XXXbutton(),其返回值为 GuiTestObject 对象,利用 GuiTestObject 的 waitForExistence() 方法会阻塞当前脚本的执行,直到该对象被找到。

        RFT 针对该方法提供了两种接口:

        button_XXXbutton().waitForExistence(); 和 button_XXXbutton().waitForExistence(double max_time, double wait_time);

        这两个接口的区别在于 .waitForExistence() 利用在 RFT 中设置的时间来执行,而 waitForExistence(double max_time, double wait_time); 利用在运行时指定的时间来执行。

        1, button_XXXbutton().waitForExistence();

        该方法的具体阻塞时间可以通过在 RFT 中设定的一个全局变量来控制。步骤为:选择菜单 Window?Preferences?Functional Test?Play back 中设置 Maximum time to attempt to find Test Object 的值,其单位为秒,如图所示。脚本中所有 waitForExistence()方法将默认阻塞所设时间。

        图 4. 默认阻塞所设时间

[1]  

【责编:michael】

--------------------next---------------------

阅读(426) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~