DownOL 软件仓库– 软件下载,字节世界与新知

阿里云Macaca框架实现iOS APP自动化测试

发表于:2024-05-06 作者:创始人
编辑最后更新 2024年05月06日,1. 简要介绍Macaca是阿里今年3月份开源的一套完整的自动化测试解析方案,支持移动端和PC端,支持Native和H5等多种应用类型,据说还支持Hybrid类型的应用。Hybrid是什么东西?据说这

1. 简要介绍

Macaca是阿里今年3月份开源的一套完整的自动化测试解析方案,支持移动端和PC端,支持Native和H5等多种应用类型,据说还支持Hybrid类型的应用。

Hybrid是什么东西?据说这是一个业界传奇,而且这要从携程旅行的APP改版说起,iOS和Android刚刚兴起的前几年,手机上的应用几乎都是Native的(也就是原生应用,iOS使用Objective C写成,Android使用Java写成),但是后来携程的无线团队加入了一个非常厉害的服务器端出身的开发Leader,他为了掌握前端技术,亲自动手用JQuery Mobile框架写了一版携程APP,虽然因为前端H5的问题,这个版本最终被推翻,但是以H5的形式发布APP,对于需要快速试错和占领市场的企业来说十分具有诱惑力,它相对于原生应用来说,开发、测试、更新、部署都要相对简单快捷高效,所以很快得到推广,并逐渐演进成为原生与H5相结合的一种APP开发解决方案,再后来狼厂在主力应用中大力推广这种解决方案,于是得以快速发展和成型,为市场所广泛接受。后来天猫前端大神徐凯还在自己出的《跨终端Web》一书中专门开辟一章介绍Hybrid方案。这里有一个链接,是大神的作品展示:http://luics.com/demo/hybrid-api/hangjs/#/

Macaca项目官网地址:https://macacajs.com/

Macaca项目Github地址:https://github.com/macacajs

Macaca项目客户端地址:https://github.com/macacajs/macaca-cli

项目服务器端使用Node.js写成,客户端使用JavaScript语言开发。

2. 环境搭建

2.1 环境要求

  • XCode版本≥7.2

  • Android SDK版本≥4.4.2

  • Node.js版本≥4.2

2.2 安装

默认通过npm就可以安装,推荐的方案方式是通过cnpm,全部走国内镜像站点,速度快很多。

2.2.1 安装cnpm:

sudo npm -g cnpm --registry=https://registry.npm.taobao.org

2.2.2 安装Macaca客户端

sudo cnpm i macaca-cli -g

