《腾讯iOS测试实践》一一3.3 机型兼容

本节书摘来自华章计算机《腾讯iOS测试实践》一书中的第3章,第3.3节,作者:丁如敏 王琳 等著
  更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 机型兼容

机型的问题跟硬件有关,比如随着一代代的iPhone发布,屏幕越来越大,分辨率越来越高,处理器指令集从ARMv6、ARMv7、ARMv7s到ARMv64,从指纹识别到3D Touch的手机新特性应用。
3.3.1 新增功能
系统更新会带来新功能,机型的升级也会带来新功能,例如从iPhone 5S开始有了指纹识别,从iPhone 6s开始有了3D Touch等。如果机型上的新功能不涉及被测产品(例如手机照相机的更新),就可以忽略;如果涉及,就要进行适配。
两点测试保证:一是保证有该特性的机型能够正常使用;二是保证低端机型不会误触发这个逻辑。
过往的缺陷中,机型上新增功能有关系的案例也不少。举例来说,iPhone 6s(Plus)开始引入3D Touch特性,在iPhone 6s(Plus)上验证该功能,就曾发生过重按不显示菜单栏的问题。对这种与机型强相关的测试,最好能单独列出一个list来记录,避免在研发过程中几个版本迭代后对机型差异敏感度下降后误触发一些问题。
3.3.2 屏幕变化
iPhone自发布以来,屏幕尺寸和分辨率越来越大。表3-3是不同机型的屏幕尺寸和设备分辨率,测试时需要关注不同设备的资源配置是否有遗漏或者错配。
image
image

对于屏幕尺寸大小的不同,出现的兼容性问题也多。经常出现的问题是网页显示或弹框显示。例如,做一个手机QQ新闻打开的红包新弹框,在iPhone 4上就出现右上角的关闭按钮被完全遮挡,下面也被遮挡了很大一部分。image
图3-6就属于屏幕差异引起的兼容问题。
3.3.3 处理器差异
到目前为止,所有iOS设备都使用ARM结构处理器,它与台式机上的x86和PowerPC有些不同。ARM64是ARM处理器的一个指令集,目前iPhone设备的指令集种类如表3-4所示。
image

从Xcode 4.5开始不再支持ARMv6指令集。实际上,用户使用的基本上都是iPhone 4以后的机型了,所以我们编译生成的二进制包所支持的指令集只要支持ARMv7以上就可以。苹果公司规定,从2015年2月开始上架App Store的应用必须支持ARM64的编译,所以产品都应完成对ARM64的适配。
设备对指令集的支持可向前兼容,只是会影响运行效率。因此现在编译的版本一个包有两个架构,分别支持ARMv7指令集和ARMv64指令集的架构。选择ARMv7是为了支持iPhone 4~iPhone 5C之间的设备,而编译ARMv64的二进制包一方面是因为苹果公司的规定,另外一方面是为了让高级机型能够更好地运行,提高运行效率。
适配工作的重点在于对参数类型的调整,适配最新版的如目前的ARMv64的指令集。Bug大多集中于参数类型在ARMv64设备上出现的异常。
模拟器并不运行ARM代码,软件会被编译成 x86 可以运行的指令,因此适配不能在模拟器上进行验证。
回顾历史版本,在硬件的兼容上,iPhone一般都做得很好。印象最深的还是32位机升为64位机后做的适配测试,当时要求iOS的32位工程转为64位工程。我们来看一下深层次的原理。
“32位的iOS系统和64位的iOS系统的差别主要有两个:一个是数据类型的差别,一个是过程调用方法的差别。 在数据类型上,主要的变化是指针类型(Pointer)和长整数类型(Long)的长度变化和内存对齐方式的变化,同时也导致了更高级别数据类型的变化,如NSInteger的长度也有变化。在过程调用方法上,因为ARMv8和ARMv7具有不同数量的寄存器与不同的过程调用约定,所以32位系统和64位系统在汇编层级是不同的。”
实际测试中遇到过新版64位安装包在各功能模块上发生闪退、显示混乱、数据错误、性能差等问题。额外强调的一点是,要关注的问题为数据的传输,因为用户会通过网络交换数据,用户保存的数据也可能通过备份等方式在32位系统和64位系统之间切换,所以应用在保存和发送流数据的时候一定要考虑充分,例如32位机保存的书签在64位机上是否能够正确显示和使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值