首页 > Python自动化测试 阅读数:48

Python自动化测试常用工具有哪些

从分层测试的角度看,自动化测试应该逐层开展。最先实现自动化测试的应该是单元测试,它最容易实现也最容易在早期发现问题。其次是接口测试,以验证逻辑为目的进行自动化测试,由于接口的相对稳定,自动化测试成本相对也比较可观,也是目前大部分公司主推的一项自动化测试手段。

成本最大的便是 UI 级自动化测试,然而 UI 界面是直接反馈给用户的效果展示,尤其是 BVT 级的自动化测试,也是非常必要的。既然自动化能为研发工作带来这么多便利,到底有哪些工具或者框架可以用来做自动化测试呢?

目前市面上常用的自动化测试框架可粗略分为四类:Android 自动化测试框架、iOS 自动化测试框架、基于图像识别的自动化测试框架、常用通用型测试框架,如表 1 至表 4 所示(仅供参考)。

表 1:Android 自动化测试框架
工具/框架名称 介绍/特点 适用自动化测试类型
Monkey Monkey 是 Android SDK 自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等,可对正在开发的应用程序进行压力测试。由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性 UI级自动化测试
MonkeyRunner
MonkeyRunner 是 Android SDK 提供的测试工具。从严格意义上来说 MonkeyRunner 其实是一个 API 工具包,比 Monkey 强大,可以编写测试脚本来自定义数据、事件
UI级自动化测试
Instrumentation Instrumentation 是早期 Google 提供的 Android 自动化测试工具类。它 通过将主程序和测试程序运行在同一个进程来实现自动化测试。缺点 在于对测试人员编写代码能力要求较高,且不能跨多个 App UI级自动化测试
Robotium Robotium 是基于 Instrumentation 框架开发的一个更强的框架。对常用 的操作进行了易用性的封装。用于开发功能性、系统和验收测试场景。 在运行时会安装一个测试用例套件作为 Android 设备或仿真器上的应 用程序,并提供用于执行测试的真实环境。和 Instrumentation  —样, 它不支持跨 App UI级自动化测试
UIAutomator UIAutomator 是由 Google 提供的 Android 自动化测试框架,它提供了原生 Android App 和游戏的高级UI测试。基本上支持所有的 Android 事件操作,对比 Instrumentation,它不需要测试人员了解代码实现细节,缺点在于不支持 HybirdApp、Web App UI级自动化测试
Calabash
Calabash 是一个适用于 iOS 和 Android 开发者的跨平台 App 测试框架, 支持屏幕上的所有动作。缺点在于除了 Ruby,对其他编程语言的支持力度不够
UI级自动化测试
Appium Appium 是一个开源的、跨平台的自动化测试工具,支持 iOS、Android 和 FirefbxOS 平台。通过 Appium,开发者无须重新编译 App 或者做 任何调整,就可以测试移动应用,且支持多种脚本语言,如 Java、 Objective、PHP、Python、Ruby、C#、JavaScript 和 Perl UI级自动化测试
Selendroid Selendroid 是一个基于 Instrumentation 的框架。可以测试 Native App、HybirdApp、Web App, Selendroid 可以在模拟器和实际设备上使用, 但是网上资料较少,社区活跃度也不大 UI级自动化测试
Cafe
Cafe 是百度出品的一个基于 Robotium 的测试框架,它提供了跨进程的测试解决方案
UI级自动化测试
Athrun Athrun 是淘宝推出的一个移动测试框架,同时支持 Android 和 iOS。 Android 部分基于 Instrumentation,在 Android 原有的 Activity bistrumentation Test Case2 类基础上进行了扩展,提供了一整套面向对象的 APIO iOS 上的自动化测试包括注入式自动化框架 AppFramework 和基于录制的 自动化框架 Athrun iOS 和 InstrumentDriver UI级自动化测试
RoboSpock RoboSpock 是一个开源的 Android 测试框架,它提供了简单的编写 BDD (行为驱动开发)规范的方法,使用 Groovy 语言 代码级测试框架

表 2:iOS 自动化测试框架
工具/框架名称 介绍/特点 适用自动化测试类型
XCTest XCTest 是苹果在 iOS 7 和 Xcode 5 引入的一个简单而强大的测试框架, 它的测试代码编写起来非常简单,并且遵循 xUnit 风格。XCTest 的优点是与 Xcode 深度集成,有专门的 Test 导航栏,但因为受限于官方测试 API,功能不是很丰富 UI级自动化测试
UIAutomation UIAutomation 是苹果提供的 UI 自动化测试框架,使用 JavaScript 编写。 基于 UIAutomation 有扩展型的工具框架和驱动型框架 UI级自动化测试
Frank Frank 是 iOS 平台的一款非常受欢迎的 App 测试框架,它使用 Cucumber 语言来编写测试用例。Frank 要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的 UI级自动化测试
KIF KIF 是 KeepItFunctiona 1 的缩写,是一款 iOS App 功能性测试框架,使用 Objective-C 语言编写,对苹果开发者来说非常容易上手,是一款被开发者广泛推荐的测试工具 UI级自动化测试
Subliminal Subliminal 是另一款与 XCTest 集成的框架。与 KIF 不同的是,它基于 UIAutomation 编写,旨在对开发者隐藏 UIAutomation 中一些复杂的细节 UI级自动化测试

