专栏首页python爱好部落IOS App测试的那些坑和解决方案

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

“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:

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]

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

本文分享自微信公众号 - python爱好部落(lovesweet2018),作者:捧个场呗

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 渗透测试常见点大全分析

    大家好,我是Tone,前几天我们字节脉搏的活动获得行业内各家媒体、企业、粉丝的支持,在此我非常感谢各位,相继的奖品和开奖会陆续送出请耐心的等待。

    赵云龙龙
  • 提高你的编码效率

    市面的编辑工具五花八门,简单的有sublime, notepad++, vim, Atom等,复杂的有webstorm, pycharm,eclipse...

    赵云龙龙
  • python一些常用小技巧

    这个方法可以将布尔型的值去掉,例如(False,None,0,“”),它使用 filter() 函数。

    赵云龙龙
  • Linux下python2升级到pyth

    https://www.cnblogs.com/liuliu3/p/6920927.html

    py3study
  • day 8 - 1 文件操作

    py3study
  • 安全隐患,你对X-XSS-Protection头部字段理解可能有误

    0x00. 引言 我曾做过一个调查,看看网友们对关于X-XSS-Protection 字段的设置中,哪一个设置是最差的,调查结果令我非常吃惊,故有此文。 网友们...

    FB客服
  • centos 7 安装python3.6

    centos7 默认安装了python2.7.5,当需要使用python3的时候,可以手动下载python源码后编译安装.

    py3study
  • 练习题 一下

    1.1 第8题 输出test.txt文件内容时,不包含oldboy字符串的命令 文件内容: [root@znix ~]# cat /data/test.txt ...

    惨绿少年
  • Centos7安装python3并与python2共存

    程序员同行者
  • shell脚本,正则表达式

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    用户1215343

扫码关注云+社区

领取腾讯云代金券