ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Appium原理

2022-06-13 16:33:56  阅读:192  来源: 互联网

标签:Appium App 自动化 Server 手机 原理 客户端


自动化测试的应用:

  • 自动化测试是功能测试的进阶测试行为;
  • 自动化测试是无法完全替代手工行为的,只是将固化的业务流程进行自动化执行,以及设定定期执行的测试流程任务。也同时是用于回归测试阶段下的测试执行。
  • 自动化测试是目前测试人员最为核心的技能

主流的自动化测试技术

  1. 工具:Postman(接口)、Jmeter(接口、性能)、RF(UI/接口)、Airtest(手机游戏、app端测试)、Selenium IDE4(脚本录制、回放、修改)、Playwright(微软开源的测试框架,支持Python\Java\C#,可录制)、Cypress(基于JS被称作是后Selenium的产物,录制型的UI自动化工具)

  2. 代码:Python、Java、JavaScript

Web自动化

  • 服务端:浏览器      
  • 客户端:代码

 

手机App分为两大类,原生App(Native App)和混合(Hybrid App)

 

原生App(Native App)

原生App实际就是我们常见的传统App开发模式,云端数据储存+App应用客户端。App应用客户端,包含里了所有的UI元素、框架逻辑等。只有数据存储在云端。(主要语言:Java、Objective-C)

混合(Hybrid App)

混合(Hybrid App)就是HTML5 App,混合App通常由两部分组成,HTML5云网站+App应用客户端,这里的App应用客户端实际只是个架子,里面的UI元素和逻辑,都是存储在云端的,每次在打开App时,去云端获取数据呈现给手机用户。说白了混合App就是将Web页面嵌套到了App应用客户端中。由于每次打开App都要向HTML云端服务请求数据,所以会产生不小的数据流量,并且如果没有网络,会导致无法看到HTML App。这就是常说的H5页面。

App自动化

Appium:是一个开源、跨平台的自动化测试框架,它适用于Native(原生) App、Hybrid(混合) App。

 

Appium有个比较好的设计哲学,简单的说就是不要为了移动端自动化测试而单独开发一套API接口,所以Appium也是基于Selenium的Webdriver进行了扩展,扩展了一些操作移动端的API接口,在我们学习完Seleium的API接口后,我们在学习Appium只需要学习扩展的那些操作移动端的API接口即可

 

Appium最牛之处在于支持跨平台操作。实际上我们在测试时是启动了一个 Appium Server,这个Server 可以放到任意的机器上,供公司的自动化测试人员共同使用。

 

  • appium:Server(服务端)、 client(客户端)的架构,对于app自动化来讲,不在直接是手机了,而是中间提供了appium服务;appium是基于selenium做的2次开发

Appium原理

Appium既然是基于Slenium的二次扩展,那么Appium也是经典的Client - Server的设计模式,我们的Code就是狭义的客户端,Server端与Selenium不同,Selenium直接测试浏览器Web页面,将浏览器作为服务端。而Appium的服务端是我们自己启动的Appium - Server。数据与操作命令传递与Selenium API接口相同,遵守REST设计风格的API接口。(所谓的REST风格,只是一帮喜欢写论文的人搞出来的名词,让大家看到运力雾里。简单的理解,就是一种接口设计方式,网上对于REST的解释层数不穷,翻译成3句话,看URL知道要什么、看HTTP Metod知道干什么、看HTTP Status Code知道结果。)

 

appium加载的过程图解:

Appium自动化的原理图:

主要是包含了3个主题部分:

——动化程序、Appium Server、移动设备

  • 自动化程序

    自动化程序是由我们来开发的,实现具体的 手机自动化 功能。

    要发出具体的指令控制手机,也需要使用 客户端库。

    和Selenium一样,Appium 组织 也提供了多种编程语言的客户端库,包括 java,python,js, ruby等,方便不同编程语言的开发者使用。

    我们需要安装好客户端库,调用这些库,就可以发出自动化指令给手机。

  • Appium Server

Appium Server 是 Appium 组织开发的程序,它负责管理手机自动化环境,并且转发 自动化程序的控制指令 给 手机,并且转发 手机给 自动化程序的响应消息。

  • 手机设备

    我们这里说的手机设备,其实不仅仅是手机,包括所有 苹果、安卓的移动设备,比如:手机、平板、智能手表等。

  • 为了直观方便的讲解,这里我们简称: 手机

    当然手机上也包含了 我们要自动化控制的 手机应用APP。

    手机设备为什么能 接收并且处理自动化指令呢?

    因为,Appium Server 会在手机上 安装一个 自动化代理程序, 代理程序会等待自动化指令,并且执行自动化指令

比如:要模拟用户点击界面按钮,Appium 自动化系统的流程是这样的:

  • 自动化程序 调用客户端库相应的函数, 发送 点击元素 的指令(封装在HTTP消息里)给 Appium Server

  • Appium Server 再转发这个指令给 手机上的自动化代理

  • 手机上的自动化代理 接收到 指令后,调用手机平台的自动化库,执行点击操作,返回点击成功的结果给 Appium Server

  • Appium Server 转发给 自动化程序

  • 自动化程序了解到本操作成功后,继续后面的自动化流程

其中,自动化代理控制,使用的什么库来实现自动化的呢?

如果测试的是苹果手机, 用的是苹果的 XCUITest 框架 (IOS9.3版本以后)

如果测试的是安卓手机,用的是安卓的 UIAutomator 框架 (Android4.2以后)

这些自动化框架提供了在手机设备上运行的库,可以让程序调用这些库,像人一样自动化操控设备和APP,比如:点击、滑动,模拟各种按键消息等。

 


 

标签:Appium,App,自动化,Server,手机,原理,客户端
来源: https://www.cnblogs.com/brf-test/p/15943595.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有