1.1 Appium 概述

Appium 是一个开源、跨平台(测试程序跨平台、支持多平台上的app测试)、多语言支持的(开发语言)移动应用自动化工具。

1.1.1 测试对象

Appium 的测试对象包括:原生 app,混合 app,移动 web app(就是用手机浏览器打开的网址);

所谓原生 app,就是专门针对某一类移动设备而生的,所有界面和代码都是专门为平台设计的。比如说我们手机上自带的计算器应用,它的代码和界面,就都是用安卓开发语言 java 使用安卓开发库开发出来的。而混合 app 主要是指它的一部分是原生界面和代码,而另一部分是内嵌 web app。开在基本上打开网页浏览的 app 都是混合 app,比如微信、支付宝、开发者头条等。微信的消息界面是原生代码实现的。而打开某个朋友圈,或者打开别人发来的链接部分是 web 部分,内嵌了一个浏览器内核,由浏览器内核实现的。现在混合型 app 很多,稍微功能全一些的都需要具备网页浏览器的功能。而 web app 则完全是手机浏览器里打开的一个网址,大家可能会问,网址怎么是一个 APP ?

App 的概念其实非常广泛,现在说到 App,大家认为是手机 App。其实这样理解很狭义,App 就是应用的意思,所有的应用程序都是 App ,这里面当然也包括 web 网页应用。Web App 只能运行在浏览器里,靠浏览器解释执行。它其实就是一个触屏版的网站。

1.1.2 测试对象 App 运行平台

Appium 的测试对象运行平台包括:

iOS (就是苹果手机、平板、甚至 iWatch 等移动设备上运行的 app)
Android (就是安卓手机、平板、等移动设备上运行的 app)
Windows (就是 Windows 手机、平板灯移动设备上运行的 app,但是这种平台使用人数目前太少,少到基本可以忽略不计了。)
FirefoxOS (更少,更加可以忽略不计了)

1.1.3 测试对象 App 运行环境:

Appium 的测试对象运行环境包括:

真实设备
模拟器
真实设备大家都知道,就是苹果安卓的手机、平板等移动设备。而模拟器则是通过在 PC 或者 Mac 电脑上的软件模拟的,苹果安卓的手机、苹果等移动设备。主要是方便我们测试用的。

1.1.4 测试程序语言:

appnium 支持多种程序语言开发测试程序,基本上 Selenium 支持开发的语言,appium 都支持,比如:pyhton、java、Ruby、js、php、C# 等。

1.1.5 测试程序运行平台

appnium 支持测试程序运行在多种平台上,包括:Windows、Linux、Mac OS等。但是要注意的是,如果测试的是 iOS 应用,测试程序本身是可以运行在所有平台的,但是有 appium server 必须要运行在苹果的机器上,比如笔记本 MacBook,或者台式机 iMac。

appium server 本身是 js 开发的,也是跨平台的。但是对苹果设备的自动化,appium 依赖苹果的自动化框架,也只能运行在苹果机器上。

1.1.6 自动化原理

我们先来看一下 appium 自动化的架构图:

image.png

appium测试unity3D_App

Test script:

这是我们的测试程序,是测试逻辑的实现部分。就像以前我们的 selenium 自动化脚本。而且和 selenium 一样,可以使用多种语言,Appium 客户端也支持多种语言。一般运行在 pc、laptop上,或者苹果笔记本,台式机。

Appium Server:

这是一个 JavaScript 代码实现的程序。是运行在 Node.js 里面的。Node.js 就是 js 程序的一个解释器,就像 Python 解释器和 python 程序的关系一样。可能有人会困惑,js不是运行在浏览器里面的吗?其实 js 是通用的语言,浏览器里面有 js 的解释器,同样可以将解释器单独拿出来作为一个程序运行 js 代码,运行的 js 代码也可以不仅仅是和 web 相关的,可以是任何目的的代码,就像 python,java 一样。

被测试 app:

运行在真实设备或者模拟器中。这个测试系统运行起来交互关系是这样的:测试程序(Test scrip),告诉 Appium Server 要做什么操作。比如要去点击界面的一个元素。怎么告诉 Appium Server ?它们之间有 http 的连接,通过 http 请求发送命令给 Appium Server ,Appium Server 接收到测试程序的命令后,再发出命令给设备上运行的控制程序(这程序由Appium Server注入到设备里面运行),控制程序调用相应自动化库里面的方法去执行界面的控制。

Android 底层自动化工具

我们看一下安卓的底层自动化工具。版本 2.3 - 4.1:使用的是 Selendriod 工具(这些系统已经很少了,可以忽略了)
4.2+:使用的是 UiAutomator,(目前 4.2+ 版本的安卓占了 90% 以上的市场份额,所以我们后面讲的都是 4.2+ 安卓版本)。

image.png

appium测试unity3D_App_02

IOS 底层自动化工具

在 IOS 9.3 版本之前,苹果使用自动化技术叫 UIAutomation。
iOS 9.3+ 以后苹果推出了 XCUITest 测试技术。
iOS 10 苹果完全去掉了以前的 UIAutomation 的技术支持。所以现在,我们要进行苹果 app 的自动化,只能使用 XUCITest。