前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IOS App测试的那些坑和解决方案

IOS App测试的那些坑和解决方案

作者头像
赵云龙龙
发布2019-11-10 15:27:31
4.2K0
发布2019-11-10 15:27:31
举报
文章被收录于专栏:python爱好部落

“Iphone app 测试有些坑,如何绕过这些坑呢?

苹果系统跟 Android 系统完全不一样,测试起来也有很大的不同。

在测试中常见的,如 xcode 版本问题,打包证书问题,闪退无法重现,不好抓 log, 上架被拒问题等等。本文总结一些常见的坑,可以完美绕过去。

闪退

Android 手机闪退,可以用 adb 很轻易的拿到 log. IOS 系统主要是沙盒,你没法很轻松的就拿到 log. 在 iPhone 手机上的软件发生闪退或开发 iOS 应用程序时出现的闪退,一般都会自己或系统生成崩溃日志,那么我们从哪里以及怎么获取到崩溃日志呢?

iPhone 手机一台 数据线一条 Xcode 开发工具(可选)

而由于 iOS 系统的沙盒机制,一般我们不能直接访问它获取,但可以有下面的几种方法获取。

1.在 iTunes Store 上获取。使用数据线连接手机和电脑,就可以从电脑的以下路径找到崩溃日志了。

macOS :~/Library/Logs/CrashReporter/MobileDevice/< DEVICE_NAME \> Windows :C:/Users/< USERNAME > /AppDataRoamingApple/ComputerLogsCrashReporterMobileDevice/< DEVICE_NAME >

2.如果你是开发者,可以从 iTunes Connect 上获取。但前提需手机用户打开设置->隐私->诊断与用量的开关。

3.可以通过开发工具 Xcode,数据线连接电脑获取。通过在Xcode->Window->Devices,然后选中真机设备,点击View Device Logs。等待扫描后获取对应应用和日期的日志。

4.如果是应用开发者,自己代码中记录崩溃日志,并上传到服务器,发生崩溃后从网站日志管理中获取对应的崩溃日志即可。

上架流程

Mac 就一个市场,上架需要官方审核。Android 如果不上 Google play,审核相对松很多,快很多。

发布App Store 审核分 6 步进行。

1、申请 iOS 发布证书(p12)

2、申请 iOS 发布描述文件(mobileprovision)

3、打包 ipa

4、上传 ipa 到 iTunes Connect

5、TestFlight 方式安装到苹果手机测试

6、设置 APP 各项信息提交审核

TestFlight 测试

因为上线风险大,回撤成本高,一般都是灰度发布。

TestFlight 的测试方式分为两种,一种是内部测试,一种是外部测试。从功能上讲,这两种方式都可以为测试人员在测试阶段对你的 App 进行测试。内部测试最多可以邀请 25 个内部成员,而与之相对的外部测试,指的是那些不属于你的团队或者公司的测试者,外部测试人员的上限是 10000 人。这里有一点需要注意的是,在你邀请外部成员参与测试之前,需要先通过苹果的审核,一般审核会在一天左右。而这一限制在内部成员上就没有,也就是说只要你把你的 App 上传到 iTunes Connect 上之后内部成员就可以开始进行内部测试了,无需审核。

准备工作

待测试的 ipa 包(用 Application Loader 上传)或者是 archive (用 Xcode Upload to App Store)文件(需要上传到 iTunes Connect );

到 App Store 下载安装软件 TestFlight;

将打包好的 ipa 或 xcarchive 文件上传到 iTunes Connect;

登录到 iTunes Connect 进入我的 APP,选择你的 APP;

到 TestFlight 模块下,如果 App Store 有提交过的版本,内部测试员就可以了,我们只需要添加内部测试员用户即可。

iOS APP 上架被拒重新提交审核

iOS APP 审核比较严格,难免会出现被拒绝的情况,需要根据苹果反馈的问题修改后重新打包上传审核!

登录 itunesconnect、https://itunesconnect.apple.com [1]进入被拒绝的 APP 页面

