在 Rational Functional Tester 中如何判断页面是否下载完毕

发表于:2008-7-16 17:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黄腾龙    来源:IBM

  当使用 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. 默认阻塞所设时间

  软件测试

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号