iOS应用兼容测试策略学习笔记

切入维度与关注点

一、系统兼容

  • 1.1 新增功能:
    发布每个大系统,除了界面更新外,还会伴随着一些全新的功能,e.g. iOS8带来的widget. iOS平台上的开发者会根据这些新特性再结合自己的产品进行一些功能关联。

  • 1.2 测试关注点:
    新增功能的测试只要在对应的系统和机型上进行针对性的验证即可。

  • 2.1 SDK接口差异:
    新系统发布后,iOS产品的开发工具Xcode也会进行更新,提供新的SDK供开发者进行编译。而使用新SDK编译的版本在旧系统上也可能会存在各式问题,主要是SDK底层的API实现会做一些调整,需要开发者阅读新系统说明,旧有代码对新系统的API实现要进行适配,以免出现各式问题。

  • 2.2 测试介入的三个阶段:
    iOS应用兼容测试策略学习笔记

  • 2.2.1 日常兼容:
    主要关注不同系统的差异性,在修改代码的阶段要格外关注系统的高低版本之间API调用时实现的差异。

  • 2.2.1 发布新系统:
    在每年的新系统发布前,苹果公司会陆续发布Beta版本供开发者适配。这时测试也要跟进,对App在新系统上运行的情况进行检查确认。时机一般是在开发完成一轮适配测试后开始启用。
    原则上是所有的功能都要在新系统上运行一次检查。在启动测试工作之前,测试人员最好也要了解新系统的特性及其变化。这个阶段,测试要随开发一起学习新系统的特性,多多阅读相关文档,联系产品各项功能检查。e.g. iOS 9上的字体变化了,但是旧的SDK还是按照之前的方式进行编译,就会出现省略号的问题。

  • 2.2.1 启用新的SDK:
    在新系统发布后一段时间,开发人员会采用高版本的SDK编译,比较显式的是用高版本的Xcode来编译版本。这里有个问题,就是如果使用高版本独有的API,编译器是不会标识出来的,而低版本系统并没有这种API,因此运行在低版本上就会出现问题。

二、机型兼容

  • 1.1 新增功能
    系统更新会带来新功能,机型的升级也会带来新功能,例如从iPhone 5S开始有了指纹识别,从iPhone 6s开始有了3D Touch等。如果机型上的新功能不涉及被测产品(例如手机照相机的更新),就可以忽略;如果涉及,就要进行适配。

  • 1.2 测试关注点
    一是保证有该特性的机型能够正常使用;二是保证低端机型不会误触发这个逻辑。

  • 2.1 屏幕变化
    iOS应用兼容测试策略学习笔记

  • 2.2 测试关注点
    对于屏幕尺寸大小的不同,出现的兼容性问题也多。经常出现的问题是网页显示或弹框显示

  • 3.1 处理器差异
    iOS应用兼容测试策略学习笔记设备对指令集的支持可向前兼容,只是会影响运行效率。因此现在编译的版本一个包有两个架构,分别支持ARMv7指令集和ARMv64指令集的架构。选择ARMv7是为了支持iPhone 4~iPhone 5C之间的设备,而编译ARMv64的二进制包一方面是因为苹果公司的规定,另外一方面是为了让高级机型能够更好地运行,提高运行效率。

  • 3.2 测试关注点
    3.3.1 适配工作的重点在于对参数类型的调整,适配最新版的如目前的ARMv64的指令集。Bug大多集中于参数类型在ARMv64设备上出现的异常。
    3.3.2 模拟器并不运行ARM代码,软件会被编译成x86可以运行的指令,因此适配不能在模拟器上进行验证。
    3.3.3 额外强调的一点是,要关注的问题为数据的传输,因为用户会通过网络交换数据,用户保存的数据也可能通过备份等方式在32位系统和64位系统之间切换,所以应用在保存和发送流数据的时候一定要考虑充分,例如32位机保存的书签在64位机上是否能够正确显示和使用。

测试原则及策略

iOS应用兼容测试策略学习笔记

  • 原则:
    1、 一般来说,进入测试窗口期的系统不会超过四个大系统,即最新的四个系统.
    2、 未来当发现低版系统,e.g. iOS7的用户量比较少时就会考虑放弃支持这个系统,那么对应的iPhone 4就会退出测试的覆盖范围。

  • 策略:
    iOS应用兼容测试策略学习笔记
    1、 以操作系统覆盖齐全为主,最高系统保持最新和次新,机型尽量照顾高低两端机型。
    2、 迭代测试(增量测试)阶段,对于新增功能一般采用四个系统都覆盖,机型选择尽量不重复。如果人力够,还需要格外留心低端机型的高端系统,如iPhone 5上搭载iOS 10的系统,或者iPhone 4上搭载iOS 7。
    另外,对版本最高的系统尽量覆盖两个以上的子系统,例如当前是iOS 10.2版本最新、iOS 10.1次新,这两个系统都应尽量覆盖到。
    3、 在集成测试阶段,由于需要执行大量的功能测试用例,所以一般每个模块的测试都无法保证全系统的覆盖,只有入口级别的用例才在所有系统上运行。
    4、 这里需要特别说明的是配置类,例如下发闪屏图片类,要充分考虑屏幕分辨率的问题,尤其是iPhone 7 Plus、iPhone 6 Plus和iPhone 6s Plus都有放大模式。

最后

参考资料:《 腾讯iOS测试实践 》