关于开源软件:DevOps进行时开源免费界面自动化测试工具对比研究-IDCF

56次阅读

共计 5631 个字符,预计需要花费 15 分钟才能阅读完成。

摘要

随着我行自动化测试施行范畴的不断扩大,参加界面自动化测试的利用零碎越来越多。我行的利用零碎现阶段多采纳商用工具 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 负责调用浏览器驱动运行自动化测试脚本。

图 1 Selenium Grid 架构图

Selenium 中定义了如下弱小的形容元素的定位办法:

  • 通过 id、name 定位,如:selenium.tye(“id=abc”,“百度”);selenium.type(“name=search”,“百度”)。
  • 通过 link= 链接文字定位,如 selenium.click(“link= 最近更改”)。
  • 依据 xpath 定位,如 selenium tpye(“xpath=//input[@name=‘user.email’,“xxx@qq.com”)。
  • 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 所示:

图 2 UIAutomation 的体系结构

  • 在服务端由 UIAutomationProvider.dll 和 UIAutomationTypes.dll 提供;
  • 在客户端由 UIAutomationClient.dll 和 UIAutomationTypes.dll 提供;
  • UIAutomationCore.dll 为 UI 自动化的外围局部,负责 Server 端和 Client 端的交互;
  • 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 罕用语法列举如下:

  • 创立一个 IE 的测试实例:ie=Watir::IE.new 或者应用 start 办法创立一个浏览器实例并转到一个页面,ie=Watir::IE.start(“http://abc.com”;);
  • 页面导航:ie.goto(“http://abc.com”;);
  • 操纵超链接、复选框、下拉框等 Web 页面对象,例:应用 name 属性设置复选框,ie.checkbox(:name,”check”).set。

2.4 Sahi

Sahi 是一款由印度公司 Tyto Software 开发的基于业务的开源 Web 自动化测试工具。Sahi 运行为一个代理服务器,并通过注入 JavaScript 来拜访 Web 页面中的元素。Sahi 反对 HTTPS 并且独立于 Web 站点,简略玲珑却功能强大。它绝对于 Selenium 等自动化测试工具,在动静 ID 元素查找和隐式页面期待解决等方面具备肯定的劣势。

Sahi 简略易用,可能很好地反对 Ajax 和 Web2.0 技术,同时实用于麻利和瀑布两种我的项目模式。Sahi 自带录制性能,反对简直所有的浏览器,且对 JS 反对较好,具备页面期待判断机制、内置 Java 异样报告、反对 Ajax 等劣势。尤其值得一提的是,Sahi 内置的智能页面期待机制,可能主动判断 Ajax 申请是否曾经处理完毕,而后持续下一步操作。并且这一点对于用户是“隐式”的,不须要减少额定的代码。

Sahi 的工作原理大抵分为三步:录制、精炼脚本和回放,具体步骤如下:

  • 录制:首先将 Sahi 其设置为浏览器的代理服务器,这样 Sahi 的脚本就可能通过 request 申请,注入到 JavaScript 里以拜访 Web 页面中的元素。
  • 精炼脚本:录制的脚本都是指定元素并惟一操作的,这时就须要对代码进行重构,抽取出外围的功能块,对其中的元素进行参数化解决,以实现重用。脚本中的数据能够从内部的数据库或文件中读取而来。同时,也可调用 Sahi 的 API 或内部 Java 等 API 实现一些特定的性能。
  • 回放:主动执行 Sahi 精炼好的脚本,并生成测试报告。

2.5 Katalon Studio

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 包实现更为简单的性能,该工具的扩展性很强。

2.6 Robot Framework

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 不与被测系统有任何关联。

三、工具剖析比照

这些工具都是开源 / 收费的界面自动化测试工具,咱们能够依据须要对其进行二次开发与封装,具备很强的灵活性。

3.1 反对浏览器及操作系统

以上工具都具备跨平台性的特色。

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 等多操作系统上运行。

3.2 入门的难易水平

Selenium 能够间接的通过 IDE 进行录制、回放等,升高了入门门槛,脚本的调试和保护须要肯定的编程根底;

UIAutomation 能够应用 spy++ 或者 inspect 等工具获取对象定位信息,再执行脚本编辑,入门门槛较高;

Watir 要求测试人员必须懂根本的 Ruby 语法规定,须要应用命令行装置,搭建集成环境简单,入门门槛较高;

Sahi 自带录制器,可通过点击页面来录制脚本,并对脚本进行精炼,反对多种数据源,入门门槛中等;

Katalon Studio 工具反对不同级别的测试人员应用。非程序员能够应用 Object Spy 来记录测试脚本。程序员能够更加节俭构建和保护脚本的工夫,并基于工具晋升扩展性,灵便实现所需性能;

Robot Framework 须要测试人员本人编写脚本,对于关键字测试驱动相熟的测试人员绝对容易上手,入门门槛较高。

3.3 反对的语言

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  工具比照剖析图

3.4 总结

综上,在 web 端的录制中 Katalon Studio 绝对简略易用,录制脚本可视化强,案例编写保护不便;Selenium 反对脚本语言较多。而 UIAutomation 在客户端的录制下面比拟成熟,定位信息精确。

四、结束语

本文比照总结了几种开源 / 收费的界面自动化测试工具。

目前,我行自动化测试平台(ATP)为反对不同利用零碎的界面自动化测试需要,曾经封装了 QTP、Selenium、UIAutomation 三款界面自动化测试工具,对用户提供对立的描述语言,屏蔽了工具间的差别,升高了自动化测试的入门门槛,较好地的满足了我的项目应用需要。

后续,咱们会进一步增强对开源 / 收费自动化测试工具的钻研,逐渐升高对商用工具的依赖。依据理论应用需要,适时引入新的界面自动化测试工具,并进行二次封装,满足不同类型利用零碎的自动化测试需要,升高应用的难度,节俭应用工夫,晋升测试效率。

起源:IDCF 社区

作者:农行 侯健琦 王唤宇

正文完
 0