Macaca-iOS入门那些事

一. 前言

最近有朋友向我请教iOS自动化测试框架选型,刚好前段时间做讲座时发现了macaca,遂试用。所以,下面的内容会只围绕Macaca的iOS部分。

二. Macaca是什么

阿里的移动端自动测试框架,同时支持android,iOS。而之前的阿里的athrun似乎已经放弃维护了。

官网:https://macacajs.github.io/macaca/

Macaca基于Node.js开发,测试案例编写语言暂时也只支持Node.js。

三. Macaca与Appium区别

坦白说,这种外部驱动instruments的server-client自动化测试框架,在iOS上实现方式非常受限的,所以其底层的实现方式是一致的。

而在应用级上的封装,二者均采用了Node.js作为开发语言,接口也基于web-driver实现,所以Macaca和Appium相似程度非常高。

如何看待Macaca和Appium区别?

以下是Macaca作者的设计思想:

appium 是个优秀的工具。但无法满足更轻、更快、更稳、更易集成、更贴合业务的高要求。

可以认为Macaca是一个轻量级的Appium。当然,这就意味着很多Appium的功能会没有了。但这也造就了一个轻量级的,更易集成的框架,Why not?

四. 安装

其实安装是很简单的,但是还是很多人无法把环境搭建起来。这里再详细说下。

  1. Xcode(及Xcode Command Line Tools)

  2. Node.js

    • https://nodejs.org/en/download/
    • 安装后,确认是否安装成功

        chentekiMacBook-Pro:~ chenximing$ node -v
      v4.4.3
      chentekiMacBook-Pro:~ chenximing$ npm -v
      2.15.1
    • npm是Node.js包管理,之后装Macaca就是用它。
  3. brew

  至此,如果对以上3者不了解,先放弃搭建Macaca,先把以上东西使用先搞懂....

  1. Macaca安装

    npm i -g macaca-cli

    注意: 这里新是macaca-cli,如果看旧版教程是:macaca-client(希望之后不要变了...)。

    检查是否安装好了:

    注意:check-list你未必都能pass,像我的Android部分,platforms directory检查失败。so what,我只试用iOS部分,其他可以不鸟它。只要保证:

    node.js checklist
    iOS checklist
    Installed driver list

    以上3者全pass即可。如果按照我刚才的步骤,除iOS checklist的ios-webkit-debug-proxy外,其他不应该会有failed。

  2. 安装ios-webkit-debug-proxy

    brew install ios-webkit-debug-proxy

    这里一定要用brew安装!之前有些旧文档会略坑新手,手工编译方式....这需要手工安装N多依赖:autoconf,libtool,xml2...不是熟手别搞,玩死你...

    ios-webkit-debug-proxy是干嘛的呢?从它安装的依赖库可以看出:

    libimobiledevice/
    usbmuxd/

    iTools就是使用这玩意儿和iPhone通讯的,libimobiledevice是破解iTunes和iPhone的通讯后实现的lib。Xcode5之前是fruitstrap,fruitstrap后来放弃维护,Xcode5后使用libimobiledevice。

   至此,安装全部完成,很简单是不是:>

五. 运行第一个测试案例

安装完了框架,要跑一跑啊,否则装来干嘛呢?那得先回答以下问题:

  1. 案例哪里来?
  2. 有案例也得有app...
  3. 运行案例的设备,可以选模拟器和真机。由于装了Xcode自带模拟器,所以跑第一个案例时,先用模拟器会比较简单。

然后第1,2个问题怎么解决?

作者已经帮你解决了。他已经为你准备第一个测试案例及其对应的app。

1. 下载案例及App

git clone https://github.com/macacajs/macaca-test-sample.git --depth=1

如果你不知道什么是git或者没装,可以去https://github.com/macacajs/macaca-test-sample下载。

下载后,进入macaca-test-sample目录,执行:

npm i

2. macaca-test-sample目录结构解析

./
├── HISTORY.md
├── LICENSE
├── Makefile
├── README.md
├── app
├── circle.yml
├── macaca-test
├── node_modules
└── package.json
  • app:

    • 存放测试中使用到的app:ios-app-bootstrap.zip。
  • macaca-test:

    ./
    ├── macaca-desktop-sample.test.js # 桌面浏览器测试案例...作者的想法有点多啊-_-!
    ├── macaca-mobile-browser-sample.test.js # 移动端浏览器测试案例
    ├── macaca-mobile-sample.test.js # 移动端App测试案例
    └── mocha.opts
    
    

    如果单纯要看iOS端App测试效果的话,可以把macaca-mobile-sample.test.js之外的*.js都干掉。

