许瀚青 姚砺
摘 要:在迭代开发模式中需要执行大量的回归测试,为了提高测试效率和减轻手工测试的压力,提出了一种Web自动化的回归测试框架。通过对现有测试自动化工具的对比研究,文章选择Watir作为基本自动化框架,并对其进行封装修改生成一套新的Web自动化测试框架SAFIR。实际使用SAFIR进行回归测试,和手工测试相比效率提高了70%,大幅减少了回归测试上的人工投入。
关键词:回归测试;Web测试;自动化测试框架;Watir
引言
文章从Web自动化测试的种类,主流的测试工具和框架,以及Watir在网页自动化测试方面的优势,基于Watir的自动化测试框架并结合产品本身特点,分析将Watir框架进行二次开发和封装的可行性,最后得出结论,将基于Watir的自动化测试系统投入到回归测试中去。
1 Web自动化技术
1.1 自动化测试简介
Web自动化测试是使用软件工具通过编写脚本的方式, 对Web应用的界面主要元素进行一系列模拟手动的操作。
目前,市场上有很多Web自动化测试工具,QTP、Test Manager以及Watir都是不错的选择。QTP比较简单易学,但QTP执行速度较慢而且经济成本较高。Test Manager是微软Visual Studio的一个测试组件,使用的用户面狭窄且资源有限。Watir支持IE、FireFox和Chrome等主流浏览器,而且是个开源自动化工具。经过对比最终选择Watir作为自动化框架。
1.2 Watir简介
Watir是一种基于网页模式的自动化功能测试框架,用Ruby语言在Selenium-Webdriver的基础上进行二次封装,从而使得其API能够更好的符合Ruby语言的规范。而Ruby语言本身作为一种面向对象的脚本语言,运行效率高,语法简洁,可阅读性强,作为测试用例的脚本语言非常适合。
Watir通过DOM技术来获取Web页面的元素。作为一个的开源自动化测试框架,已经有很多公司例如HP、Facebook、阿里巴巴等都在使用它对Web应用进行功能测试和回归测试。
1.3 Watir框架存在的不足
虽然Watir已满足基本的自动化测试需求,但是它还在存在一些不足,譬如对外部文件数据的读取、测试日志的建立与导出、访问数据库等功能,这些Watir都还没有实现。而实现这些功能可以更加提高自动化测试的效率。因此,在使用Watir的基础上,对它进行二次开发,实现上述功能,完善watir自动化测试框架成为了课题。
2 Watir自动化测试设计与实现
2.1 产品背景以及SAFIR框架简介
Service Manager 是一款服务解决方案,IT部门能够通过这套系统对企业的部门和个人日常IT事务进行统一管理。由于这个系统基于B/S架构,所以测试时都是在网页浏览器上完成。公司为了提高回归测试效率,结合产品本身的特点,针对Watir框架中存在的不足,对常用页面元素进行封装,添加了文件读取、日志记录、访问数据库功能,开发出一套新的Web自动化测试框架-SAFIR(SM Automation Framework in Ruby)。
2.2 SAFIR框架的设计和实现
作为一套自动化网页测试工具,SAFIR支持获取网页的页面元素的功能,在获取页面元素之后对元素进行点击、输入,选中,复制和粘贴等操作。在测试数据处理方面,SAFIR能灵活导入导出文件,并且读取常用的数据文件类型比如csv、txt和xml。从准备数据,到执行测试步骤,验证预期与实际结果都会有日志记录下来,如果出现失败场景脚本会立即终止失败用例,并对失败的场景进行截图保存到日志文件夹,以便测试工程师分析失败原因。
在回归测试过程中,为了提高自动化代码的复用性,面向对象的思路设计测试框架是必须的,在框架底层我们定义了一个WebObject基类,他主要作用是实例化网页对象、定义log日志函数、定义失败场景的截图函数,Assert()结果验证函数。WebFrame类继承WebObject基类,初始化主要页面的页面区域,如导航面板、列表、详细信息、工具栏等区域,对他们进行封装。再根据每个区域内元素的特点定义所需要的方法和属性。在这两个底层类之上是一个公共函数库Common.rb,有许多使用频率极高的动作函数被定义在这个公共类库里,比如数据导入、导出、清空、用户登入登出和增删改查等等。在写测试脚本时,我们只需调用这几个区域中对象或者调用公共函数库的函数,即能达到代发复用性的目的。
2.3 测试用例层的设计
实现框架以后,利用框架提供的方法和属性,编写测试脚本。在SAFIR框架之中,测试脚本的执行是一个线性的过程。一个用例可分为四部分,首先是定义引用的框架文件,例如引用webObject.rb、Commons.rb、WebFrame.rb等文件。测试的前置工作,例如登录系统,数据备份都由Setup()来完成。Test()方法块,这是测试用例的核心,每个步骤封装成step1()、step2()等小的方法体定义在Test()方法中,目的是提高脚本的可读性和可维护性。当测试步骤做完以后,Teardown()方法块会删除测试数据、重置的文件、退出登录、关闭浏览器。
3 Watir自动化测试的执行结果
SAFIR现已应用于公司的的产品开发部,主要对于开发部内几款的Web 应用产品进行回归测试。在相同的测试环境中对同一个功能模块分别进行自动化测试和手工测试,和以往手工回归测试相比,自动化的回归测试缩减了70%的测试时间,而找到bug的概率却比手动回归测试提高了15%。可见自动化在回归测试中扮演者很重要的角色。随着产品开发不断深入,更多的自动化测试用例会被添加到回归测试之中,这样可以得到倍数与前期回归测试的效率提高。
4 结束语
文章通过对网页自动化测试的介绍和回归测试特点的分析,选择了开源自动化测试工具Watir作为框架,并结合公司项目产品设计了自动化回归测试框架SAFIR。SAFIR中對于自动化测试过程中的网页元素定位和操作、脚本编写、测试执行和测试结果分析都有相应的规范和模块,测试人员易于根据模块来理解测试框架,进而将SAFIR应用到实际测试作业中。相对于传统的手动测试,利用SAFIR进行回归测试提高了70%的测试效率。把SAFIR投入到企业的回归测试,对于此类大量的重复测试工作具有很高的实用性,并带来可观的经济效益。
参考文献
[1]杨合生,陈昱 ,张捷.软件自动化测试:入门、进阶与实战[M].电子工业出版社,2012:40-45.
[2]陈能技.软件测试技术大全:测试基础 流行工具 项目实战(第2版)[M].人民邮电出版社,2011:230-245.
[3]刘晓明.软件测试及其自动化模型的研究[M].江南大学,2009:90-101.
[4]沈佳宇,喻擎苍.基于Watir框架的Web自动化测试[J].2012.
[5]王晴.Web自动化测试研究与Watir框架开发[D].武汉理工大学,2011.
作者简介:许瀚青,男,籍贯:上海,职务:软件测试工程师,研究方向:软件自动化测试。