请关注我的微信公众号“测试开发进阶”,不定时的独家技术资料源码,跟我一起快速成长!

Appium 是什么?

上一篇 / 下一篇  2015-03-10 10:55:17 / 个人分类:Appium

Appium介绍

Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。
重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例

Appium的哲学

Appium遵循下面几个原则(其实也是appium的特点):
1.使用自动化来测试一个app,但是不需要重新编译它
2.写自动化case,不需要学习特定的语言
3.一个自动化框架不需要重复造轮子
4.一个自动化框架需要开源,在精神和实践上实现开源

Appium的设计

为了遵循上面的原则,appium的解决方法分别如下:
第一条:采用底层驱动商提供的自动化框架。

IOS:苹果的UIAutomation
Android 4.2+:谷歌的 UiAutomator
Android 2.3+:谷歌的Instrumentation(已被selendroid取

第二条:采用底层驱动商提供统一API,就是WebDriver API。

WebDriver(也称Selenium WebDriver)其实是一个C/S架构的协议,叫做JSON Wire Protocol。通过这个协议,用任何语言写成的客户端都可以发送HTTP请求给服务器。这就意味着你可以自由选择你想要使用的测试框架和执行器,也可以将任何包含HTTP客户端的库文件加入到你的代码中。换句话说,Appium的WebDriver不是一个技术上的测试框架,而是一个自动化库。

第三条:因为WebDriver是一个非常**的网页协议且已经正在起草W3C的标准。我们为什么还要创造其他东西呢?相反,我们在WebDriver的基础上,扩展了一些适合移动端自动化协议的API。

第四条:你之所以能读到这篇文章,就是因为我们开源啦。

Appium概念

C/S 架构

Appium的核心是一个遵守REST设计风格的web 服务器,它接受客户端的连接,接收客户端的命令,在手机设备上执行命令,然后通过HTTP的响应收集命令执行的结果。这种架构给我们提供了很好的开放特性:只要某种语言有http 客户端的api,我们就可以通过这个语言写我们的测试代码,当然了我们为了方便大家使用,提供了如下的客户端库供使用:

这里写图片描述

我们还可以将服务器放到远端,比如云里,这样我们可以借助云服务来接受命令以及解析命令。

Session

自动化的过程通常在session上下文中执行。客户端初始化一个session会话,虽然不同的语言初始化的方式不同,但是他们都要发送POST/session 请求到服务器端,这些请求里面都会带有一个对象:desired capabilities ,这个时候服务器端会启动自动化session然后返回一个session ID,以后的命令都会用这个seesion ID去匹配。

Desired Capabilities

desired capabilities 这个对象其实是一个key-value的集合,里面包含了各种各样的信息,发送到服务器端后,服务器解析这些信息就知道了客户端对哪种session感兴趣,然后就会启动相应的session。这里面的信息会影响着服务器端启动session的类型。比如你platformName的值为ios,就是告诉服务器启动一个ios的session,而不是android seesion。如果safariAllowPopups的值为true,这是告诉safari类的自动化session,可以使用js打开新窗口。具体信息查看capabilities doc 详细了解。

Appium Server

Appium server使用node.js写的http服务器,遵守REST风格

Appium Clients

客户端的概念不是我们传统意义上的客户端,这里客户端更好的理解是一个扩展WebDriver 协议的库,你在用自己喜欢的语言写case的时候,将该语言扩展WebDrvier的库添加到你的环境中,你就可以理解这是个客户端。具体的库可以参见下面的内容:
语言|库地址
----- | ----- 
Rubyhttps://github.com/appium/ruby_lib
Pythonhttps://github.com/appium/python-client
Javahttps://github.com/appium/java-client
JavaScript. (Node.js) | https://github.com/admc/wd
Objective C | https://github.com/appium/selenium-objective-c
PHP | https://github.com/appium/php-client
C# (.NET) | https://github.com/appium/appium-dotnet-driver
RobotFramework | https://github.com/jollychang/robotframework-appiumlibrary

Appium.app,Appium.exe

在不同的操作系统下,有不同的GUI程序

系统|GUI|git地址
---|---|---
windows|Appium.exe|https://github.com/appium/appium-dot-exe
OS X|Appium.app|https://github.com/appium/appium-dot-app



TAG:

引用 删除 测试小农   /   2017-03-30 18:00:53
5
引用 删除 franklzann   /   2017-03-10 10:47:50
5
wuxi88的个人空间 引用 删除 wuxi88   /   2015-12-08 11:44:27
-3
软测路上 引用 删除 aux0   /   2015-09-27 16:12:55
总结不错。
软测路上 引用 删除 aux0   /   2015-09-27 16:12:23
1
sheller的个人空间 引用 删除 sheller   /   2015-09-09 15:56:31
,请问可以完整实例演示一下Appium 测试一个Android app的完整过程吗,刚接触app测试,请多多指教!
BetsyHu的个人空间 引用 删除 BetsyHu   /   2015-06-19 10:41:58
5
 

评分:0

我来说两句

a5201314

a5201314

8年测试开发经验,前华为,携程测试开发工程师,目前就职BAT中一家资深测试开发,希望帮大家一起共同进步。 请关注我的微信公众号 “测试开发进阶”,不定时的独家技术资料源码,跟我一起快速成长!

日历

« 2024-04-21  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 157407
  • 日志数: 24
  • 建立时间: 2014-08-01
  • 更新时间: 2017-04-27

RSS订阅

Open Toolbar