3. 运行第一个测试案例

macaca run --verbose

至此,Macaca及其案例运行起来了。

Macaca-iOS入门那些事的更多相关文章

  1. Macaca-iOS入门那些事2

    Macaca-iOS入门那些事2 一. 前言 上文<Macaca-iOS入门那些事>讲到Macaca环境部署及运行了第一个案例,本文将讲解其案例编写. 二. 测试案例解析 iOS案例:ma ...

  2. IOS 入门开发之创建标题栏UINavigationBar的使用(二)

    IOS 入门开发之创建标题栏UINavigationBar的使用 http://xys289187120.blog.51cto.com/3361352/685746     IOS 开发有关界面的东西 ...

  3. IOS 入门开发之创建标题栏UINavigationBar的使用

    转自:http://xys289187120.blog.51cto.com/3361352/685746 IOS 入门开发之创建标题栏UINavigationBar的使用     IOS 开发有关界面 ...

  4. 2017-04-26 ios ipv6那些事(已完美解决)

    2017-04-26 ios ipv6那些事(已完美解决)   工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...

  5. iOS入门怎样选择Swift和objective-c

    版权声明:本文为博主原创文章,未经博主同意不得转载.博主微信:lofocus https://blog.csdn.net/cuibo1123/article/details/28261795 学oc吧 ...

  6. iOS入门及ObjC语法

    iOS入门:http://www.jonathanhui.com/ios ObjC语法: http://www.jonathanhui.com/objective-c https://github.c ...

  7. IOS入门之Swift语言(一)

    经过不断的努力,小哥也买了台苹果设备,终于可以开始我的IOS之旅了,说来确实令人苦恼,为了学习IOS我这着贫农阶级,省了几个月的零花钱,外加向亲朋好友求救,最终痛下心扉,卖了台MAC pro128G版 ...

  8. [转载]ios入门篇 -hello Word(1)

    温馨提示:,如果您使用移动终端阅读本篇文章,请连接wifi的情况下阅读,里面有大量图片,以免造成您不必要的损失.   潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评 ...

  9. 记录IOS入门的过程

    先说点私话.再进入正题吧,顺便抒发下情绪.公司传统业务不景气,而互联网正如火如荼,无奈被逼上梁山.開始学起了IOS编程.后来想想闲着也是闲着就学习学习呗.无奈公司确实不希望投入了.不愿意提供苹果电脑. ...

随机推荐

  1. java-关于浏览器的判断

    一.判断是手机还是电脑浏览器 public final static String[] agent = { "Android", "iPhone", " ...

  2. JS-offsetParent定位父节点

    offsetParent:离当前元素最激动呢一个有定位的父节点 如果没有定位父级,默认是body IE7以下如果当前元素没有定位默认是body,如果有定位就是html IE7以下,如果当前元素的某个父 ...

  3. react 15来了

    有段时间没做react的项目了,前两天才发现react搞了一个不太小的动作,不是遵循原来的小版本号迭代,从0.14.x继续更新,而是直接跳到了15.0.X.虽然业界一直有这个观点,0.x的版本视为非稳 ...

  4. 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  5. 黑马程序员_Java基础:反射机制(Reflection)总结

    ------- android培训.java培训.期待与您交流! ---------- 反射在java中有非常重大的意义,它是一种动态的相关机制,可以于运行时加载.探知.使用编译期间完全未知的clas ...

  6. GIT FLOW 时序图

    git flow sequence md link: git branching model master->master branch: use default branch Note rig ...

  7. html 页面中显示单行省略号

    <!DOCTYPE html>   <html>   <head>   <meta charset="UTF-8">   <t ...

  8. 敏捷开发方法-Scrum

    为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...

  9. H5 canvas填充文字自动换行

    canvas是H5中非常重要,非常常用,也是非常强大的一个新标签,美中不足的事,canvas中没没有自动换行的属性,我的第一反应是,字符串截取,然后计算每行的距离来实现自动换行.. 然后百度了一下,已 ...

  10. maven之上传新的jar包

    今天要求上传若干jar包到maven服务器,师父曾经真的是一步一步点给我看.然后我特喵的忘记了,师父又一步一步点给我看,所以我记录下来,以后留用. 步骤如下,如图所示: 1)先在首页查询下将要上传的j ...