APP下载

基于WATIR的WEB自动化回归测试框架

2012-09-26黄梦薇黄大庆

电子设计工程 2012年21期
关键词:关键字测试用例脚本

黄梦薇,黄大庆,周 未

(1.南京航空航天大学 电子信息工程学院,江苏 南京 210016;2.南京航空航天大学 无人机研究院,江苏 南京 210016;3.南京军代局驻南京大桥机器厂军事代表室 江苏 南京 211101)

随着Internet在全球范围的普及,Web应用系统得到了广泛的应用。而在Web系统开发和维护阶段都将面临不断地变更,这些变更可以概括为3个方面:1)新需求的驱动;2)缺陷的修复;3)代码优化、代码移植。软件一旦有变更,测试必须进行验证。对于每一个变更都将涉及变更点本身实现的正确性验证,以及是否影响到原有功能的正确使用。回归测试的主要目的就是保证这两点能得到充分验证[1]。由于回归测试的工作涉及原来已测试通过的用例重复执行,流程固定、测试项目重复率高,所以最适合开展自动化测试工作。

1 Web自动化测试技术

1.1 自动化测试简介

自动化测试的定义就是使用软件工具来代替手工进行一系列动作,通常是使用脚本或者其他代码驱动应用程序,这一切可以通过用户界面(如浏览器)完成,也可以通过直接命令(从客户端发向服务器,以模仿浏览器发送的命令)完成[2]。

自动化测试需要有一个良好的框架,即从开发到运行层次清楚,操作方便。比如通过Web方式提交任务、查看结果等,并和测试执行、Bug跟踪系统集成。自动化测试的框架,可以理解为两个层次:一个层次只是在脚本开发上,相当于框架的开发平台,如何灵活的集成相应的测试工具,构造成关键字驱动或数据驱动的脚本[3]。另一个层次是在更高层面上管理整个框架,包括测试脚本的管理、测试的执行和测试结果的显示。

1.2 Web自动化测试驱动程序

目前可供使用的开源Web驱动程序有很多,代表是Selenium和Watir。表1对Selenium和Watir进行了一番比较,其中主要考察点集中在工具适用范围、支持语言和安装条件。

最终,考虑到Selenium的录制功能局限性和高复杂度,Ruby语言的全功能性及Watir的轻便、易上手等特点,选择Watir来作为自动化测试框架的驱动程序。

1.3 Watir简介

Watir(Web Application Testing in Ruby)是一个使用Ruby实现的开源工具,用于开发基于Web应用的自动化测试程序,并提供了轻量级的自动化测试程序框架和丰富的开发库。它的工作原理如图1,是通过DOM (Document Object Model)技术来获取web页面的元素。已经有很多大公司例如Facebook、HP、Yahoo等都在使用Watir进行 web应用测试,主要是应用在功能测试和回归测试中。

表1 Selenium和Watir的比较Tab.1 Comparison between selenium and watir

图1 Watir工作原理Fig.1 Working principal of watir

Watir的主要特性以及使用Watir开发自动化程序的优势如下:

1)Watir可以工作在任何包含C编译器的操作系统上,它能像人工操作一样驱动浏览器,包括链接点击、填写文本和按键操作等等,并且核对操作的正确性。

2)Watir 提 供 了 多 种 获 取 页 面 元 素 (button、checkbox、selectlist、link、image 等)的方法,可以测试各种 web 程序,如ASP.NET,JSP,PHP,Rails等。

3)Watir基于 Ruby语言,Ruby语言是一种面向对象的脚本语言,Ruby程序解释执行不用编译。

4)Watir程序可以通过Ruby提供的交互命令工具IRB(Interactive Ruby Shell)或者Eclipse来进行调试,方便调试人员快速定位程序的错误。

5)Ruby提供了Test::Unit单元测试框架,可以通过assert语句来判断结果的正确性。

6)Watir在驱动浏览器运行的时候,可以同时进行其他的操作甚至是运行多个Ruby的脚本,它们之间互不影响。

2 基于WATIR的WEB自动化回归测试

下面介绍自行设计的针对WEB系统自动化回归测试的框架。

2.1WATF测试脚本

首先介绍目前常用的几种脚本:

1)线性脚本:录制手工执行的测试用例得到的脚本,这种脚本包括所有的击键、移动和输入数据等,所有录制的测试用例都可以得到完整的回放。

2)结构化脚本:具有各种逻辑结构,包括选择性结构、分支结构、循环迭代结构、而且具有函数调用功能。

3)共享脚本:是指某个脚本可以被多个测试用例使用。

4)数据驱动脚本:将测试输入存储在独立的(数据)文件或数据库中,而不是存储在脚本中,使脚本的指令和数据分离。

5)关键字驱动脚本:数据驱动脚本的逻辑扩张,在数据和指令之间再增加一层关键字,用关键字来描述软件业务逻辑中的最小单元,业务逻辑的变化不会影响其脚本的底层。

表2显示了各种脚本的测试带来的成本和效益比较[3]。

表2 各脚本测试成本和收益比较Tab.2 Comparison among different test scripts in cost and profit

通过上述比较,可以看到数据驱动脚本和关键字驱动脚本效率最高,研究后WATF中的测试脚本采用关键字驱动脚本模式。

WATF采用关键字驱动机制,采用Excel格式存储,测试用例的关键字划分如图2所示。

图2 测试用例关键字划分Fig.2 Keyword division in test cases

关键字说明如下:

1)ID:作为测试用例的编号,可以定位测试过程中出错的位置;

2)Action:具体操作,包括 click、select、type、set和 goto;

