app自动化测试系列之appium介绍及运行原理 -凯发app官网

面试技巧评论37字数 2379阅读7分55秒阅读模式
在面试app自动化时,有的面试官可能会问appium的运行原理,以下介绍appium运行原理。
appium介绍
appium概念

appium是一个开源测试自动化框架,可用于原生,混合和web应用程序测试。它使用webdriver协议驱动ios,android和windows应用程序。文章源自玩技e族-https://www.playezu.com/251532.html

appium特点
  • appium是开源的端自动化测试框架;
  • appium可以测试原生的、混合的、以及端的web项目;
  • appium可以测试ios,android应用;
  • appium是跨平台的,可以用在osx,windows以及linux桌面系统上;
  • appium支持ruby、python、java、javascript、objective c、php等多种语言。
appium理念

appium 旨在满足端自动化需求的理念,概述为以下四个原则:文章源自玩技e族-https://www.playezu.com/251532.html

  1. 你不应该为了自动化而重新编译你的应用或以任何方式修改它。
  2. 你不应该被限制在特定的语言或框架上来编写运行测试。
  3. 端自动化框架不应该在自动化接口方面重造轮子。
  4. 端自动化框架应该开源,在精神、实践以及名义上都该如此。
appium组件
  • appium server
    appium是一个c/s结构,包括server和client。appium server是appium的服务端,作为一个web接口服务,使用node.js实现。
  • appium desktop
    appium server的图像界面,可设置启动or停止服务器、查看日志,可使用inspect查看应用程序的元素。
  • appium gui
    是appium desktop的前身,也是把appium server封装成一个图像界面。该产品的windows版本在2015年的appiumforwindows_1_4_16_1.zip之后就停止更新了。目前版本可以使用,但是封装的不是最新的appium版本,而是1.4.16版本。如果要使用最新的桌面版需要使用appium desktop。
  • appium client

    appium client作为客户端,会给服务端appium server端发送请求会话来执行自动化任务。类似使用浏览器访问网页,可使用不同的客户端浏览器(ie/firefox/chrome...)访问同一个网站,通过操作发送请求到服务器来获取数据。

appium运行原理

appium是在手机操作系统自带的测试框架基础上实现的,android和ios的系统上使用的工具分别如下:文章源自玩技e族-https://www.playezu.com/251532.html

  • android(版本>4.3):uiautomator,android 4.3之后系统自带的ui自动化测试工具。
  • android(版本≤4.3):selendroid,基于android instrumentation框架实现的自动化测试工具。
  • ios:uiautomation(instruments框架里面的一个模板),ios系统自带的ui自动化测试工具。

     

文章源自玩技e族-https://www.playezu.com/251532.html

 文章源自玩技e族-https://www.playezu.com/251532.html

运行原理如下:

①客户端运行脚本的时候,调用任何的appiumapi,都会向appium server端post一条http请求,请求内容就是根据webdriver wire protocol协议规定的一条json格式的数据;文章源自玩技e族-https://www.playezu.com/251532.html

②当开启appium服务器的同时就开启了监听端口,appium server端接收到请求后,解析出json数据并发送到手机端;文章源自玩技e族-https://www.playezu.com/251532.html

③手机端上已经由bootstrap.jar(ios为bootstrip.js)开启的socket服务器监听相应的端口,bootstrap.jar在appium每个session第一次访问手机端的时候会自动安装;文章源自玩技e族-https://www.playezu.com/251532.html

④手机端接收到对应的请求后,通过bootstrap.jar翻译成uiautomator能执行的命令,然后通过uiautomator处理并操作app完成测试。文章源自玩技e族-https://www.playezu.com/251532.html

appium中的几个重要概念

client:

其实就是发起 command 的一端,狭义的可以理解为python、java等编写的代码。文章源自玩技e族-https://www.playezu.com/251532.html

appium server:

专门用来监听并接收来自client端的请求,转发请求并控制设备执行测试,默认开启并监听4723接口.。文章源自玩技e族-https://www.playezu.com/251532.html

session:

session就是一个会话,在appium中,所有工作永远都是在session start后才可以进行的。而要启动一个 session 需要传入 desired capabilities 获取一个全局唯一的 session id,这个id指定了你的浏览器或者移动设备。文章源自玩技e族-https://www.playezu.com/251532.html

desired capabilities:

是一些发送给 appium 服务器的键值对集合(比如 map 或 hash),它告诉服务器我们想要启动什么类型的自动化会话。文章源自玩技e族-https://www.playezu.com/251532.html

它告诉 appium server 这样一些事情:文章源自玩技e族-https://www.playezu.com/251532.html

  • 本次测试是启动浏览器还是启动移动设备?
  • 是启动 andorid 还是启动 ios ?
  • 启动 android 时,app 的 package 是什么?
  • 启动 android 时,app 的 activity 是什么?

desired capabilitie后续文章会详细介绍。文章源自玩技e族-https://www.playezu.com/251532.html

bootstrap:

首先,bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于uiautomatortestcase,所以uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这是就是appium的命令可以转换成uiautomator的关键;文章源自玩技e族-https://www.playezu.com/251532.html

其次,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;文章源自玩技e族-https://www.playezu.com/251532.html

最后,bootstrap处理的是从pc端传过来的命令。文章源自玩技e族-https://www.playezu.com/251532.html

appium的架构原理如图所示,由客户端和服务端组成,客户端与服务端通过json进行通信。文章源自玩技e族-https://www.playezu.com/251532.html

文章源自玩技e族-https://www.playezu.com/251532.html

 文章源自玩技e族-https://www.playezu.com/251532.html

注意:本文法律责任由该作者承担,侵权请联系▷诈骗举报◁▷新闻不符◁▷我要投稿◁
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。

发表评论

匿名网友
确定