概述:
自动化测试在产品测试中起着非常重要的作用。它能够给项目开发带来诸多好处:在产品开发阶段,重复可靠的运行,确保没有回归方面的问题;在产品面临交互的关键时刻,用最短的时间覆盖最大化面积的测试执行区域;它重复地进行着每个周期的回归测试,最大限度地减少人为错误所产生的风险或疏忽。
在市场上有很多的自动化测试工具,有开源的,也有付费的,其中前者被广泛应用在自动化测试社区,如果你想要在项目中选择合适的开源自动化工具,会相当的棘手。 以下笔者收集了移动开发常用的五个开源自动化工具,供你参考。
1) Calabash (可用于Android和iOS开发)Calabash是一个用于Android和iOS自动化验收的开源的测试框架。作为一个跨平台的框架,它为Android和iOS的自动化测试提供了独立的库,支持Cucumber——通过自然的英语传递应用行为从而实现BDD(行为驱动开发)。
Calabash提供了一条连接Cucumber测试工具与移动端操作系统的桥梁。所编写的Cucumber测试声明列表会形成不同的测试场景,而这些声明全都是由Ruby定义的。
在Calabash中,一个Cucumber的声明只允许被定义一次,但是可重复运用到一个Cucumber脚本下的多个不同的场景之中。
实际的测试都是由Gherkin语言进行编写(在feature文件中),再转译成Ruby语言,然后运行在Cucumber框架之中。
优点:
- 庞大的社区支持。
- 简单而富有表现力的测试声明(如通过英语传递)
- 支持屏幕上的所有行为,如滑动、缩放、旋转等。
- 热情富有活力的社区。
- 支持跨平台开发。(同样的代码既可运行在Android上也可运行在iOS上)
缺点:
- 某个测试步骤一旦出现问题后,后续的步骤将会跳过。这会造成更加严重的产品问题。
- 由于在默认情况下会首先安装应用程序,因此运行测试会需要一段时间。当然,我们可以通过代码来改变配置。
- 在iOS中需要将Calabash框架转化进ipa文件里。
- 在iOS中需要应用程序的代码。
- 除了Ruby,其它所涉及的语言(如Gherkin)不友好。
Appium是由Sauce Labs公司开发的一个用于本地、混合、移动web应用程序的开源自动化测试框架。Appium框架中的库函数可调用运行在后台操作连接设备的Appium服务器,在内部它使用JSONWire协议与使用Selenium WebDriver 的iOS或Android应用程序产生联系。
与主要由Ruby支持的Calabash不同的是,Appium使用的框架语言可由你任意选择,这其中包括Java、 Python、 Ruby和所有其它Selenium WebDriver支持的语言。
Appium服务器被托管在节点服务器之上。你可以通过一组节点命令来开启Appium服务器。如果你使用Appium独立应用程序来作为你的服务器(从Appium网站下载),Inspector工具就可以对你应用程序上的所有定位器(Locator)进行定位/识别/操作。
优点:
- 支持多种语言。
- 不需要对访问源代码。
- 庞大的社区支持。
- 支持Mac的脚本记录。
- 可使用Appium服务器应用程序的“Inspector”工具来提取标识符。
- 内置支持‘Selendroid’的Appium服务器桌面应用程序。
- 支持使用供应商提供的框架: UIAutomation for iOS、UIAutomator for android 4.2+
及Selendroid for android 2.3+。 - 支持物理设备以及模拟器。
- 支持本地、混合和移动web应用程序自动化。
缺点:
- Appium服务器的桌面应用程序发布经常不稳定。
- 脚本记录无法用于Windows操作系统下应用服务器的桌面应用程序。
Robotium是一个用于功能、系统和验收测试场景开发的开源测试框架。它与Selenium很相似,但只能用于Android。目前,它已经获得了Apache License 2.0的许可。
由于非常简单并且能够创建强大健壮的自动化场景,Robotium在自动化社区中广受欢迎。它使用了运行时间与GUI组件相结合的方式,安装测试用例套件来作为Android设备或者模拟器上的应用程序,从而提供了测试执行的真实环境。
优点:
- 易于在最短时间内编写测试脚本。
- 使预安装应用程序的自动化成为了可能。
- 自动追踪当前活动。
- 由于运行时间与GUI组件相结合,它的测试实施比Appium更加快捷和健壮。
- 无须访问代码或者知道应用程序实施也能够正常工作。
- 支持Activities、Dialogs、 Toasts、Menus、 Context Menus和其它的Android SDK 控件。
缺点:
- 无法处理Flash或Web组件。
- 在旧设备上会比较慢。
- 不支持iOS设备的自动化。
- 对于记录和回放没有免费内置支持。(可使用记录工具TestDroid、Robotium Recorder等,但需要付费)
Frank是一个iOS应用程序自动化框架,它提供了在Cucumber中使用英语句子编写测试场景的功能。
Frank需要被编译进测试环境下的应用程序中,这就意味着你的源代码会发生强制性改变。它结合了发送到运行着本地应用程序的服务器端的Cucumber和JSON命令,并通过UISpec运行这些命令。
优点:
- 测试场景可以在Cucumber 框架的帮助下通过易于理解的英语句子来书写。
- 包括检测工具在内的所有东西是一个整体。
- 使用过Selenium、Cucumber等web自动框架的团队使用该框架会非常有效率。
- 活跃的社区支持。
- 不断扩充的库。
缺点:
- 对于触摸式的支持有限。
- 在设备上的测试比较困难。
- 修改的配置文件需要运行在实际的设备上。
- 记录功能不可用。
UIAutomator是由谷歌开发的用于对本地的Android应用和游戏提供先进UI测试的测试框架。这是一个包含创建功能性UI测试所需API和运行测试所需执行引擎的Java库。这个库附带Android SDK以及供初学者学习的入门教程。它有一个很大的优势是在运行访问不同进程时它能够给予JUnit 测试用例特殊许可。虽然它非常不错,使本地的应用程序自动化变得更加简单了,但是它对于WebView自动化的支持却相当有限。另外它只支持API级别在16及其以上的设备,当然这不是一个大的问题,因为现在大多数的应用程序都运行在API级别在19及其以上的设备上。
优点:
- 简单,易学,有丰富的教程。
- 库的支持和维护由谷歌社区来完成。
- 第三方支付集成了基于云端的测试管理。
缺点:
- 只支持android 4.1及以上版本。
- 不支持脚本记录。
- 支持主要集中在Java方面。
- 无法获得当前活动。
- 目前在混合应用中不支持WebView。
- 库的支持仅限于Java,所以对那些使用 ruby语言的Cucumber用户很不友好
作者:回忆与感动
原文地址:http://www.evget.com/u/61181
热门评论
文章说的,我一个都没有接触过,看来我还是很初级啊
~~~~