自动化测试做为很是专业的市场,不光对自动化测试的工程师技术要求很高,并且在工具选择也很是关键。不少公司的软件在以手动测试为主转换到更多应用自动化测试的过程当中,一大困惑是如何选择自动化测试产品。工具产品的选择不只决定着从此测试质量和自动化测试的开发效率。并且影响到技术人员的招聘,运营成本等多种因素。css
仅从成本角度考虑,开源软件没有工具软件的购置成本,可是开源工具的集成和测试框架的搭建须要耗费大量人力。另外,疑难问题若是没有厂商支持,会影响项目进度,也会致使大量的支出。若是从总拥有成本角度考虑(TCO),未必是最优的。html
为帮助各位根据本身的实际状况选择合适的工具,本文选取了自动化测试的几款典型的工具,从工具软件的各个方面进行比较。方便各位在选择工具的时候作有效的决策。UFT,RFT是老牌的自动化测试工具、生态相对封闭。CukeTest是开源软件Cucumber演变而来的软件,在开源社区被普遍的采用。前端
特性 | 惠普 Unified Function Testing | IBM Rational Functional Tester | 聆播科技CukeTest |
脚本管理 | 脚本文件的方式管理脚本,后期维护困难,复用率很低。目前很多厂商开发了UFT的脚本管理工具,但没法脱离脚本文件的基础,很难有质的改变。 | 分散管理脚本,用户在使用时需到相应用户处查找脚本,查找到脚本后才可以调用,无形增长了工做量。分散管理模式不能实现脚本实时更新,不能实现实时共享,致使脚本的复用率较低。 | 脚本管理采用先进的行为驱动(BDD)方式,基于测试场景管理测试用例。测试步骤与代码相关联。脚本易于维护。由于基于天然语言编写测试场景,有很强的可读性,非测试开发也可审阅和贡献测试用例。 |
易用性 | 工具的图形化操做功能比较简单; |
工具的图形化操做功能比较简单; |
用例开发部分采用可视化模式和文本模式两种方式,根据须要切换。代码部分使用流行的脚本编辑器。可从用例跳转到代码,或从代码转到用例文本。 |
使用配置 | 须要安装一系列工具,并配置licence。 | RFT安装复杂,配置步骤多。 | 多平台开发支持,包括MacOS、Windows等,开发的脚本还可在Linux上运行。从免费版开始,必定用量需安装License。 |
脚本语言 | VBS | Java、VB.NET | JavaScript,Node.js |
支持应用json
|
默认支持windows控件,VB,和ActiveX; |
默认支持大部分经常使用的应用程序。 |
支持各种应用包括Windows、移动端、Web、API等。移动端、Web、API等开发时需引入免费的开源库,无需额外成本。Windows应用测试可跟本公司另外一产品LeanRunner结合使用。 |
录制脚本 | 支持图形化的操做录制脚本; |
支持图形化的操做录制脚本; |
不提供录制,Web采用开源方案的对象识别,有丰富的公开文档,简单培训便可了解。Windows支持对象识别,添加到对象管理库后再自动生成对象调用代码。 |
参数化 | 支持图形化的数据表格式数据操做; |
支持指参数化数据; |
支持参数化。内置了行为驱动参数化功能。支持数据驱动,数据表可从外部导入,或将测试用例中已有的数据导出到Excel。 |
测试数据 加载 |
测试数据加载简单,使用内置函数能方便实现。 | 能够用封装的方法来动态加载数据,不过比较复杂,并且还得修改脚本中参数化的地方。 | 提供加载数据表的API。 |
对象识别 能力 |
有内置识别的比较标准的控件识别强; |
有内置识别的比较标准的控件识别强; |
对象识别使用了开源库Selenium的功能。是普遍使用的成熟方案,支持多种识别方式,包括Id,css, linkText, name, className, xPath等多种方式。 |
手动添加 对象 |
提供树形的对象选取方式,能够选择当前节点,也能够选择父节点或子节点,使用挺方便。 | 提供节点直接选择和对象遍历选择, |
手动添加对象是基于流行的Selenium的对象添加,市场上有众多的技术人员了解这些添加对象的方式,也有很是多的免费培训讲解。 |
脚本编辑 | 提供步骤编辑界面,方便不会不会编程的人员使用; |
只有脚本编辑器,没有步骤编辑器; |
集成流行的vscode引擎,相似vscode的脚本编辑器,提供智能提示 |
脚本调试 | HP为QTP加入了VBS调试功能; |
直接使用Eclipse调试Java的强大功能。 | JavaScript的调试方式,无需编译。另有多种按照场景的调试方式。由于是JavaScript语言,前端工程师也可参与开发调试。 |
回放速度 | 速度比较快。 | 速度通常。 | 采用Node.js引擎,和成熟的Selenium库,速度较快。 |
结果报告 | 树形显示各个步骤的执行状况。 |
提供多种形式的结果显示。 |
提供多种类型的html报告,其中有按照场景的汇总数据,以及每一个场景步骤的详细数据。每一个场景详细内容能够添加截屏或自定制数据。能够导出到PDF,另提供json报表数据,方便自定制。运行时能够自动录制视频。 |
扩展性 | 插件扩展,插件都由UFT厂商提供 | 有Jar包,几乎就能够扩展。 | 可以与多种开源的自动化库相结合使用,扩展自动化功能。由于基于流行的Node.js技术,Github上有众多数量的JavaScript库扩展功能。 |
集成性 | 提供了与其余程序结合的接口,对C#、VB和VBS结合性比较好。 |
提供了编写用例脚本的API,但产品自己功能不易扩展 | 提供多种类型html报表,json报表数据,方便自定制报表,有Jenkins插件支持,可在Jenkins中轻松实现持续集成 |
安全性 | 架构较封闭,不支持提供源码,安全性没法评估 | 架构较封闭,不支持提供源码,安全性没法评估 | 基于开源实现,提供执行引擎及自动化库源码,便于自主可控 |
价格 | 昂贵 | 较贵 | 通常 |
总结 | 功能全面,价格昂贵,自动化测试脚本生成较快,但对需求的频繁变化自适应能力差,从新录制的风险较大,脚本维护困难,回归持续100%经过率较低。在国内的市场占有率有逐年降低的趋势。 | RFT 的验证结构的功能比较强大,经过对 TestObject 的获取和使用,能够对 Eclipse 中的不少的 SWT/JFace 图形对象提供支持,并且也能够支持不少的验证种类;其次,它直观、易于理解。但RFT验证 API 的使用繁琐、可重用性低;也没有区分各个具体对象类型的差别,形成验证形式比较单一,从而不利于用户进行扩展操做;用例执行失败定位不方便,自动生成的脚本维护较困难。 | 性价比较高,可扩展性强。产品支持Web、接口、Android、IOS、Windows、Qt等。行为驱动让脚本维护更为方便。开发的脚本基于开源引擎执行,避免了供应商绑定。灵活开放能引入众多的开源库和解决方案,易扩展。 |
各软件在支持的语言、脚本开发、自动化技术、可扩展性、报告方面各有强项。相信你们在进行综合的比较后。对这几款工具备了初步的了解。在开源软件盛行的今天,由单一厂商提供大而全且价格昂贵的产品已再也不是潮流,反之,支持开源、开放、提高价值是软件产品的新的趋势。
由于篇幅关系,本文只比较了几款主流工具,若是要参考其它工具,也可填写相似的表格作详细的比较分析。