模拟器真机环境_iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

本文详细介绍了iOS自动化测试的环境搭建,包括Mac硬件、Xcode软件的准备,以及真机和模拟器的配置。在技术方案部分,重点讨论了Appium、Calabash-iOS、KIF、XCTest和WebDriverAgent等框架,并选择了Appium作为跨平台测试的解决方案。文中还分享了在App安装、环境配置和WebDriverAgent安装过程中遇到的诸多问题及解决办法,为iOS自动化测试的实施提供了实战参考。
摘要由CSDN通过智能技术生成

移动端的自动化测试,最常见的是 Android 自动化测试,我个人觉得 Android 的测试优先级会更高,也更开放,更容易测试;而 iOS 相较于 Android 要安全稳定的多,但也是一个必须测试的方向,这个系列文章记录了 iOS 自动化测试的一些实践。

1.环境准备

f2c53342fa940c8607a3ce6221583495.png

1.1 硬件环境

- Macbook Pro(做 iOS 测试,Mac 是绕不开的,我们依赖的软件环境需要运行在 Mac 上,必须要有一台 Mac 本(很贵),得攒银子咬牙买一台 ~,如果预算紧张,也可以考虑先买一个 Macmini)。

- iPhone、iPad:既然测试 iOS 软件,那 iPhone 和 iPad 也自然不用多说了,虽然 Xcode 里有虚拟机,但是实际测试还是以真机为准。

1.2 软件环境

Xcode:Xcode是苹果官方提供的开发IDE,里面集成了苹果软件开发所需的所有,包括专项的性能测试等,我们做自动化也需要通过它来与设备绑定证书

下载安装好的图标如下 :

975372c87f0db926df88747f92e633a4.png

2.技术方案

2.1 主流框架

先来看目前主流的 iOS 移动测试框架

  • Appium:目前最常用的 App 自动化测试框架,具备跨平台性
  • Calabash-IOS :BDD 模式,没有过多的了解使用
  • KIF:KIF 使用 XCTest 框架,需要对 Objective—C 、Swift 和 XCTest 掌握程度较高,这个对测试工程师来说学习成本太大
  • XCTest:苹果官方提供的 iOS 测试框架,要求同 KIF 一致
  • WebDriverAgent:由 Facebook 推出的一款 iOS 移动测试框架,也是 Appium 跨平台的底层驱动;WDA 本身也是一个完整的基于 webdriver 协议的框架
  • Uiautomation :在 Xcode8 后废弃

2.2方案选型

之前的 Android 自动化我们选择的是 Appium 框架作为底层的驱动框架,当时就介绍说 Appium 的优点之一就是跨平台性,其实也就是因为其底层封装了 WebDriverAgent,而我们期望的是:

  • 做一套可以跨平台支持的 App 测试方案,可以在公司的 Android 和 iOS 版本间自由切换测试
  • 并且在编程语言上要是测试工程师常用的 Java 或 Python,降低学习成本

综上原因,那么最终的选择依然是 Appium。

3.落地实践(踩坑)

3.1 App安装

Appium 官方提供了一个演练的 iOS App,以此为例进行演示。

将项目 clone 到本地后用 Xcode 打开,注意打开 iOS 项目要打开以 .xcodeproj 结尾的文件 。

0c67c255e982c867edf1100e57757042.png

插入真机,Xcode 上选择真机,在Singing 中添加 AppleID 作为 account,生成一个本地的 Provisioning Profile 和设备上的证书

7bd85892c21fa62ed3c3ffc9fccd86f2.png

踩坑:你可能会遇到如下的错误信息

103df383f5ecec00b8fdb678f14486a3.png
e49a51306e3d541110fb7baaf60dd829.png

这是因为你的 bundle identifier 不唯一导致,将其修改自定义为一个唯一的 bundle identifier 再尝试即可

100fe20338dba4161b82256537c93f39.png

Xcode 中选中 Build,Success 后在手机中我们可以看到 UICatalog 已经被成功安装,尝试打开:

a1fa0b9867468b056b569e6dd38f4781.png

踩坑: 苹果对未在 AppStore 中上架的 App 做了限制,默认不受信任,所以我们需要手动将其设置为信任: 设置-通用-描述文件与设备管理

d438b5da97720d6b8393a73b0b2cc45e.png
43076ba51e76d738cefdd2a8942580f7.png

这个时候再打开 App,就可以正常操作运行了