点击未解决的 iOS 问题,进入查看原因。

查看具体被拒绝的原因,查看反馈的审核截图,根据问题修改 app 重新打包上传。

有些苹果要求你在下面回复反馈的问题,可以直接写中文,回复了就不用上传新的 ipa 重新提交审核了。

看具体的反馈,决定是否直接回复还是重新打包上传 ipa 提交审核!

证书有效期测试

为什么要测试这个玩意,因为 app 是跟开发者证书绑定的,证书是有有效期限的,如果过期,就不能正常使用。也许开发没注意到这点,在上线前,测试要看看这个过期时间是不是很近了。如果是,要告知风险。

Do the following:

代码语言:javascript
复制
unzip -q MyApp.ipa
$ codesign -d --extract-certificates Payload/*.app
$ openssl x509 -inform DER -in codesign0 -noout -nameopt -oneline -dates

自动化测试

WebDriverAgent 是由 Facebook 开发的一套开源框架,用于端对端的 UI 测试,能同时支持模拟器和真机。

因为 Mac 系统的特性,我们很难操作非越狱的手机,幸好有 Facebook 的 WebDriverAgent,通过它可以实现远程控制手机,一般自动化测试用的多,其它用途需要自己探索。如果想要 python 调用 WebDriverAgent 的功能,那么还需要 facebook-wda。

安装 WebDriverAgent
  1. 从 github 上下载 WebDriverAgent,git clone https://github.com/facebook/WebDriverAgent或者直接下载 ZIP 压缩包
  2. 在 WebDriverAgent 文件路径下执行./Scripts/bootstrap.sh
  3. Xcode 打开 WebDriverAgent 项目(我使用的是免费证书,免费证书如何弄请百度),修改 TARGETS 下所有对象的 Bundle Id

image

  1. TARGETS 下所有对象的 team 替换成自己开发者账号,并勾选 Automatically

image

  1. 选择运行的 Scheme 与设备

image

  1. 执行 Test,可以看到手机上多了一个无图标的 WebDriverAgent 应用,此 app 会打开,马上又回到手机桌面,正常

image此时控制台界面可以看到设备的 IP:

image此 IP 地址加上status,例如http://169.254.120.53:8100/status,用浏览器打开,会显示一串 JSON 串,则代表成功,如果加上 inspector,会得到如下界面

image

  1. 假如上述所说的地址打不开,那也正常,我自己的手机就是这样,需要转发端口 安装 usbmuxd brew install usbmuxd把手机上的 8100 端口转到电脑上iproxy 8100 8100

image以后输入地址只需要输入 localhost 即可,例如:http://localhost:8100/inspector

安装 facebook-wda
  1. 给 python 安装 facebook-wda 扩展,sudo pip install --pre facebook-wda
  2. 从 github 上下载 facebook-wda,git clone https://github.com/openatx/facebook-wda或者直接下载 ZIP 压缩包
  3. 在 facebook-wda 文件路径下执行sudo python setup.py install
如何使用 facebook-wda

前提条件:首先启动 WebDriverAgent,运行 Test,待显示出 ip 地址,然后转换端口。给 iPhone 截屏并保存,更多功能请自己在 GitHub 上查找https://github.com/openatx/facebook-wda[2]

代码语言:javascript
复制
import wdac = wda.Client('http://localhost:8100')c.screenshot('/Users/gcf/Desktop/shotImg/%dscreen.png' % (tag))
遇到的问题
  • 提示Failed to download resource "carthage",需要安装 carthage brew install carthage

参考资料

[1]

https://itunesconnect.apple.com : https://itunesconnect.apple.com/

[2]

https://github.com/openatx/facebook-wda: https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2Fopenatx%2Ffacebook-wda

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python爱好部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 闪退
  • 上架流程
  • TestFlight 测试
  • iOS APP 上架被拒重新提交审核
  • 证书有效期测试
  • 自动化测试
    • 安装 WebDriverAgent
      • 安装 facebook-wda
        • 如何使用 facebook-wda
          • 遇到的问题
          • 参考资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档