开源/免费界面自动化测试工具对比研究

2019-09-10 15:58:34 采集侠

随着我行自动化测试实施范围的不断扩大,参与界面自动化测试的应用系统越来越多。我行的应用系统现阶段多采用商用工具QTP(UFT)作为执行工具来进行界面自动化测试,采购的QTP license是有限的,使得资源的竞争越来越激烈。未来,使用开源/免费的界面自动化测试代替QTP,是必然发展的趋势。本文基于前期调研结果,对比分析了几款业界主流的开源界面自动化测试工具,供自动化测试相关人员学习参考。

关键字:开源、自动化测试、Selenium、UIAutomation

调研背景与意义

自动化测试由手工测试发展而来,在当前商业银行“持续迭代、快速交付”的大背景下,自动化测试是必然趋势。对于投产前的全量回归测试和大量数据的业务逻辑覆盖测试,自动化测试将大大的减少人力投入,提升测试效率,扩大测试覆盖面,降低投产风险。

前期,我行界面自动化测试工具主要依赖QuickTest Professional(简称QTP,现已升级更名为UFT)。该软件具有价格昂贵、客户端架构庞大、license有限、对部分C/S类应用(比如:BoEing客户端、银企通客户端、海外分行OIBS客户端等)支持不良等原因,其被开源或免费的自动化测试工具取代是必然趋势。

工具介绍

前期,系统支持部组织调研了十余款界面自动化测试工具,下面介绍几种业界主流的开源/免费界面自动化测试工具。

2.1 Selenium

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负责调用浏览器驱动运行自动化测试脚本。

开源/免费界面自动化测试工具对比研究

Selenium Grid架构图

Selenium中定义了如下强大的描述元素的定位方法:

(1)通过id、name定位,如:selenium.tye(“id=abc”,“百度”);selenium.type(“name=search”,“百度”)。

(2)通过link=链接文字定位,如selenium.click(“link=最近更改”)。

(3)根据xpath定位,如selenium tpye(“xpath=//input[@name=‘user.email’,“xxx@qq.com”)。

(4)Dom选择及Css选择器定位(不常用)。

2.2 UIAutomation

UIAutomation是微软开发的界面自动化测试工具,是.NET Framework的组件之一,可进行C/S类应用的界面自动化测试。此自动化库一开始就是为可访问性和UI测试自动化任务而专门设计的,使用UI自动化库来测试运行支持.NET Framework的操作系统,例如Windows XP、Windows Vista、Windows 7、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所示:

开源/免费界面自动化测试工具对比研究

UIAutomation的体系结构

(1)在服务端由UIAutomationProvider.dll和UIAutomationTypes.dll提供;

(2)在客户端由UIAutomationClient.dll和UIAutomationTypes.dll提供;

(3)UIAutomationCore.dll为UI自动化的核心部分,负责Server端和Client端的交互;

(4)UIAutomationClientSideProvides.dll为客户端程序提供自动化支持。

2.3 Watir

Watir是基于Ruby库的开源Web自动化测试工具,支持Firefox、Opera、IE等浏览器。Watir脚本以.rb为文件扩展名,脚本头应为“require ‘watir’”,确保可以访问Watir工具。Watir脚本的运行模式是Watir-WebDriver,Watir-WebDriver是基于Ruby开发web驱动框架,支持所有的HTML元素。目前网上关于Watir的介绍资料较少。

在设计Watir自动化测试脚本时需要熟悉常用的Ruby脚本语法。Watir常用语法列举如下:

(1)创建一个IE的测试实例:ie=Watir::IE.new或者使用start方法创建一个浏览器实例并转到一个页面,ie=Watir::IE.start(“”;);

(2)页面导航:ie.goto(“”;);

(3)操纵超链接、复选框、下拉框等Web页面对象,例:使用name属性设置复选框,ie.checkbox(:name,”check”).set。

2.4 Sahi