一种崭新的Rational Functional Tester(RFT)图片比较方法

图片比较一直是">自动化测试中的难点。虽然 Rational Functional Tester V8.0 专门提供了图片验证功能,但由于其是直接从屏幕上截图并逐一比较像素点,使得它的稳定性和可移植性都有待改善。本文采用了全新的图片获取方法和图片比较方法,绕过了 Rational Functional Tester 的缺陷,增强了脚本的可移植性和测试的稳定性,并扩展介绍了获取和比较尺寸较大的图片的方法。

问题描述

在自动化测试中,有时需要对图片进行验证,即判断图片以及图片的注释是否显示正确。在手动测试中,图片比较是很容易的,用肉眼识别即可。但在自动化测试中,图片比较却困难重重。Rational Functional Tester V8.0 专门提供了图片验证功能,用来实现图片比较的自动化。其实现原理是:直接从屏幕截图,然后将结果以无损压缩的 PNG 格式保存,之后再对图片的每一个像素点进行验证。但由于从屏幕截图与显示器直接关联,而不同测试机显示器的分辨率等设置可能并不相同,这就导致脚本的可移植性差。不仅如此,由于电磁波或其他的物理影响,同一台测试机在不同的测试中,显示器的某些像素点也可能产生些许的肉眼无法察觉的变化,导致同一台测试机上的测试也很不稳定,明明肉眼观察相同的图片,测试结果却显示失败。这使得测试效率低下,测试结果不能很好地反映软件的真实情况。

下面作者将结合自己工作中的实例,给出解决图片比较问题的全新方法。

获取图片

为了解决显示器截图的不稳定问题,本文的解决方案是:通过 GuiTestObject.getImage(R-ectangle rect, String fname) 方法,将需要比较的图片直接从内存中读取出来。其中 GuiTestObject 是被测软件中用来显示图片的控件对象。按文档中所写,该方法返回的是即将要显示在显示器上的图片。这样就隔离了图片与硬件的关联,增强了脚本的可移植性和测试的稳定性。

图 1. 显示图片控件

图 1 中用红色边框包围的就是被测程序中可被 RFT 识别的用来显示图片的控件,作者将其命名为 view。该控件由图片和灰色的画布两部分组成。我们必须只取其中的实际图片部分进行比较,而不能直接比较整个控件。因为虽然控件当中包含图片,但当分辨率改变时,图片和画布的相对大小将会改变(比如图片变大,灰色的画布部分变小),使得虽然图片显示正确,但由于整个控件的构图发生了变化,导致测试结果失败。而只取图片进行比较就不会有这种问题,因为虽然不同的分辨率下图片的大小不同,但那只是由于不同的分辨率使得像素的长宽发生了改变,并不会改变图片像素的数量和每个像素的颜色信息。

一般显示控件都会有相应的属性来说明其所包含图片的大小,在本例中,该属性为"preferredSize"。 view.getProperty("preferredSize") 方法会返回一个 Dimension 类型的变量,该变量的高和宽即为实际图片的高和宽。属性"locationOnScreen"可以获取该控件的坐标。综合这两个属性就可以使用方法 GuiTestObject.getImage(Rectangle rect, String fname) 获取实际的图片了。具体代码如下:

清单 1. 获取图片

Dimension d=(Dimension) view.getProperty("preferredSize");Point p=(Point)view.getProperty("locationOnScreen");Rectangle r=new Rectangle(p.x,p.y,d.width,d.height);BufferedImage input=view.getImage(r,"a");

最后用得到的内存中的图片 input 来进行图片的比较。

时间: 2024-11-05 17:26:06

一种崭新的Rational Functional Tester(RFT)图片比较方法的相关文章

使用Rational Functional Tester V8.0精确地识别及验证Graphical Editing Fra

使用Rational Functional Tester V8.0精确地识别及验证Graphical Editing Framework(GEF)图形 由于图形的难以识别性以及测试工具的局限性,图形的自动化识别与验证一直是自动化测试中的薄弱环节.开发人员在 Eclipes 中常用 Graphical Editing Framework(GEF)开发大型图形矩阵以及图形界面.在 Rational functional tester(RFT)V8.0 以前,GEF 图形由于不能够被精确地识别,与其相

Rational Functional Tester一款Jazz协作平台自动化功能测试工具

