随着我行自动化测试实施范围的不断扩大,参与界面自动化测试的应用系统愈来愈多。我行的应用系统现阶段多采用商用工具QTP(UFT)做为执行工具来进行界面自动化测试,采购的QTP license是有限的,使得资源的竞争愈来愈激烈。将来,使用开源/免费的界面自动化测试代替QTP,是必然发展的趋势。程序员
本文基于前期调研结果,对比分析了几款业界主流的开源界面自动化测试工具,供自动化测试相关人员学习参考。web
关键字:开源、自动化测试、Selenium、UIAutomation数据库
自动化测试由手工测试发展而来,在当前商业银行“持续迭代、快速交付”的大背景下,自动化测试是必然趋势。对于投产前的全量回归测试和大量数据的业务逻辑覆盖测试,自动化测试将大大的减小人力投入,提高测试效率,扩大测试覆盖面,下降投产风险。编程
前期,我行界面自动化测试工具主要依赖QuickTest Professional(简称QTP,现已升级改名为UFT)。该软件具备价格昂贵、客户端架构庞大、license有限、对部分C/S类应用(好比:BoEing客户端、银企通客户端、海外分行OIBS客户端等)支持不良等缘由,其被开源或免费的自动化测试工具取代是必然趋势。segmentfault
前期,系统支持部组织调研了十余款界面自动化测试工具,下面介绍几种业界主流的开源/免费界面自动化测试工具。浏览器
Selenium是Throught Works公司开发的开源Web功能测试工具集,是当前web端系统最受欢迎的开源自动化测试工具之一。Selenium包含了测试的录制(Selenium IDE),测试的并行处理(Selenium Grid),编写与运行(Selenium Remote Control)。服务器
Selenium Grid主要架构图如图1所示,Selenium Grid主要包含两个核心组件:Selenium Hub与Remote Control(简称RC,或Selenium RC)。Selenium hub负责分发测试用例给Selenium RC;Selenium RC负责调用浏览器驱动运行自动化测试脚本。架构
图1 Selenium Grid架构图框架
Selenium中定义了以下强大的描述元素的定位方法:编程语言
UIAutomation是微软开发的界面自动化测试工具,是.NET Framework的组件之一,可进行C/S类应用的界面自动化测试。此自动化库一开始就是为可访问性和UI测试自动化任务而专门设计的,使用UI自动化库来测试运行支持.NET Framework的操做系统,例如Windows XP、Windows Vista、Windows 七、Windows Server 2003和Windows Server 2008等操做系统主机上的Win32应用程序、.NET Windows窗体应用程序和WPF应用程序。
在UIAutomation中,全部的窗体、控件都表现为一个AutomationElement,AutomationElement中包含此控件或窗体的属性,在实现自动化的过程当中,经过其相关属性进行对控件自动化操做。全部显示在桌面上的UI,其其实是一个UI Tree,根节点是Desktop。
在UIAutomation中,根节点表示为AutomationElement RootElement。经过根节点,能够经过窗体或控件的Process Id、Process Names或者Windows Name找到相应的子AutomationElement,例如Dialog、Button、TextBox、CheckBox等标准控件,经过控件所对应的Pattern进行相关的操做。
UIAutomation的体系结构如图2所示:
图2 UIAutomation的体系结构
Watir是基于Ruby库的开源Web自动化测试工具,支持Firefox、Opera、IE等浏览器。Watir脚本以.rb为文件扩展名,脚本头应为“require ‘watir’”,确保能够访问Watir工具。Watir脚本的运行模式是Watir-WebDriver,Watir-WebDriver是基于Ruby开发web驱动框架,支持全部的HTML元素。目前网上关于Watir的介绍资料较少。
在设计Watir自动化测试脚本时须要熟悉经常使用的Ruby脚本语法。Watir经常使用语法列举以下:
Sahi是一款由印度公司Tyto Software开发的基于业务的开源Web自动化测试工具。Sahi运行为一个代理服务器,并经过注入JavaScript来访问Web页面中的元素。Sahi支持HTTPS而且独立于Web站点,简单小巧却功能强大。它相对于Selenium等自动化测试工具,在动态ID元素查找和隐式页面等待处理等方面具备必定的优点。
Sahi简单易用,可以很好地支持Ajax和Web2.0技术,同时适用于敏捷和瀑布两种项目模式。Sahi自带录制功能,支持几乎全部的浏览器,且对JS支持较好,具有页面等待判断机制、内置Java异常报告、支持Ajax等优点。尤为值得一提的是,Sahi内置的智能页面等待机制,可以自动判断Ajax请求是否已经处理完毕,而后继续下一步操做。而且这一点对于用户是“隐式”的,不须要增长额外的代码。
Sahi的工做原理大体分为三步:录制、精炼脚本和回放,具体步骤以下:
Katalon Studio是一款功能强大的测试自动化解决方案,适用于Web应用程序,支持Mobile、Web、API等类型的自动化测试。它基于Selenium和Appium框架构建,Katalon Studio利用这些解决方案实现集成软件自动化。
Katalon Studio能够集成到CI/CD流程中,而且能够与QA流程中的流行工具配合使用,包括qTest,JIRA,Jenkins和Git。它还提供一个称之为Katalon Analytics的功能,这个功能能够经过仪表板为用户提供测试执行报告的全面视图,包括图表、图形和指标等。Katalon Studio能够管理页面元素、测试数据、测试案例、生成自动化测试报告等,覆盖整个自动化测试流程及所需资产。Katalon Studio容许用户自定义Method,Test Listeners、KeyWord,也能够导入外部的jar包实现更为复杂的功能,该工具的扩展性很强。
Robot Framework是由诺基亚-西门子基于Python开发的一套开源自动化测试工具,采用关键字驱动,并能够经过Python或Java实现的测试库进行扩展,用户可使用与建立测试用例相同的语法从现有的关键字建立新的更高级别的关键字。
Robot Framework框架是跨平台的,独立于操做系统和应用程序。核心框架使用Python实现,支持Python2和Python3,而且还能够在Jython(JVM),IronPython(.NET)和PyPy上运行。该框架有丰富的测试库生态,由各类通用测试库(包括内置库、扩展库和自定义库)和工具组成,这些库被做为单独的项目开发。
Robot Framework做为一款跨平台的通用的、与应用程序和技术无关的测试框架,具备一个高度模块化的架构,具体的架构以下:
图3 Robot Framework测试架构图
该架构清晰的将测试工做分红了4层:数据层、测试框架、测试库或第三方测试工具、被测系统。Robot Framework起到了一个承上启下的测试管理平台,以测试库和第三方工具驱动测试数据对被测系统开展自动化测试,整个测试过程Robot Framework不与被测系统有任何关联。
这些工具都是开源/免费的界面自动化测试工具,咱们能够根据须要对其进行二次开发与封装,具备很强的灵活性。
以上工具都具备跨平台性的特征。
Selenium支持多种浏览器,支持Safari、Google、Chrome、Internet Explorer、Firefox等多种浏览器,能够在Mac、Linux、Windows等多种操做系统上运行;
UIAutomation主要支持客户端应用的录制,对于web端的控件识别能力有限,不建议使用其实施B/S类应用的界面自动化测试。
Sahi一样支持Safari、Google、Chrome、Internet Explorer、Firefox等多种浏览器,能够在Windows、Linux等操做系统上运行;
Watir-WebDriver几乎支持全部的浏览器,好比Chrome、Internet Explorer、Firefox等多种浏览器,可是不支持Safari,能够在Mac、Linux、Windows等多操做系统上运行;
Katalon Studio支持Chrome、Internet Explorer、Firefox等多种浏览器,能够在Mac、Linux、Windows等多操做系统上运行。
Robot Framework可经过集成插件支持多种浏览器,能够在Mac、Linux、Windows等多操做系统上运行。
Selenium能够直接的经过IDE进行录制、回放等,下降了入门门槛,脚本的调试和维护须要必定的编程基础;
UIAutomation可使用spy++或者inspect等工具获取对象定位信息,再执行脚本编辑,入门门槛较高;
Watir要求测试人员必须懂基本的Ruby语法规则,须要使用命令行安装,搭建集成环境复杂,入门门槛较高;
Sahi自带录制器,可经过点击页面来录制脚本,并对脚本进行精炼,支持多种数据源,入门门槛中等;
Katalon Studio工具支持不一样级别的测试人员使用。非程序员可使用Object Spy来记录测试脚本。程序员能够更加节省构建和维护脚本的时间,并基于工具提高扩展性,灵活实现所需功能;
Robot Framework须要测试人员本身编写脚本,对于关键字测试驱动熟悉的测试人员相对容易上手,入门门槛较高。
Selenium支持多种编程语言,例如Java、PHP、Python、Ruby等。与其余自动化测试相比,Selenium给予用户自定义测试脚本的多种方式。
UIAutomation主要支持C#;Watir仅仅支持Ruby语言;Sahi主要支持Sahi script,同时还支持Java和Ruby;Katalon Studio支持Java和Groovy;Robot Framework支持Python、Java。相比较而言,Selenium支持多种编程语言,灵活性较强。
根据以上分析和对比,整理表1工具分析对比图。
表 1 工具对比分析图
综上,在web端的录制中Katalon Studio相对简单易用,录制脚本可视化强,案例编写维护方便;Selenium支持脚本语言较多。而UIAutomation在客户端的录制上面比较成熟,定位信息准确。
本文对比总结了几种开源/免费的界面自动化测试工具。
目前,我行自动化测试平台(ATP)为支持不一样应用系统的界面自动化测试需求,已经封装了QTP、Selenium、UIAutomation三款界面自动化测试工具,对用户提供统一的描述语言,屏蔽了工具间的差别,下降了自动化测试的入门门槛,较好地的知足了项目使用需求。
后续,咱们会进一步增强对开源/免费自动化测试工具的研究,逐步下降对商用工具的依赖。根据实际使用需求,适时引入新的界面自动化测试工具,并进行二次封装,知足不一样类型应用系统的自动化测试需求,下降使用的难度,节省使用时间,提高测试效率。
来源:IDCF社区做者:农行 侯健琦 王唤宇