ios自动化测试学习
原文:https://blog.csdn.net/jinjiangongzuoshi/article/details/126552806
内测发布工具
- fir.im
为开发者提供测试应用极速发布,应用崩溃实时分析、用户反馈收集等一系列开发测试效率工具服务,帮助开发者将更多精力放在产品的开发与应用的优化上。
- 蒲公英
『蒲公英』是专为 iOS、Android 开发者提供的免费用应用内测、托管的平台,旨在解决开发者将应用分发给内测用户时的繁杂、低效的问题。
- TestFlight
TestFlight 是苹果提供的应用测试工具,允许开发者邀请用户对应用的预发布版本进行测试,从而在应用正式发布至 App Store 前收集用户反馈。
以上常用框架介绍完了,本篇幅主要以appium进行实践讲解
没有外测发布工具吗
以上常用框架介绍完了,本篇幅主要以appium进行实践讲解
Appium驱动IOS测试原理
XCUITest是苹果开发的一个做IOS自动化测试的框架,需要了解些Swift等iOS编程知识 WebDriverAgent是Facebook开发的一个iOS自动化测试工具,先来看下面的这张原理图:
WDA在Client创建了一个Server,在手机端安装了一个叫作WebDriverAgentRunner 的一个应用;这个应用会接收来自 Server 的指令,并连接底层的 XCTest.framwork,让 XCTest.framwork 调用苹果API来操作手机进行自动化
而appium是把WebDriverAgentRunner 给集成进去了,因此实现了appium的跨平台能力
通过上图我们了解到 Appium 很粗暴的把整个 WebDriverAgent 直接集成到自己的项目里,然后通信机制就走 WebDriverAgent,Appium 其实就提供了一个 Client 端的作用。所以 iOS 9.3 系统之后自动化测试核心是 WebDriverAgent,Appium 就提供了一个 Client 端来写脚本和发送指令。
Appium 自动化架构模式可以用一个抽象的架构表示,就是下面这样的:
从图中可以看出:
Client 端是 Appium 之前本身提供的;
Server 端是:WebDriverAgent 和 Instruments;( Appium 直接把 WebDriverAgent 整个集成进来,Instruments 是为了支持 iOS 9.3 之前的系统)
最右边是一个手机
之前 Server 是和 bootstrap.jar 通信,这里 WebDriverAgent 提供了 WebDriverAgentRunner (类似 bootstrap.jar 的功能),WebDriverAgent与之通信;
WebDriverAgentRunner 是一个应用,Client 和 server 运行了之后,WebDriverAgentRunner 会被装到手机上,这个应用会接收来自 Server 的指令,并连接底层的 XCTest.framwork,并告诉 XCTest.framwork 操作手机进行自动化。
appium原理
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。
Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。
appium选择了client-server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及webdriver如何做到支持多语言的;
Appium优点
开源
跨架构:Native App、Hybird App、Web App
跨设备:Android、iOS、Firefox OS
不依赖源码
使用任何 WebDriver 兼容的语言来编写测试用例。比如 Java, Objective-C, JavaScript with Node.js (in both callback and yield-based flavours), PHP, Python, Ruby, C#, Clojure, 或者 Perl.
不需要重新编译APP
支持IOS手机录制视频
Appium理念
你无需为了自动化,而重新编译或者修改你的应用。
你不必局限于某种语言或者框架来写和运行测试脚本。
一个移动自动化的框架不应该在接口上重复造轮子。(移动自动化的接口应该统一)
无论是精神上,还是名义上,都必须开源。
Appium 在 iOS 下工具的变革:
iOS 9 之前一直以 instruments 下的 UIAutomation为驱动底层技术(弊端由于 instruments 的限制,单台 mac 只能对应单台设备);
iOS 9.3 时代推出 XCUITest 工具,用以替代 UIAutomation;
iOS 10 时代苹果直接废弃了 UIAutomation、Facebook 推出 WebDriverAgent(实现的 server 能够支持单台 mac 对应多个设备);
Appium 在iOS 9.3 后全面采用 WebDriverAgent 的方案。
xcode: 12.4(app store)
mac需要安装python3
之前装了homebrew,所以直接在使用brew install python3,如果报错permission denied就用下面的命令验证一下,输入自己的Mac密码就可以了
sudo chown -R $(whoami) $(brew --prefix)/*
安装完python3之后是有pip的但是现在的版本是pip3,只有pip3才可以被识别,使用命令pip3 install --upgrade pip之后pip就可以被识别了
本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/16956099.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步