使用 Rational Functional Tester 自动化 WebSphere Message Broker Toolkit 操作

简介

IBM® WebSphere® Message Broker(以下简称为 Message Broker)支持业务应用程序之间的消息转换和路由,并且包括了一个工具箱,用于业务流开发和部署。

IBM® Rational® Functional Tester(以下简称为 Functional Tester)是一个测试工具,可以帮助您自动化功能、回归、GUI,以及数据驱动测试。本文将展示如何使用 Functional Tester 自动化 Message Broker Toolkit 操作,并将涵盖以下各个主题:

  • 针对 Functional Tester Eclipse IDE 配置基于 Eclipse 的 Message Broker Toolkit
  • 演示如何自动化 Message Broker Toolkit 操作的样例脚本
  • 故障排除

您可以使用 Functional Tester 自动化任何 Message Broker Toolkit IDE 操作。作为一个例子,本文将告诉您如何自动导入和部署 Message Broker Toolkit 提供的 Message Broker 样例。

自动化手动测试的益处

在手动测试中,往往需要重复执行相同的测试用例,这个过程容易出错并且繁琐而又费时。使用 Message Broker Toolkit 实现自动化测试可避免这些问题。该工具包允许您创建消息流并将其部署到 Message Broker 运行时。大型组织可能会开发和部署数以千计的业务消息流,根据不断变化的需求,所涉及的业务规则可能需要变动。您可能需要测试所有的业务流程,以防止回归 错误,例如,当您升级到一个新版本的 Message Broker,或新的业务需求要求强制修改消息流或其组件或参数时。

先决条件

为了从本文中获益,您应该具备一定的 Java™ 编码经验,并且应该已经安装以下内容:

  • Rational Functional Tester V8.1 或更高版本,操作系统为 Microsoft® Windows® 或 Linux®。
  • WebSphere Message Broker V7 和 Message Broker Toolkit V7

配置

使用 Message Broker Toolkit 创建一个默认配置:

  1. 单击 Help 并选择 Welcome
  2. 单击 Get Started
  3. 单击 Default Configuration
  4. 在 Creating the Default Configuration 页面上,单击 Start the Default Configuration Wizard 并遵循 Wizard 中的步骤。

配置 Functional Tester:

  1. 启动 Functional Tester (Eclipse IDE) 并选择工作空间,如果还没有配置默认工作空间的话。然后单击 Configure
  2. 选择 Enable Environments
  3. 单击 Web Browsers 选项卡。对于 Windows 操作系统,默认添加了 Internet Explorer。如果使用的是 Linux,则需安装 Mozilla Firefox V3.0.4(使用较高版本可能会遇到兼容性问题)。
  4. /usr/lib/firefox-3.0.4/plugins/ 中创建 libjavaplugin_oji.so 作为软链接,指向文件
    /opt/IBM/SDP/jdk/jre/plugin/i386/ns7/libjavaplugin_oji.so
    >cd /usr/lib/firefox-3.0.4/plugins/ >ln -s /opt/IBM/SDP/jdk/jre/plugin/i386/ns7/libjavaplugin_oji.so  libjavaplugin_oji.so

    /usr/lib/firefox-3.0.4/plugins/ 是安装 Firefox V3.0.4 的位置。
  5. 要检查浏览器是否启用了 Functional Tester,启动 Functional Tester 并单击 Configure
  6. 选择 Enable Environments for Testing
  7. 在 Enable Environments 窗口中,单击 Web Browsers 选项卡,选择 Firefox,启用它,然后将其设置为默认浏览器。
  8. 单击 Test,您应当会看到如下所示的浏览器窗口:

    图 1. 浏览器支持测试
    浏览器支持测试

  9. 单击 Run Diagnostic Tests。成功完成浏览器支持测试后,应当获得测试结果 PASSED:

    图 2. 浏览器支持测试结果
    浏览器支持测试结果

    对于 Microsoft Windows,按照图 1 和 2 所示的类似方式检查 Internet Explorer 是否支持 Functional Tester。
  10. 现在单击 Java Environments 选项卡:

    图 3. 启用环境:JRE
    启用环境:JRE

  11. 启用默认 JRE。如果没有看到任何 JRE,那么如上图 3 所示启用系统 JRE。IBM JRE V1.6 为优先选择。
  12. 单击 Test 以测试 JRE 配置。您应当看到如下所示的弹出窗口,确认测试结果:

    图 4. JRE 配置测试结果
    JRE 配置测试结果

  13. 单击 Eclipse Platforms 选项卡。
  14. 添加并启用 Message Broker Toolkit Eclipse 路径,如图 5 所示:

    图 5. 启用环境:Eclipse
    启用环境:Eclipse

  15. 单击 Finish
  16. 单击 Configure
  17. 选择 Configure applications for testing
  18. 添加 Message Broker Toolkit 可执行文件,如图 6 所示,然后单击 Finish

    图 6. Application Configuration Tool
    Application Configuration Tool

  19. 完成配置后,启动 Message Broker Toolkit 并检查 Functional Tester Test Object Inspector 是否识别出 Message Broker Toolkit 应用程序对象。参见图 7。在继续之前,Test Object Inspector 需要能够识别应用程序软件对象:

    图 7. Application Configuration Tool
    Application Configuration Tool

  20. 您应当始终通过 Functional Tester 启动测试中的应用程序软件:单击 Test Object Inspector 窗口中的 Application 菜单,如图 8 所示。但是如果不希望通过 Functional Tester 菜单启动测试用的软件,那么添加 /opt/IBM/SDP/FunctionalTester/bin/libftevent.so 文件路径,同时研究配置文件中的 LD_PRELOAD 变量:

    图 8. 使用 Functional Tester 启动测试应用程序
    使用 Functional Tester 启动测试应用程序