安装成功之后终端屏幕上会输出一只猴子:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8GLti;;;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8Cti;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0L1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8L1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@0t;;;;;;;;;;;itLCG0000GCLt1;;;;itfCGG000GCLf1;;;;;;;;;;;;[email protected]@@[email protected]@@@@@@@@@@@@@@@@8Cti;;;;;;itLt;;;;;;;;;;[email protected]@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@8Gfi;;;;;;;;;;;t1i;;;;;[email protected]@@@@@@@@@0t;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C1;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@L;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@L;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0;;;;;;;;;;;;;;;;;;;;;;;[email protected]@@8;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G;;;;;;;;;;;;;;;;;;;;;;[email protected]@@G;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@[email protected]@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@t;;;;;;;;;;;;;;;;;;;;;[email protected]@@8;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@G;;;;;[email protected]@@@@@@@@@@@@@@8i;;;;[email protected]@@@@@@@@@@G;;;;;;;;;;;;;;;;;;;;;[email protected]@@@L;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@G;;;;;[email protected]@@@@@@@@@@@@@@8;;;;;[email protected]@@@@@@@@@@G;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@L;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@L;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@0t;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@0Lti;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Ci;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@1;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Gt;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@t;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@01;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@L;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@f;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@0;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@1;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@0;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@f;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@i;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@t;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@t;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@t;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@f;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8t;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Gi;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Gi;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8f;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8C1;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0t;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0Cti;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0fi;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@80Cti;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8Gt;;;;;;[email protected]@@@@@@@@@@@@@@@@@880GCLt1;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8Gf1;;;;;;;;;;ii11ttfffLffftt11ii;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8Gfti;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8GCLt11i;;;;;;;;;;;;;[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

再运行环境检测程序:

macaca doctor

绿色的就是成功的,有问题的会报红色。这个命令非常有用,可以很方便的帮助我们检测环境哪里有什么问题。

2.2.3 安装ios-webkit-debug-proxy

这个是需要测试iOS下的webview时会用到

brew install ios-webkit-debug-proxy

注意: 这里一定要用brew安装!网上有很多教程提示使用其他方法安装,其实都是坑死人不偿命的。

2.2.4 安装macaca-ios

这是Macaca框架测试的iOS应用的套件工具包,安装指令:

cnpm install -g macaca-ios

3. 实施测试

3.1 简单测试

下载macaca提供的mobile-app-sample项目,地址:https://github.com/macaca-sample/mobile-app-sample-nodejs,然后进入这个项目目录,运行命令:

cnpm install macha

运行这个命令会安装JQuery测试框架macha(摩卡),然后就可以运行我们的测试用例了,命令:

macaca run

3.2 定制测试

真机测试时还需要安装另外一个工具usbmuxd,安装这个工具之后,就可以将iPhone连接到Mac电脑上运行测试,要求XCode7.3以上版本,具体的安装指令是:

brew install usbmuxd

3.3 UI元素检查与测试

这项工作需要用到一个工具,名叫App Inspecto,它可以与Macaca无缝兼容。

安装指令:

cnpm install -g app-inspector

使用方法,输入下面的指令:

app-inspector -u udid

udid是模拟器的设备id号

4. 故障排除

4.1 macaca启动出错提示/usr/local没有许可权

运行命令:

sudo chown -R $(whoami) /usr/local

4.2 提示找不到mocha(摩卡)

mocha(摩卡)是一个非常流行的JavaScript测试框架,在浏览器和Node环境中都能使用。安装指令:

cnpm install -g mocha

但是这是全局安装,在当前目录下也安装一下才行,安装指令:

cnpm install mocha

事实上必须在脚本所在目录中安装mocha,否则不能正确运行。

Macaca 客户端本身就已经集成了 Webdriver 协议服务端的实现,通常在运行用例时,我们采用 Mocha 框架自动读取并运行 test 文件夹下的所有用例。

5. 附加信息

5.1 测试Android APP

如果要本框架测试Android APP,需要安装macaca-adnroid,安装指令:

cnpm install -g macaca-android

安装完毕之后,还要配置Android的SDK,主要是:

  • 下载开发工具包Android SDK Tools,然后配置ANDROID_HOME环境变数

  • 下载Platform-Tools,然后将解压的platform-tools目录放在Android SDK目录下,配置成$ANDROID_HOME/platform_tools这种形式,这个会有adb、fastboot等命令工具,所以还需要把这个路径加到PATH环境变数中去

  • 下载Build-Tools,然后将解压的build-tools移动到Android SDK目录下,配置成$ANDROID_HOME/build-tools这种形式

  • 运行$ANDROID_HOME/tools/android sdk命令即可启动SDK Manager,在SDK Manager中,我们需要配置代理,下载所需要的Android系统版本的SDK和系统镜像,当然这个过程也可以在命令行完成,下载完成之后解压放到$ANDROID_HOME/platforms目录中就可以了

  • 下载安装Android虚拟机的硬件加速工具包HAXM,和上面的步骤一样,既可以在SDK Manager中安装,也可以在命令行中安装,只是如果在命令行中,要安装到$ANDROID_HOME/extras目录中,配置成$ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager这样的形式

  • $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager目录,运行HAXM installation再进行一次安装,否则即使Android SDK Manager中显示HAXM已经安装,创建的Android虚拟机(或者说模拟器)也是不能用的。安装过程需要管理员许可权,完成之后会提示Silent installation Pass!

  • 运行$ANDROID_HOME/tools/android avd启动Android Virtual Device (AVD) Manager,然后创建一个虚拟机

基于Macaca框架开发的自动化测试用例,可以实现一套代码同时支持iOS和Android应用,当然,前提是两个平台的APP UI交互和元素命名架构是一致的。

2022-05-09 22:59:31
0