表 3:基于图像识别的自动化测试框架
工具/框架名称 介绍/特点 适用自动化测试类型
Sikuli Sikuli 是由 MIT 的研究团队发布的新型图形化编程技术。它以图像检索技术为基础,提供了一套基于 Python 的脚本语言及集成开发环境。使用者可利用屏幕截图直接引用 GUI 元素进行编程,完成交互操作。这种方式使得使用者在编写脚本时,无须关心烦琐的应用程序内部实现 UI级自动化测试
Airtest Airtest 是网易出品的一款基于图像识别和 poco 控件识别的 UI 自动化测 试工具。和 Sikuli 框架的原理类似,用户不需要一行行写代码,而是用屏幕截屏的方式。另外,Airtest 基于 POCO 这个 UI 控件实现了可通过 控件来识别元素,原理类似于 Appium,通过控件的 name、id 等属性来定位目标控件 UI级自动化测试

表 4:常用通用型测试框架
工具/框架名称 介绍/特点 适用自动化测试类型
SoapUI SoapUI 是一个开源测试工具,通过 Soap/HTTP 来检查调用 Web Service 的功能、负载、符合性。该工具既可作为一个单独的测试软件使用,也可利用插件集成到 Eclipse、Maven、IDEA 等编辑器中 接口级自动化测试
JMeter JMeter 是 Apache 开发的基于 Java 的一款开源压力测试工具。常用于接口测试和性能测试。优点在于体积小、功能全、使用方便,是 一个比较轻量级的测试工具。JMeter 是免安装的,拿到安装包之后 直接解压就可以使用,支持跨平台使用 接口级自动化测试
Postman Postman 是 Chrome 浏览器的一个插件,也可以单独安装使用。常用于网页调试与 HTTP 请求的接口测试,能够发送任何类型的 HTTP 请求 接口级自动化测试
Robot Framework Robot Framework 是用于验收测试和验收测试驱动开发(ATDD)的自动化测试框架。基于 Python 编写,也可以在 Jython(Java) 和 IronPython(.NET) 上运行,提供跨平台支持 通用型自动化测试
JUnit JUnit 是一款针对 Java 应用的单元测试框架,用于编写和运行可重复的测试。优点在于支持测试驱动开发、允许创建自己的单元测试用例套件、能很好地与其他工具(如 Maven)和 IDEA 集成 接口级自动化测试、代码级自动化测试
Spock Spock 是用于 Java 和 Groovy 应用的测试和规范框架,基于 JUnit。 优点在于支持数据驱动测试(DDT)且内置 Mock 和 Stub 功能 代码级自动化测试
NUnit NUnit 是基于 .Net 语言的单元测试框架。最初基于 JUnit,完全采用 C# 编写,目前已被完全重新设计以使用更多 .Net 语言功能。优点在于启动和测试执行速度快、自带断言和注释、支持并行测试 代码级自动化测试
TestNG TestNG 是一个 Java 自动化测试框架,受 JUnit 和 NUnit 的启发,改进和新增了一些功能。旨在涵盖所有自动化测试类别:单元测试、功能测试、端到端测试、集成测试等 接口级自动化测试、代码级自动化测试
Selenium Selenium 是一个用于 Web 应用程序测试的工具。通过 Selenium 可以直接操作浏览器,就像真正的用户在操作一样 UI级自动化测试
Cucumber Cucumber 是一个能够理解用普通语言描述的测试用例的行为驱动开发的自动化测试工具,用 Ruby 编写,支持 Java 和 .Net 等多种开 发语言
接口级自动化测试、UI级自动化测试
FitNesse FitNesse 是一款开源验收测试框架,主要用于敏捷方式的黑盒验收和回归测试,它也是一个协作工具,可支撑开发和测试、研发和业务人员一起准备测试用例集 通用型自动化测试
Gauge Gauge 是一个自动化测试工具,主要通过 .spec 文件指定执行的步骤,然后由 Java 代码去测试。Gauge 的基本思想就是通过 .spec 或 .md 文件使用 Markdown 语法去规定执行的动作,然后由 Java 或者其他语言的文件按照所写的 .spec 或者 .md 文件的顺序去执行 Java 文件,从而达到测试的目的 接口级自动化测试
REST Assured REST Assured 是一个能够简化测试 REST 服务的 Java DSL,像 Ruby 或者 Python 动态语言一样测试和验证 HTTP 服务。基于 Java 并且兼容 Groovy 动态语言的特性,使我们可以像写脚本语言一样测试 HTTP 服务 接口级自动化测试、代码级自动化测试