《腾讯iOS测试实践》一一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是不同机型的屏幕尺寸和设备分辨率,测试时需要关注不同设备的资源配置是否有遗漏或者错配。

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

从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位机上是否能够正确显示和使用

时间: 2024-07-31 15:05:56

《腾讯iOS测试实践》一一3.3 机型兼容的相关文章

《腾讯iOS测试实践》一一导读

Foreword 前 言 为何编写本书 随着移动互联网的兴起,移动终端的测试也进入火热的时代.两大主流操作系统Android和iOS占据了移动端的主要市场份额,其中iOS系统只能在苹果系列的移动终端使用,也就是说,在苹果系列的移动终端产品上,操作系统都是清一色的iOS系统,这就形成了硬件和系统同属于一家公司的独特现象.每年苹果公司发布新机型或者新操作系统时,都会引起全球果粉的疯狂.如此火热的平台,如何保证其App的质量就显得尤为重要. 长久以来,市面上单独讲解iOS平台测试相关知识的书籍比较少见

《腾讯iOS测试实践》一一第3章 iOS兼容性测试 3.1 引言

第3章 iOS兼容性测试 3.1 引言 苹果公司每年都有两个引人注意的大动作:一是发布新系统,二是发布新机型.无论是发布新系统还是发布新机型,都会让iPhone平台上的研发团队忙于兼容适配的工作.作为iPhone平台上的测试人员,对苹果公司每年放的大招都要有招架之术.很多不了解情况的人会认为苹果公司的机型比较少.系统发布也不频繁,应该不会有太多涉及适配的问题,而实际情况并非如此.每发布一个系统和机型,都会伴随大量的技术实现或者硬件变革,用户在感受机型与系统更新带来全新体验的同时,背后需要开发人员

《腾讯iOS测试实践》一一2.3 iOS平台的特殊性

2.3 iOS平台的特殊性 iOS平台作为一种独立的操作系统平台,有很多其他平台所没有的特性.2.3.1 证书 我们在找工作时,需要向用人单位出示学校颁发的毕业证书,同理,要想我们开发的应用能够在iOS设备上安装启动,就需要向iOS设备提供由苹果公司颁发的证书,证明我们的应用是经过苹果公司官方认证的.iOS设备在启动App前,会先验证证书是否合法,这个过程被固化在了iOS系统中,除非手机越狱,否则都要经历这个过程. 要想开发iOS应用,首先要成为苹果公司认证的开发者(虽然Xcode 7之后可以用

《腾讯iOS测试实践》一一第1章 测试观概述 1.1 引言

第1章 测试观概述 1.1 引言 在正式介绍iOS测试前,先为读者引入一个思考问题:一千个人有一千种测试观,那么测试人员到底应该持有何种测试观?我们先来看看测试的定义发展史.20世纪60年代:软件开发过程中,将测试等同于"调试".1957年,软件测试区别于调试,成为一种发现软件缺陷的活动.1972年,在北卡罗来纳大学举行了首届软件测试正式会议.1975年,John Good Enough和Susan Gerhart在IEEE上发表了文章<测试数据选择的原理>,从此软件测试被

《腾讯iOS测试实践》一一1.2 工程效率

1.2 工程效率 总体来说,工程效率就是研发效率(包含测试效率).这里我们会把测试效率单独提出来进行说明,因为这是与测试工程师相关度最大的工作.研发效率,其实就是让产品上线的时间更快(在品质有保障的前提下),大多数时候是说与研发流程相关的(不局限于敏捷流程,Feature Team研发模型),例如包含但不局限于以下活动.需求评审:需求评审机制以及更新通知,避免需求有改动而没有及时同步到相关角色.代码质量:静态代码扫描,千行代码缺陷率等.架构评审:代码架构的讨论以及评审.Bug流程:Bug生命周期

《腾讯iOS测试实践》一一1.5 测试设计

1.5 测试设计 测试设计是一个系统性工程,涉及内容比较多,从前期需求分析到用例设计,再到各类数据的分析等.下面我们择取主流的理论来看一下. 1.5.1 探索式测试探索式测试是目前业界比较流行的一种测试风格,是由测试专家Cem Kaner博士于1983年提出的,后来经过James Bach.James Whittaker等人的发展流行起来.国内大多数人是因为James Whittaker撰写了<Exploratory Software Testing>(探索式软件测试)一书才了解探索式测试,并

《腾讯iOS测试实践》一一3.2 系统兼容

3.2 系统兼容 iPhone上的操作系统被称为iOS,每次发布新版本,想体验新特性的用户就需要将自己的手机进行固件刷新,或者购买已经配置最新系统的iPhone.操作系统的差异是手机"软实力"的差异.新系统发布给我们带来了新功能和接口实现的变化.3.2.1 新增功能 什么是系统的新功能?发布每个大系统,除了界面更新外,必然伴随着一些全新的功能,升级了新系统后这些功能可以直观地被用户体验到.例如iOS 8带来的widget,支持第三方输入法,iOS 9带来的spotlight新特性,iO

《腾讯iOS测试实践》一一1.6 数据反推

1.6 数据反推 1.6.1 测试过程中的数据测试数据反推-充分利用各类测试数据的优化流程,进一步保障产品的质量.在各阶段的测试过程中会产生大量数据,例如Bug数据.测试通过率.回归通过率等.那么如何充分利用这些数据呢?前面已对已知Bug以及未知Bug进行了讨论.现在换个角度,从Bug产生的阶段来分析,图1-12是不同阶段Bug修复成本曲线. 图1-12 不同阶段Bug的修复成本[3]针对Bug各阶段的分析,根据图1-12中Bug越早发现解决成本越低的结论,需要尽可能在最早引入的阶段发现Bug.

《腾讯iOS测试实践》一一3.4 测试原则

3.4 测试原则 一般来说,进入测试窗口期的系统不会超过四个大系统,即最新的四个系统,例如当前是iOS 10系统最新,那么就覆盖iOS 10.iOS 9.iOS 8.iOS 7.当然,这跟被测App可安装的系统有关,当前QQ浏览器(iPhone)还支持iOS 7,未来当发现iOS 7的用户量比较少时就会考虑放弃支持这个系统,那么对应的iPhone 4就会退出测试的覆盖范围.截至本稿撰写时,处于iOS 10不断发小版本的阶段,每个系统下的机型分布如表3-5所示. 由于实际测试人力受限,不能每个机型