3)Object:操作对象,即 Html页面中的元素,Watir的 API可以识别的控件对象包括按钮(button)、单选框(radio)、复选框 (checkbox)、 文 本 框 (textfield)、 下 拉 框 (selectlist)、 标 签(label)、链接(link)、图片(image);

4)Prop name:对象的标识属性,由于页面中的控件对象不是唯一的,所以需要通过控件的id、name等属性来找到实际操作的对象;

5)Prop Value:对象标识属性的值;

6)Parameter:传入参数,键盘或者鼠标的操作会输入具体的值到文本框中,这作为传入的参数;

7)Expected value:期望值,测试框架的目的就是为了找出系统的Bug,那么需要将期望值与实际的输出值进行对比,从而判断这条case运行正确与否。

这样,测试用例被清晰的表达成了对象、行为和数据,实现对象和数据的分离。之后通过程序的解析处理,获取用例中的关键字,从而生成测试脚本。

2.2WATF基本架构

WATF主要由测试用例库、测试脚本生成模块、测试控制模块和测试报告生成模块和缺陷控制模块组成,其整体架构如图3所示。

图3 WATF基本架构Fig.3 Basic structure of WATF

1)测试用例库:根据回归测试的特点,每次进行测试修改的只是部分功能。那么对每个待测系统的用例分别进行管理,每次进行回归测试只需修改少量的测试用例,提高了测试用例的复用率,使得脚本的维护和更新更加简单。

2)测试脚本生成模块:测试启动时,由程序加载并解析测试用例文件,根据已有的测试用例,解析后获取相应关键字,生成Watir能识别的测试脚本,从而动态生成测试流程,驱动测试自动执行,这样即实现了测试执行与测试逻辑的分离。

3)测试控制模块:此模块是整个框架的核心,主要功能是加载初始配置文件及测试脚本来驱动Web界面元素,模拟人工操作。初始配置文件包括测试环境、测试日志存放路径等信息。

4)测试报告生成模块:将测试脚本中传入的预期执行结果同测试过程中实际执行结果对比,判断测试是否通过,测试结果用PASS、FAIL和EXCEPTION分别表示运行正常、失败和测试过程中异常导致测试中止。测试运行结束后,根据定义好的测试报告模板,将测试结果输出到EXCEL文件中。测试人员可以通过查看测试报告和日志文件对运行失败的测试用例进行分析。

5)缺陷报告库:用来统一管理测试的缺陷,便于测试人员查看。

3 自动化测试框架的应用

为了分析采用自动化测试框架测试和全手工测试作业的效率,将WATF应用于某软件公司开发部,主要对于开发部内几款的Web应用产品进行回归测试。在相同的测试环境中对同一个功能模块分别进行自动化测试和手工测试,经过测试环境准备,测试用例编写,及测试的执行后,发现WATF给回归测试带来的效率提高是显著的,RT测试效率平均提高75%。同时,由于测试用例库的引入,在后期的开发过程中,可以重复利用大部分的测试用例,这样可以得到数倍于前期回归测试的效率提高。

4 结 论

文中通过对现有测试工具和测试脚本技术的对比研究,选择开源框架Watir作为驱动程序,设计了基于关键字驱动的自动化回归测试框架WATF。WATF中对于自动化测试过程中的测试用例生成、脚本生成、测试执行和测试结果管理都有相应的规范和模块,测试人员易于根据模块来理解测试框架,进而将WATF应用到实际测试作业中。相对于传统的全手工测试,利用WATF进行回归测试提高了75%的测试效率。将WATF应用于企业的回归测试,对于这类大量的重复测试工作具有很高的实用性,并带来可观的经济效益。

[1]肖利琼.软测之魂:核心测试设计精解[M].北京:电子工业出版社,2011.

[2]Ash,L.Web测试指南[M].北京:机械工业出版社,2004.

[3]朱少民.全程软件测试[M].北京:电子工业出版社,2007.

[4]Gogna N.Comparative study of browser based open source testing tools watir and wet[J].International Journal on Computer Science and Engineering,2011.

[5]贾丽,许静,金鑫,等.Web系统测试用例自动执行系统[J].计算机工程与应用,2009,45(4):82-85.

JIA Li,XU Jing,JIN Xin,et al.Test case auto-execution system for Web application[J].Computer Engineering and Applications,2009,45(4):82-85.

[6]接卉,兰雨晴,骆沛.一种关键字驱动的自动化测试框架[J].计算机应用研究,2009,26(3):927-929.

JIE Hui,LAN Yu-qing,LUO Pei.Keyword driven automated testing framework[J].Application Research of Computers,2009,26(3):927-929.

[7]杨杰荣,李先国.迭代开发模式中功能测试自动化的研究与实现[J].计算机工程与设计,2007,28(20):4862-4864.

YANG Jie-rong,LI Xian-guo.Research and implementation of automated function test in iterative development model[J].Computer Engineering and Design,2007,28(20):4862-4864.

[8]黄侨,葛世伦.开源Web自动化测试框架的改进研究[J].科学技术与工程,2012,12(15):3630-3635.

HUANG Qiao,GE Shi-lun.Research of improvement for open source web automatic testing framework[J].Science Technology and Engineering,2012,12(15):3630-3635.

[9]王晴.Web自动化测试研究与Watir框架开发 [D].武汉:武汉理工大学,2011.

猜你喜欢

关键字测试用例脚本
酒驾
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
安奇奇与小cool 龙(第二回)
基于SmartUnit的安全通信系统单元测试用例自动生成
成功避开“关键字”
基于混合遗传算法的回归测试用例集最小化研究
快乐假期
小编的新年愿望
基于依赖结构的测试用例优先级技术
软件回归测试用例选取方法研究