潘晓利,刘永志
(1.河源职业技术学院电信学院,河源 517000;2.南京航天航空大学计算机科学与技术学院,南京 210016;3.宣城职业技术学院信息工程系,宣城 242000)
基于Web应用系统自动化技术的探索
潘晓利1,刘永志2,3
(1.河源职业技术学院电信学院,河源517000;2.南京航天航空大学计算机科学与技术学院,南京210016;3.宣城职业技术学院信息工程系,宣城242000)
近十几年来,Web的发展十分迅速,技术演变也比较快,从静态HTML到动态的ASP、JSP等再到近期流行的ajax、xml、openAPI、云,让人眼花缭乱。自动化测试技术在这一阶段也有长足的发展,涌现出不少优秀的产品,例如被HP收购的QTP、LoadRunner,IBM的RFT、开源界的Selenium等,各具特色。这些自动化测试工具对软件的质量保障起着至关重要的作用,很大程度上提高了测试效率,扩大了测试覆盖范围,尤其是在可持续集成呼声日高的今天,自动化测试已经成为了软件开发中不可或缺的一环。
对Web系统或Web应用来说,可用的自动化工具比较多,商业产品、开源产品都有很丰富的选择。但因为对JavaScript的支持、自定义控件的支持等原因,都不能做到开箱即用,需要加以整合、二次开发。
Watir,是近几年比较流行的一个Web测试框架,以Ruby语言开发,提供IE浏览器驱动,以DOM形式分析页面,对页面对象通过属性进行识别。因其简单的学习曲线及功能足够使用,用户社区十分活跃,正在被越来越到的用户采用。
AutoIt是一个Windows平台上的批处理工具,简单易用,随着版本的演进,也成为了一种GUI自动化操作工具,提供类BASIC的脚本语言,利用模拟键盘、鼠标的动作来完成自动化任务。在Windows桌面应用上有很好的用户基础。
Cucumber是在RSpec基础上发展出来的一个BDD框架,提供一种基于业务语言描述的测试用例写法,通过将业务语言与自动化脚本映射进行自动化测试,提供对需求覆盖的支持、对数据驱动测试的支持等。有较广泛的用户群。
传统的Web自动化测试工具,大都还专注在页面DOM对象识别方面,对新兴技术例如AJAX等缺乏有效的支持。
常见工具无法单独处理复杂Web页面中存在的如下几个问题:①Web页面包含Flash,或Web页面本身就是Flash;②Web页面中使用了ActiveX插件;③Web页面中包含自定义的JavaScript框架或对象;④Web系统大量使用AJAX技术。
本文基于上述背景,提出集成Watir、AutoIt、Cucumber作为自动化测试系统,具有灵活、可扩展的优势。它利用Watir驱动浏览器模拟用户行为动作,AutoIt处理activeX插件,Cucumber进行业务描述与测试脚本的匹配,通过plugin的方式引入对Flash对象的支持,以Page Object方式组织脚本。主要解决了UI对象变动导致的后续维护工作量大、Flash及AJAX缺乏必要支持等问题。
本自动化测试系统的架构图如图1所示,依次分为测试支撑层、测试描述层、测试管理层3层。测试支撑层主要以Watir框架、AutoIt的dll库为主要组件,以plugin的方式引入对Flash、AJAX等的支持,以Page Object的方式进行封装;测试描述层以Cucumber框架为基础,在其上自定义feature文件来描述测试用例;测试管理层提供Web和管理客户端两种方式,对资源进行调度,驱动任务执行,收集测试结果。
图1 系统框架图
图2 系统运行逻辑示意图
使用系统进行自动化测试时,Web或管理客户端会从bug管理系统抽取测试用例,驱动支撑库进行测试,流程如图2所示。
(1)浏览器驱动及页面对象识别
对浏览器的驱动和页面对象的识别,以Watir框架为基础,从watir-classic中的代码可以看出,Watir原生只提供了IE的驱动,对于FireFox、Chrome等浏览器,需要导入webdriver模块。简单的对象,如button、文本输入框等,可以简单的通过对象属性来进行识别。例如一个登录页面的用户名部分,HTML代码描述如下:<input id="txtUserName"name="txtUserName"type=" text"value=""size="25"style="background-color:transparent;border:0px"/></td>,要将其用户名输入设为admin,可通过以下脚本处:ie.text_field(:id,"txtUserName"). set('admin')。
对于复杂的页面对象,例如图3所示的时间选择框,HTML描述比较复杂,并且随着时间的不同,某一天是周一还是周二也会随之变化,需要动态进行处理,这里我们需要引入如图4所示的代码。在页面对象能够逐一识别后,将同一页面的对象封装到一个Page Object对象中。
图3 时间选择框
图4 时间框选择脚本
(2)业务语言描述的测试用例
自动化测试用例的编写,对普通测试工程师来说,需要熟悉脚本语言的开发,门槛一直比较高。在本系统中我们引入了业务语言描述,测试工程师可以按照既定规则编写业务语言描述的测试用例,测试开发工程师再将业务描述的用例与测试脚本进行映射,测试脚本中使用的对象通常对放在Page Object库中。如下图所示:
图5
(3)浏览器插件支持
对于页面中嵌入的ActiveX插件,例如播放器插件等,Watir并不能够识别,需要引入AutoIt库来提供支持。下图是点击打开文件选择框选择文件的代码实
图6
(4)Flash对象支持
Flash对象的支持,在sahi等商用测试工具中目前也处于demo状态,没有很好的工业级实现。在本系统中我们将FlashWatir作为plugin进行集成,从而实现对内嵌Flash的控制。示例代码如下图:
图7
本系统在业界进行了小范围试用,能够比较好地支持目前常见的浏览器如IE、FireFox、Chrome等,可以正常对普通Web页面、包含Flash对象的页面、带有插件的页面等进行自动化测试。与传统的Web自动化测试工具相比,系统支持的技术对象更加丰富,轻量级更便于部署,测试资源的调度分配更灵活。图8是NMS的一条业务语言描述的测试用例,图9是一个测试套运行结束的结果及运行配置需要注意的前后次序设置。
图8 业务语言描述的测试用例
本系统实现了对常用Web系统的自动化测试,能够比较灵活的调度测试资源、收集测试结果,以数据驱动方式运行测试。但在Flash对象的支持方面,还需要开发将测试的swf纳入代码重新编译,并非严格的黑盒系统,对测试资源的调度策略也仅实现了任务数的有无,并未考虑到CPU、内存等资源占用情况,对于测试过程中的验证,手段也比较杂乱,没有做统一的封装,后续还有很大的改进空间。从打造一个云测试系统来说,后期主要考虑改进Flash对象的支持黑盒化,资源调度及任务分派等方面向云平台靠拢。
图9
[1]CHAI Tao-lun.Automated universal testing and tutoring system for Web application.Computer Science and Information Technology,Aug 2009.
[2]AutoIt J Kohl,P Rogers.Watir works.Better Software,2005.
[3]http://www.autoitscript.com/site/autoit/.
Web;Automatic Testing;Watir;AutoIt;Cucumber
Application of Automatic Technology System Based on Web Technology
PAN Xiao-li1,LIU Yong-zhi2,3
(1.Heyuan Polytechnic,Heyuan 517000;2.Nangjing University of Aeronautics and Astronautics,Nanjing 210016;3.Xuancheng Vocational&Technical College,Xuancheng 242000)
1007-1423(2015)29-0069-04
10.3969/j.issn.1007-1423.2015.29.017
潘晓利(1978-),女,洛阳伊川人,讲师,硕士,研究方向为嵌入式软件技术应用
2015-08-18
2015-10-10
基于当前Web测试中存在的问题,提出集成Watir、AutoIt、Cucumber作为自动化测试系统。它利用Watir驱动浏览器模拟用户行为动作,AutoIt处理ActiveX插件,Cucumber进行业务描述与测试脚本的匹配,通过plugin的方式引入对Flash对象的支持,以Page Object方式组织脚本。主要解决了UI对象变动导致的后续维护工作量大、Flash及AJAX缺乏必要支持等问题,能够比较好地支持目前常见的浏览器如IE、FireFox、Chrome等,可以正常对普通Web页面、包含Flash对象的页面、带有插件的页面等进行自动化测试。该系统具有灵活、可扩展的优势。
Web;自动化测试;Watir;AutoIt;Cucumber
安徽省质量工程项目(No.20101452)、安徽高校基金重点课题(No.KJ2014A285)
刘永志(1973-),男,博士,副教授,高工,研究方向为软件技术与数据挖掘
Presents an integrated Watir,AutoIt,Cucumber automated testing system based on the current Web testing problems.It uses Watir to drive browser simulated user actions,AutoIt to ActiveX plug-ins,Cucumber service to descript and test script matching,plugin to support the flash object,Page Object to organize script.This system is to solve the problems of the object movements leading to the subsequent maintenance workload,Flash and AJAX lack the necessary support and other issues.This system can be better support the current browsers such as IE,FireFox,Chrome for test automation.The system has a flexible,extensible advantage.