dc4743736f6f9fee5954027328e9e2c7.png

3.2 环境配置

上面介绍了这里是选中 Appium 作为移动测试框架,因此 Appium 相关环境的安装必不可少,具体安装细节可参考另一篇文章:Windows(Win10)、Mac下安装 Appium

另外还需要几个辅助测试工具和命令,依赖工具包安装:

f1548b286cd438a82d865294edf5cdbe.png

查看模拟器列表:instruments -s devices 运行结果如下,可以看到最前面两行显示的其实是本机的 Mac 和连接的 iPhone 真机,剩下的是模拟器。

76cbe53d2a22025959981ae250126e57.png

查看真机列表:idevice_id -l

8b37e69ec22d72372ce5bfbef65f9ad8.png

安装 App:ideviceinstaller -i demo.app

命令行编译(在做持续集成时候可能会用到):

0420a86a2fc658bc95da3d89e1b1c521.png

3.3 WebDriverAgent 的安装与启动

虽然 Appium 使用WDA作为底层的 iOS 自动化框架,但是由于版本的更新等原因,可能造成 Appium 本身自带的 WDA 会有 bug,因此为了保险起见,先手动下载 facebook 的 WebDriverAgent facebook WebDriverAgengithub

2d753f687e41467c3a7981aeda3a5e43.png

然后我们进入 WebDriverAgent 进行编译,在 Scripts 下有一个 bootstrap.sh 脚本,执行它即可。

小技巧: 使用 bash -x 命令可以输出更详细的执行过程

78cdc1ef5210279ad0cd2595f0beff03.png

踩坑: 安装最后我们可以看到部分依赖安装需要安装 Carthage 这个东西,如果没注意的话就会造成 RoutingHTTPServer 部分文件缺失,后面 build 就会报错 。

634500d53224440acfc7f21c2709fda8.png
98c2d9f0cbcfb4541f680ca9f1087bcd.png

通过命令 brew install carthage 安装后再执行 ./Scripts/bootstrap.sh 即可。

根据 WebDriverAgent 官网提供的步骤,将参数替换为我们真机的参数后在真机上尝试build 。

dfbf8819c002b0cb0132fd9d27533d6f.png
2ea601422f220109fd1f31a769740d8a.png

踩坑: 执行完命令后可能会出现如下报错

ff307e279166c96c50ce0901ade190f7.png

从报错信息来看,缺少 development team,那么我们回到 Xcode,将 Automatically manage signing 进行勾选后选择一个 Team,注意要进入 WebDriverAgentRunner 中进行设置 。

b83db3c46834a4476104315fe9dc092a.png

设置好之后又会出现报错,如下:

3c0fc8a3717c64345f8c36308d47e8dd.png

这个报错信息就和我们之前提到的一样,bundle indentifler 不唯一,保险起见,这里将项目中所有的 Targets 都进行了修改

修改好之后我们再次 build,之前的问题解决了,不幸的是 build 又 fail 了,又出现了新的报错:

a8e831fbbbd7bdcc97fe4704345a766f.png

幸运的是在 Google 上一位外国友人轻描淡写的一句话解决了我的问题(感谢外国友人~)

7f2fc2a9f20dc57f739b1df8ad028f39.png

没错,我们在报错出双击,进入到报错代码处,将 assign 改为 strong 后再次 build :

aa62ff15d69ca31e267734bc1c6ebc72.png

Build succeeded!!!老泪纵横...

最终,再执行

3b0fba13b5b92e82130a27e107c940c7.png

终于在 iOS 真机上看到了 WDA 的身影

5399c6d5d87e00b1f31ef1cd5d385deb.png

踩坑补充

上面是我所经历的各种坑,也都是我实测过一步步填平的,下面试我认识的小伙伴踩到的坑和填坑方法,作为补充供记录参考

1)执行 ./Scripts/bootstrap.sh ERROR in ./js/app.js 报错

d5c6d50aabb02764510259f2a4a67c0e.png
e157877e5f5075f9af4f44d03bf17216.png
ccf311c66d66e124fd69c337b8713b52.png

2)执行时候报 xcodebuild failed with code 65 错误

083d13ac2bd463e7f96e2d8a8372d5db.png
67ffcbdd542d1658a9df2ee03f446c45.png

花了很大的功夫和篇幅,记录 iOS 自动化的准备工作,踩了很多坑,坑不能白踩,后面继续实现 iOS 的自动化测试落地。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值