Rational Team Concert(RTC)是 Jazz 协作平台上的一款 Rational 产品.结合 Jazz 平台高透明性和清晰度的特点,RTC 的优势也很明显地表现出来: 非常适合团队的协同合作,能够极大的提高产品的开发效率. 在一个产品的开发周期中,为团队协作开发提供很好的扩展功能. 使软件的开发更有效率,更智能,更灵活多样. 项目的更新,会实时地反馈到团队以及与项目相关的的每一个成员,使整个项目的进度变得清晰明了(该特点正是本文下面将要 重点讲解的内容). 另外 RTC 还支

手动将新的Rational Functional Tester脚本合并到现有的自动化套件中

开始之前 Rational Functional Tester 是一个基于 GUI 的自动化和回归测试工具,用于对跨各种组织的许多产品的测试场景执行自动化.测试团队使用它创建一组自动化脚本.这样一组脚本也称为一个自动化套件.然后,测试团队会使用各种自动化框架运行这些自动化套件.一些人使用在 Rational Functional Tester 中构建的标准框架,另一些人则根据需要创建自己的框架. 在不同框架上工作并使用 Rational Functional Tester 的团队有时会遇到问题,

使用 IBM Rational Functional Tester 8.2.1 自动化 Flex Spark 测试

IBM Rational Functional Tester 使您能够在多个领域自动化应用程序的回归测试,这些领域中包括 Java.HTML..NET.Microsoft Silverlight.Adobe Flex 和 Dojo Toolkit.版本 8.2.1 增加了对测试 Flex Spark 应用程序的支持,以及其他一些新特性.本文将介绍用于测试 Flex Spark 应用程序的设置和脚 本创建.您将学习如何启用 Spark 应用程序,让 Rational Functional Test

采用Rational Functional Tester 8.0实现Eclipse以及GEF的自动化测试

Rational Functional Tester(RFT)8.0 版本强化了基于 Eclipse 的应用系统的自动化测试功能,更是增加了对于 GEF(Graphical Editor Framework)对象的支持.本文立足 Eclipse 的窗口构件集合,重点介绍如何配置 RFT 的 Eclipse 应用,如何针对 Eclipse 的构件进行动态的查找,以及 GEF 对象的配置和测试. 一.概述 IBM Rational Functional Tester 是先进的自动化测试工具,使测试人

如何使用Rational Functional Tester创建一个自动化框架

IBM® Rational® Functional Tester 是一个自动化的功能测试和回归测试工具.该软件为功能.回归.GUI 和数据驱动的测试提供了自动化的测试功能.Rational Functional Tester 支持丰富的应用程序,比如基于 Web 的..Net.Java.Siebel.SAP.基于终端模拟器的应用程序.PowerBuilder.Ajax.Adobe Flex.Dojo Toolkit.GEF.Adobe PDF 文档.zSeries.iSeries 和 pSeri

使用IBM Rational Functional Tester 7.0.1测试Flex应用程序

关于这篇文章必要的信息 这篇文章假定您已经对使用 IBM Rational Functional Tester 进行自动化测试的基本概念已经非常熟悉.请查看参考资源部分中的链接,是对 Rational Functional Tester 的介绍. 目标 了解各种测试 Adobe Flex 应用程序的场景. 为 Rational Functional Tester 配置一个 Flex 开发环境. 建 立 Flex 应用程序的自动测试操作. 在 Flex 应用程序上记录和回放一 个脚本. 必备条件

Rational Functional Tester的高效测试自动化技巧

如果您经常使用测试自动化操作工具,那么您可能对测试自动化框架的概念十分熟悉 .测试者们会经常寻找一些建议.参考,以及解决方案,但是框架只是您所需要考虑内容 的一半.如何构建您的测试代码,使您所测试的应用软件的测试过程最便利取决于有效自 动化操作的第二个步骤. 这篇文章重点强调第一个步骤,它可以帮助您理解如何有效地使用您所拥有的工具. 这个步骤包括以下几个论题: 对象和属性 使用浏览器的常见问题 验证点 低级的指令 脚本帮助器超类 对于每个论题,您可以在这篇文章末尾的参考资源中找到相关附加信息的连

使用Rational Functional Tester V8.1来自动化Web应用程序的集成测试

节省时间并得到更多可靠的结果 简介:手工测试 Web 应用程序是一个错误倾向的任务.自动化测试将测试人员从输入测试数据和生成 结果中解放出来.本文描述了怎样使用 IBM Rational Functional Tester V8.1 来自动化 Web 应用程序的集成测试操作. 自动化集成测试的利益 在软件开发生命周期的集成测试期 间,单个软件构件会得到合并,并作为一个组进行测试.在一个 Java Enterprise Edition(JEE )Web 应用程序中,软件构件通常是 HTML 或者