技术开发 频道

基于RFT的测试脚本自动修复技术

【IT168 技术文档】

  软件测试是保证软件质量的重要手段。软件自动化测试对于提高测试效率与测试质量起着重要作用,但由于被测系统的复杂性,使得软件自动化测试变得难以实施。本文就是基于RFT的三层测试框架的基础上,提出了脚本修复技术,提高脚本的使用率。

1 基于RFT三层测试框架

  由于GUI软件测试自身多变的特点,目前在软件测试脚本生成技术上主要采用分层的概念,尽可能低地降低界面变化对测试脚本的影响。本文就是基于RFT的三层测试框架的基础上,提出了脚本修复技术,提高脚本的使用率。下图就是典型的三层测试框架结构。


图1. 三层测试框架结构

1.1 对象的表示

  在描述GUI对象的表示时,本文将使用Rational Functional Tester来获得被测程序的所有对象。图描述了Rational Functional Tester对捕捉到的所有被测对象的组织。点击MyNotePad程序中About菜单中AboutMyNotePad菜单项时弹出的About Dialog对话框。图描述了Rational Functional Tester中MyNotePad程序中的对象组织结构。

  可以看到,MyNotePad被组织成了一棵根节点是“MyNotePad”的树,它有3个子节点,分别为About Dialog对话框、MenuBar和TextArea。About Dialog对话框有2个儿子节点,分别为OK按钮和一个label存有about信息。MenuBar有3个子节点,分别为File、Edit和About。TextArea没有子节点。

  可以看到,Rational Functional Tester将AboutDialog对话框作为根节点MyNotePad的直接子节点。事实上,Rational Functional Tester会将所有的弹出窗口存为根节点的直接子节点。使用这种组织结构,不可能从图中了解到弹出窗口和其它GUI组件之间的关系。比如,AboutDialog对话框应该在什么状况下弹出?对于这种问题无从得知,所以无法完整的表示GUI上对象之间的关系。为了解决这个问题,本文调整了被测程序的GUI对象组织结构,形成了一颗新的树形结构的图,称之为对象树。如图所示。这样的树形结构可以很容易的看出各个组件之间的依赖关系。


图2. 树形结构

图3. 各个组件之间的依赖关系
 

  对象层在这一层中,要将元素名与测试内部对象名独立出来。界面对象映射脚本实现界面对象逻辑名与被测试软件真实界面对象之间的映射关联。界面对象映射脚本是自动化测试的关键,它可以使测试工程师和自动化测试脚本开发工程师进行工作分工,实现测试开发与软件开发的同步。在软件需求确定后,测试工程师就可以开发测试脚本;而自动化工程师根据与测试工程师约定的界面对象的逻辑名来编写测试脚本。最后,测试工程师开发的测试脚本与自动化工程师开发的测试脚本通过界面对象映射脚本关联成一个有机的自动化测试脚本集。

  事件层事件层主要实施一些常用的测试操作,如文本内容录入、菜单选中、列表框内容选择、按钮单击、预期输出结果验证等。它是和对象相互对应的,每一个对象都应该有自己的事件集合。对常用的软件使用操作,可以针对每个类型控件设计一个通用脚本,控件识别 ID 和相关联操作(单击、输入、选中等)作为该脚本的输入参数。对测试预期结果验证也可以使用类似的方法设计针对特定控件的验证脚本,不同之处在于其输入参数是验证的属性和验证结果值。由于所有软件的使用和测试都是这些基本操作的组合,因而在不同的项目之间,重用脚本是一致的。不同的是测试所使用的测试数据从不同的数据文件内读取,因此,这些脚本可以在不同的项目中实施共享,实现一次编写,多处共享,减少脚本的数量,从而降低脚本的维护工作量。同时要将数据分离出来,数据可以来自文件或者自动生成。因此要在事件层中为数据的输入和输出提供接口。

  脚本层测试脚本实施对特定功能点和业务功能的测试。是一种针对特定的、被测试软件项目的脚本。其主要功能包括:从测试数据文件内读取测试数据。调用重用脚本和对象映射脚本将这些数据输入到被测试软件的特定对象中。并验证测试结果与预期输出的一致性。记录 Log 和 Bug 现象。它是由重用脚本依据一定的业务流程和特定操作流程组成。

0
相关文章