Appium简介以及工作原理

发表于:2018-8-07 14:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yhpapple    来源:CSDN

   一.
  1.1Appium介绍
  Appium是一个开源的、跨平台的自动化测试工具。它适用于原生应用、混合应用和移动网页应用。
  原生应用:使用iOS或安卓SDK编写的应;
  混合应用:基于webview实现的应用,webview是一个用来和网页中各种元素交互的原生控件;
  移动网页应用:使用移动浏览器访问的网页应用(Appium支持iOS上的Safari浏览器和安卓上的Chrome或内置浏览器)
  1.2Appium理念
  Appium实现自动化测试需要遵循以下四个理念:
  (1)实现自动化测试时,不必重新编译或者以任何方式修改app;
  (2)编写或运行测试case的时候可以使用多种语言;
  (3)一个自动化测试框架不需要重造轮子;
  (4)无论在精神上还是实践上,自动化框架都是开源的;
  1.3Appium设计
  使用如下方案来遵循以上四个理念:
  (1)使用供应商提供的测试框架满足理念1
  iOS: 苹果的 UIAutomation。
  Android 4.2+: Google的 UiAutomator。
  Android 2.3+: Google的 Instrumentation.(Instrumentation通过绑定一个独立的Selendroid来提供支持)。
  (2)使用供应商提供的统一的框架API,即WebDriver API满足理念2
  WebDriver(也叫Selenium WebDriver)指定了一个服务端/客户端协议(也加JSON Wire Protocol),基于这个协议,使用任何语言编写的客户端都可以向服务端发送合适的HTTP请求。也就是说你可以选择你喜欢的语言来编写测试运行器或测试框架。
  (3)同样使用WebDriver来满足理念3
  事实上,WebDriver已经是网页浏览器自动化测试的标准,也是W3C的工作草案,所以没有必要为移动测试建立一套新的标准,只需要基于WebDriver协议扩展新的API来方便移动自动化测试即可。
  (4)很明显满足了理念4,当我们读到这边文章的时候就是因为Appium是开源的。
  1.4Appium概念
  1.4.1 C/S架构
  Appium的核心是一个遵守REST设计风格的Web服务器,它接受客户端的连接和命令,在手机设备上是执行命令,然后通过HTTP的响应手机命令执行的结果。这种架构给我们提供了很好的开放特性,只要某种语言有HTTP客户端的API,我们就可以通过这个语言写自己的测试代码。
  1.4.2 Session
  Appium始终在一个Session(会话)上下文中进行。客户端初始化一个Session来与服务端交互,不同的语言使用不同的交互方式,但它们最终都是发送一个POST请求给服务端,该请求中包含一个被称作“desired capabilities”的JSON对象。此时,服务端就会开启一个自动化的Session,然后返回一个Session ID,Session ID将会被用来发送后续的命令。
  1.4.3 Desired Capabilities
  Desired Capabilities是一些键值对的集合(例如,一个map或者hash)。客户端将这些键值对发送给Appium服务端,告诉服务端我们想要怎样开始测试,比如,可以把platformName capability设置为iOS,告诉服务端,我们想要一个iOS的Session,而不是安卓。
  1.4.4 Appium服务端
  Appium是用Node.js编写的,我们既可以用源码编译,也可以从NPM直接安装。
  1.4.5 Appium客户端
  此客户端的概念不是传统意义上的客户端,更好的理解方式是一个扩展的WebDriver协议库,当你用自己喜欢的语言写测试case时,将该语言扩展的WebDriver库添加到自己的环境中,此时,你可以把它理解为这就是个客户端。
  完整的库列表
  二、Appium工作原理
  API接口调用Selenium的接口,Appium Server接收WebDriver标准请求,解析请求内容,调用对应的框架相应操作。代码将DesiredCapability中的键值对组合成一个JSON,然后通过HTTP协议发送到Appium服务器创建一个session.代码与Appium的所有交互都是围绕着这个session进行的。session创建成功后,Appium再通过USB接口与手机之间创建TCP连接,先安装一些服务端App,比如Android API 4.2+是uiautomator,Android 2.3+是Instrumentation,iOS则是UiAutomation。手机的操作都是有Appium发送指令到uiautomator,然后再由uiautomator进行控制的。
  Apppium工作原理图如下:
   
  Appium原理图
  关于Appium的简介及工作原理到这里已经介绍完了,如有错误之处,请积极评论。希望能够帮助到大家。

    上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号