收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
软件测试 > Robot > 正文

首页 | 领域细分: 游戏测试 安全测试 手机测试 Web测试 | 技术研究: 单元测试 入门教程 用例设计 性能测试 功能测试 | 测试职场: 面试精选 职场发展 面试试题

测试管理: 配置及流程 - 需求管理 - 质量验收 - 缺陷管理 - 其它管理相关 | 开发语言: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码

测试工具: LoadRunner JiRa QuickTestPro RoBot WinRunner TestDirector 其它测试工具 | 数据库: Mysql数据库 Oracle数据库 CSS/DIV基础 HTML基础

消除识别测试对象过程中的二义性情形

来源:互联网 日期:2012-09-25 20:30
本文内容包括: 前提条件 Rational Functional Tester 项目结构的概述 快速浏览一下 find() 方法 导航基于路径的对象识别 更好测试对象识别的建议 下载 参考资料

  IBM® Rational® Functional Tester 为测试人员提供了一个测试对象识别框架以及一个简单的用户界面,以执行基于 GUI 的测试脚本。但是,在有些条件下,例如测试一个基于 Eclipse 的程序,您可能会发现测试的 GUI 中全是二义性情形的测试对象。这些对象拥有几乎一样的属性,只有轻微的差异。很难直接指定目标对象属性的模式以及识别对象。识别的结果可能包含有多个二义性的类似对象,从而导致识别失败。本文向您介绍了怎样消除这些二义性的情况,并给出了一些指导以执行灵活且轻松的维护性测试脚本。

  前提条件

  安装 IBM® Rational® Functional Tester V7 版本。

  Rational Functional Tester 项目结构的概述

  导入范例 Rational Functional Tester 项目(查看 下载)。您将会看到一个名为 BaseCase 的脚本以及一个名为 util 的文件夹。

  通过选择 Window > Open Perspective > Java 来切换至 Java™ 视图。您将会看到以下的三个包:

  (default package)

  resources

  util

  BaseCase 脚本位于默认的包中,其中还有它的辅助类 BaseCaseHelper ,以及与 Resources 包中脚本有关的其他配置文件。这两个包在 Functional Test 视图下看不到。您创建了 util 包,以及包中的类。在接下来的章节中,您将会使用到这个框架(见于图 1)。

  图 1. Rational Functional Tester 项目的结构

  快速浏览一下 find() 方法

  建议您在 getMappedTestObject() 方法不能使用时,使用 find() 方法来找到一个测试对象。列表 1 中的代码显示了 find() 方法的结构。

  列表 1. 找到方法结构

 // Finds all candidates that match given search criteria starting at this TestObject public TestObject[] find(Subitem properties); 

  find() 方法通过将测试对象的特定属性,与给定的标准相比较以找到一系列的候选对象。您可以通过代表属性的名字/值,或者包含有一个或者多个匹配字符串来搜索一个测试对象。如果使用默认的 getMappedTestObject() 方法不能识别一个测试对象,那么您可以首先定位它的父类,然后通过访问父类的 find() 方法来找到目标测试对象。显然,find() 方法提供了可观的便利。脚本不再取决于对象映射。搜索候选测试对象的结果是可预测的,因此也是可靠的。您可以通过对象的属性值来找到一个测试对象,这些属性值可能是一个简单的文本。维护脚本起来会更加容易。

  但是,如果 getMappedTestObject() 方法不可行的话,find() 方法不会包含所有的事例。不会总有明显系列的属性值会匹配。find() 方法取决于明显系列的属性值。因此,如果测试对象没有这样一系列的属性,那么这种方法就不会正常地发挥其功能。但是我们可以在返回的数组中一个个地试一下测试对象,这并不是一个聪明的办法。有时,甚至很难找到测试对象可识别的父类,所以搜索必须从最顶层开始,例如从窗口开始。这就会降低测试对象的可识别性。

  导航基于路径的对象识别

  考虑一下 find() 以及 getMappedTestObject() 方法的缺陷,您需要另外一个方法来解决 Rational Functional Tester 对象识别中的二义性情形。在本文中,我们介绍了基于路径导航方法,来找到目标测试对象。我们将会使用程序 ClassicsJavaA 作为一个范例。为了让事情变得更加简单,我们假设 Place Order 按钮就是要找的测试对象。

  图 2. 范例程序的主窗口

  在记录 Place Order 按钮的点击操作之后,您会得到图 3 中对象映射的以下层级结构。您可以看到 Place Order 按钮是框架的子部分。框架会作为主窗口来显示,而且它就是 Place Order 按钮的位置所在。当然,在本例中,您可以简单使用 find() 方法来定位按钮。但是,我们将会尝试另外一种方法来解决这个问题。

  图 3. 对象映射的层级结构

  对基于导航对象识别的介绍

  有时测试人员会通过可见的线索来搜索测试的对象,例如关系中的相对位置。例如,您可能会通过它与文件夹封面图片的相对位置来找到 Place Order 按钮。与之类似,对于一个给定的测试对象,叫做锚对象,您可以使用 Rational Functional Tester API 来找到带有给定路径的任何对象。再次使用上面的例子,您可以通过找到对象附近的位置、文件夹的图片以及特定路径来找到 Place Order 按钮。这里所谓的术语“路径”是指在对象映射中将一个对象节点移动到另一个上时的逻辑距离。

  通过对象映射来进行导航

  在 Private Test Object Map for Script BaseCase 窗口中,您知道 Place Order 按钮是主框架的子类。显然,该对象映射并 没有 包含主框架中所有的构件。按照以下步骤来得到对象映射树的大致轮廓:

本周排行

别人正在浏览

强悍的草根IT技术社区,这里应该有您想要的!
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号