当前位置 > 主页 > 万和大讲堂 >


5个iOS最佳的开源自动化工具 | 南京iOS培训分享

2016-08-15 11:56

  在市场上有很多可用的工具,开源的或要付费的。虽然付费和开源工具各有利弊,但是后者在自动化测试社区得到了广泛的应用。根据项目需求来选择合适的自动化工具是非常棘手的。下面南京万和iOS培训介绍5个最佳的iOS和Android开源自动化工具。


  1)Calabash(适用于Android和iOS)


  Calabash是一个开源的验收测试框架,支持Android和iOS自动化。Calabash为Android和iOS自动化测试提供了一个单独的库。这是一个跨平台的框架,支持Cucumber,Cucumber能让你用自然的英语语言表述app的行为,实现BDD(Behavior Driven Development,行为驱动开发)。


  Calabash提供了一个桥梁,允许Cucumber测试对iOS和Android运行和验证。Cucumber测试使用一列语句写入,这些语句会形成很多测试场景。Cucumber中的所有语句使用Ruby定义。


  在Calabash,Cucumber语句只能被定义一次,但可以在Cucumber脚本的不同场景中重复使用。


  实际测试是用Gherkin写的,依靠Ruby代码的支持,并在Cucumber框架的上下文中运行。


  优点:


  大型社区支持。


  简单,类似英语表述的测试语句


  支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。


  大型且热心的社区。


  跨平台开发支持(同样的代码在Android和iOS设备中都适用)


  缺点:


  测试步骤失败后,将跳过所有的后续步骤。这可能会导致错过更严重的产品问题。


  需要时间来进行测试,因为它首先总是默认安装app。但是,这种设置可以通过在代码中配置一个钩子(hook)覆盖掉。


  需要Calabash框架安装在ios的ipa文件中。


  我们必须要有iOS的app代码。


  除了Ruby,对其他语言不友好。


  2)Appium(Android和iOS)


  Appium是Sauce Labs出品的一个开源的自动化测试框架,用于原生、混合和移动的web app。框架内的Appium库函数调用Appium服务器是在操作连接设备的后台运行的。它在内部使用JSONWireProtocol,来与使用Selenium的WebDriver的iOS和Android app进行互动。


  不像Calabash只支持Ruby开发,在框架中使用Appium时,你可以从Java、Python和Ruby,以及所有其他Selenium WebDriver支持的语言中选择。


  Appium服务器被托管在Node服务器上。你可以通过触发一组Node命令来启动Appium服务器。使用Appium Standalone Application作为服务器(从Appium网站下载),Inspector工具可对app的所有定位器提供查找/识别/操作的能力。有疑惑?请咨询南京万和iOS培训


  优点:


  支持多种语言。


  不需要访问源代码。


  跨平台脚本开发。


  大型社区支持。


  支持Mac上的脚本记录。


  使用Appium Server应用程序的Inspector工具提取标识符。


  通过Appium Server的桌面应用程序对Selendroid内置支持。


  它还使用供应商提供的框架:适用于iOS的UIAutomation ,分别适用于Android 4.2+和 2.3+的UIAutomator和Selendroid。


  支持物理设备与仿真器。


  支持原生,混合和移动的web自动化应用程序。


  缺点:


  Appium Server桌面应用程序的发布常常不稳定。


  脚本记录不适用于Application服务器对于Windows OS的桌面应用程序。


  3)Robotium(Android )


  Robotium是一个开源的测试框架,用于开发功能性,系统,和验收测试场景。它与Selenium非常相似,除了Robotium只适用于Android。它注册在Apache License 2.0下。


  因为它不但简单,而且又具有创建强大又可靠的自动化场景的能力,因而它在自动化测试社区广泛流行。


  它采用运行时绑定到GUI组件。它安装了一个测试用例套件作为在Android设备或仿真器上的应用程序,并提供用于执行测试的真实环境。


  优点


  容易在最短的时间内编写测试脚本。


  预装自动化app是可能的。


  自动跟随当前activity。


  由于运行时绑定到GUI组件,所以相比Appium,它的测试执行更快,更强大。


  不访问代码或不知道app实现,也可以工作。


  支持Activities、Dialogs、Toasts、Menus、Context Menus和其他Android SDK控件。


  缺点


  不能处理flash和web组件。


  支持Java开发。


  在旧设备上会变得很慢。


  由于不支持iOS设备,当自动化测试同时覆盖 android与iOS的情况时,测试会被中断。


  没有内置的记录和回放功能. 使用记录功能需要 TestDroid 和 Robotium Recorder 这样收费工具。


  4)Frank(iOS)


  Frank是一个iOS app的自动化框架,允许使用Cucumber编写结构化英语句子的测试场景。


  Frank要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。这是一个使用Cucumber和JSON组合命令的工具,命令发送到在本地应用程序内部运行的服务器上,并利用UISpec运行命令。更多内容,请咨询南京万和iOS培训


  优点:


  测试场景是在Cucumber的帮助下,用可理解的英语句子写的。


  Symbiote——包含实时检查工具。


  如果团队有关于web selenium和cucumber自动化框架的经验,也有效。


  活跃的社区支持。


  不断扩大中的库。


  缺点:


  对手势的支持有限。


  在设备上运行测试有点难。


  修改配置文件需要在实际设备上运行。


  记录功能不可用。


  5)UIAutomator(Android)


  UIAutomator是由谷歌提供的测试框架,它提供了原生Android app和游戏的高级UI测试。这是一个包含API的Java库,用来创建功能性UI测试,还有运行测试的执行引擎。该库自带Android SDK。有很多教程可供初学者上手。优点是它在运行访问不同的进程时,会给JUnit测试案例特权。虽然这对本地自动化app既好又更简单,但是它对web自动化视图非常有限或几乎没有任何支持。它仅支持使用API  level 16及以上的设备,不过这也不算什么很大的因素,因为现在大多数的app支持API level 19及以上。


  优点:


  简单易学的教程。


  库由谷歌社区支持和维护。


  第三方支付集成了基于云计算的测试管理。


  缺点:


  仅支持android 4.1及以上。


  不支持脚本记录。


  支持的重点是Java。


  你不能获得当前活动或仪表化。


  目前不支持web视图,因此是混合app。


  库支持使用Java,因此如果有人想和使用Ruby的cucumber混合,会很困难。不过Java有它自己的BDD框架,虽然在实践中用到的也不多。


  紧跟时代的发展,让自己不错过任何一个可以成功的机会,iOS开发工程师将迎来新一轮的涨薪大潮,你还在等什么?南京万和iOS培训在通往高薪的路上,为你保驾护航。

最近开班 more>
  • 全栈开发
  • 前端基础班
  • 软件测试
  • Java大数据开发工程师
  • 云原生精英班
  • 开发课程基础班第四期
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第一期
  • Java Web UI Python
  • CISP
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCM 12C
  • OCP 19C
  • RHCE 9.0
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • vip班
  • 考试计划
  • 脱产班
  • 脱产班
  • 脱产班
  • 双休班
  • 双休班
  • 双休班
  • 双休班
  • 业余班
  • 业余班
  • 10月16日
  • 9月23日
  • 9月2日
  • 9月30日
  • 8月26日
  • 10月8日
  • 9月23日
  • 9月16日
  • 9月9日
  • 随时开课
  • 9月21日
  • 10月17日
  • 9月18日
  • 9月2日
  • 11月2日
  • 10月26日
  • 9月7日
  • ——
  • 随时开课
  • 9月26日
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入