共计 2484 个字符,预计需要花费 7 分钟才能阅读完成。
挪动端的自动化测试,最常见的是 Android 自动化测试,我集体感觉 Android 的测试优先级会更高,也更凋谢,更容易测试;而 iOS 相较于 Android 要平安稳固的多,但也是一个必须测试的方向,这个系列文章记录了 iOS 自动化测试的一些实际。
Xcode 下载地址:https://developer.apple.com/d…
下载安装好的图标如下:
先来看目前支流的 iOS 挪动测试框架
- Appium:目前最罕用的 App 自动化测试框架,具备跨平台性
- Calabash-IOS:BDD 模式,没有过多的理解应用
- KIF:KIF 应用 XCTest 框架, 须要对 Objective—C、Swift 和 XCTest 把握程度较高,这个对测试工程师来说学习老本太大
- XCTest:苹果官网提供的 iOS 测试框架,要求同 KIF 统一
- WebDriverAgent:由 Facebook 推出的一款 iOS 挪动测试框架,也是 Appium 跨平台的底层驱动;WDA 自身也是一个残缺的基于 webdriver 协定的框架
- Uiautomation:在 Xcode8 后废除
之前的 Android 自动化咱们抉择的是 Appium 框架作为底层的驱动框架,过后就介绍说 Appium 的长处之一就是跨平台性,其实也就是因为其底层封装了 WebDriverAgent,而咱们冀望的是:
- 做一套能够跨平台反对的 App 测试计划,能够在公司的 Android 和 iOS 版本间自在切换测试
- 并且在编程语言上要是测试工程师罕用的 Java 或 Python,升高学习老本
综上起因,那么最终的抉择仍然是 Appium。
Appium 官网提供了一个演练的 iOS App,以此为例进行演示。
Appium 演练 example 地址:
https://github.com/appium/ios…
将我的项目 clone 到本地后用 Xcode 关上, 留神关上 iOS 我的项目要关上以 .xcodeproj 结尾的文件。
插入真机,Xcode 上抉择真机,在 Singing 中增加 AppleID 作为 account,生成一个本地的 Provisioning Profile 和设施上的证书
踩坑:你可能会遇到如下的错误信息
这是因为你的 bundle identifier 不惟一导致,将其批改自定义为一个惟一的 bundle identifier 再尝试即可
Xcode 中选中 Build,Success 后在手机中咱们能够看到 UICatalog 曾经被胜利装置,尝试关上:
踩坑:苹果对未在 AppStore 中上架的 App 做了限度,默认不受信赖,所以咱们须要手动将其设置为信赖:设置 - 通用 - 形容文件与设施治理
这个时候再关上 App,就能够失常操作运行了
下面介绍了这里是选中 Appium 作为挪动测试框架,因而 Appium 相干环境的装置必不可少,具体装置细节可参考另一篇文章:Windows(Win10)、Mac 下装置 Appium
另外还须要几个辅助测试工具和命令,依赖工具包装置:
查看模拟器列表:instruments -s devices 运行后果如下,能够看到最后面两行显示的其实是本机的 Mac 和连贯的 iPhone 真机,剩下的是模拟器。
查看真机列表:idevice_id -l
装置 App:ideviceinstaller -i demo.app
命令行编译(在做继续集成时候可能会用到):
尽管 Appium 应用 WDA 作为底层的 iOS 自动化框架,然而因为版本的更新等起因,可能造成 Appium 自身自带的 WDA 会有 bug,因而为了保险起见,先手动下载 facebook 的 WebDriverAgent facebook WebDriverAgengithub
地址:https://github.com/facebookar…
而后咱们进入 WebDriverAgent 进行编译,在 Scripts 下有一个 bootstrap.sh 脚本,执行它即可。
小技巧:应用 bash -x 命令能够输入更具体的执行过程
踩坑:装置最初咱们能够看到局部依赖装置须要装置 Carthage 这个货色,如果没留神的话就会造成 RoutingHTTPServer 局部文件缺失,前面 build 就会报错。
通过命令 brew install carthage 装置后再执行 ./Scripts/bootstrap.sh 即可。
依据 WebDriverAgent 官网提供的步骤,将参数替换为咱们真机的参数后在真机上尝试 build。
踩坑:执行完命令后可能会呈现如下报错
从报错信息来看,短少 development team,那么咱们回到 Xcode,将 Automatically manage signing 进行勾选后抉择一个 Team,留神要进入 WebDriverAgentRunner 中进行设置。
设置好之后又会呈现报错,如下:
这个报错信息就和咱们之前提到的一样,bundle indentifler 不惟一, 保险起见,这里将我的项目中所有的 Targets 都进行了批改
批改好之后咱们再次 build,之前的问题解决了,可怜的是 build 又 fail 了,又呈现了新的报错:
侥幸的是在 Google 上一位外国友人轻描淡写的一句话解决了我的问题(感激外国友人~)
没错,咱们在报错出双击,进入到报错代码处,将 assign 改为 strong 后再次 build:
Build succeeded!!!老泪纵横 …
最终,再执行
终于在 iOS 真机上看到了 WDA 的身影
下面是我所经验的各种坑,也都是我实测过一步步填平的,下面试我意识的小伙伴踩到的坑和填坑办法,作为补充供记录参考
1)执行 ./Scripts/bootstrap.sh ERROR in ./js/app.js 报错
2)执行时候报 xcodebuild failed with code 65 谬误
花了很大的功夫和篇幅,记录 iOS 自动化的筹备工作,踩了很多坑,坑不能白踩,前面持续实现 iOS 的自动化测试落地,也欢送小伙伴一起留言探讨。
对于想零碎进阶晋升测试开发技能的同学,这里举荐霍格沃兹测试学院出品的《测试开发从入门到高级实战》零碎进阶班课程,有针对 iOS 自动化测试的独家特色(大厂海量用户 App 实战案例总结,可能是市面上最具深度的)经典课程。