使用 Functional Tester 自动化 GUI 操作

可以通过多种方法使用 Functional Tester 自动化 GUI 操作:

  • 通过手动编码。
  • 使用 Functional Tester Recorder 记录并回放脚本:Functional Tester 记录用户对测试软件的操作,并且您可以使用 Functional Tester 回放记录的脚本。要记录自己的脚本,单击 Script 菜单,然后选择 Add Script Using Recorder
  • 使用 Functional Tester find() API 或 Root Finder 方法:您可以在 Functional Tester 中编写自己的 Java 代码来自动化 GUI 操作。Root Finder 方法主要处理测试软件的对象属性。

脚本录制和播放方法实现起来更容易、更快,但它高度依赖于屏幕分辨率和屏幕坐标。因此,大多数录制的脚本无法直接移植到其它机器上,除非这些 机器使用相同配置设置。此外,Functional Tester 在 Linux 上不支持脚本记录。您可以使用 Root Finder 方法来解决这些限制,使您的代码具有健壮和可移植特性。本文重点介绍使用 Root Finder 方法自动化 GUI 操作。

Root Finder 自动化方法的 Java 代码

TestObject[] testObjects = null; testObjects = root.find(RationalTestScript.atDescendant("<property1>","<value1>",       ["<property2>","<value2>")]); if (testObjects.length > 0) {    RationalTestScript.logInfo("Log text goes here.....");    GuiTestObject gto = new GuiTestObject(testObjects[0]);    gto.waitForExistence();    boolean b=gto.exists();    if(b==true){       gto.click();    }    gto.unregister(); else {    RationalTestScript.logError("\n Error message");    } }

关于该代码片段的解释:

  • TestObject 包含 Message Broker Toolkit 中 GUI 对象的引用:
    TestObject[] testObjects = null;

  • 该行代码根据 find 参数中的属性查找 GUI 对象。该函数接受一个或两个参数作为输入:
    testObjects = root.find(RationalTestScript.atDescendant("<property1>","<value1>", ["<property2>","<value2>")]);

  • 该行代码将信息记录到 Functional Tester 测试日志中:
    RationalTestScript.logInfo("Log text goes here.....");

  • 该行代码获得 root finder 找到的对象引用。该引用稍后将用于程序中的 GUI 操作:
    GuiTestObject gto = new GuiTestObject(testObjects[0]);

  • 该行代码将继续等待,直到对象被创建:
    gto.waitForExistence();

  • 该行代码将对引用的对象执行左键单击(left-click)操作:
    gto.click();

  • 该行代码取消对对象的引用:
    gto.unregister();

可以采用不同的方法针对基准结果(baseline)检查中间结果。可以通过异常以编程方式处理错误,本文提供的样例代码就使用了这种方法。还可以通过选择 Script => Insert verification point,在代码中插入检查点。

运行样例代码

您可以 在文章底部下载用 Java 编写的样例 Functional Tester 代码。该代码启用了 Message Broker Toolkit,导入并部署了 Address Book Sample,然后从 Message Broker 和 Message Broker Toolkit 工作空间中移除了样例。解压缩该文件并将 .rftjdtr 文件导入到一个新的 Functional Tester 项目,将其作为一个 Functional Test Project Item,然后运行 WMBAutomation 脚本。

故障排除

  1. 如果 Windows 或 Linux 屏幕自动或被用户锁定,Functional Tester 将无法继续进行处理。要解决这个问题,需要在测试机器上安装 UltraVNC 服务器,然后使用 UltraVNC 客户端从另一台机器上启动测试。
  2. 如果 Functional Tester 无法足够快速地识别对象,您可以修改 ScriptAssure Recognition 级别和 Warning 级别:选择 Window => Preferences => Playback => ScriptAssure
  3. 如果使用一个映像作为检查点,可以在 RFT_installation_directory/bin 目录中的 ivory.properties 文件中设置映像检查容差。在文件中作出以下修改:
    • rational.test.ft.image.use.tolerance 设置为 true
    • rational.test.ft.image.tolerance 设置为 0 到 100 之间的值,具体取决于所需的容差级别百分比。

你可能感兴趣的:(websphere)