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

3.2 系统兼容

iPhone上的操作系统被称为iOS,每次发布新版本,想体验新特性的用户就需要将自己的手机进行固件刷新,或者购买已经配置最新系统的iPhone。操作系统的差异是手机“软实力”的差异。新系统发布给我们带来了新功能和接口实现的变化。
3.2.1 新增功能
什么是系统的新功能?发布每个大系统,除了界面更新外,必然伴随着一些全新的功能,升级了新系统后这些功能可以直观地被用户体验到。例如iOS 8带来的widget,支持第三方输入法,iOS 9带来的spotlight新特性,iOS 10的iMessage功能更新和Push消息多样化等。iOS平台上的开发者会根据这些新特性再结合自己的产品进行一些功能关联。
新增功能的测试只要在对应的系统和机型上进行针对性的验证即可,曾经出现缺陷的案例如下:iOS 8系统widget的功能,主要在于App自身提供给widget一些信息,例如天气、资讯新闻。测试过程中发生一些显示排版的问题。iOS 9系统引入spotlight新功能可以搜索应用内的信息,这方面的Bug集中在数据传输中。曾发生过书签数据传输错误导致的闪退问题。iOS 10系统到目前为止还没有发现新增功能引发的问题。
3.2.2 接口差异
系统发布的同时,还有与新增功能对应的一些用户看不见的变化。一般来说,是对开发者而言的变化,大多体现为系统接口的变化,以及一些和过往不同的API出现,这里称为系统的接口差异。
新系统发布后,iOS产品的开发工具Xcode也会进行更新,提供新的SDK供开发者进行编译。而使用新SDK编译的版本在旧系统上也可能会存在各式问题,主要是SDK底层的API实现会做一些调整,需要开发者阅读新系统说明,旧有代码对新系统的API实现要进行适配,以免出现各式问题。
因为系统一般是一年发布一个大的版本,按照一年中不同的时间阶段,大约会有如图3-1所示的三个测试阶段。

图3-1 研发阶段
1.日常兼容
一款App在编码阶段就要考虑不同系统的差异性,在修改代码的阶段要格外关注系统的高低版本之间API调用时实现的差异。
表3-1是QQ浏览器(iPhone)在非新系统发布时期的普通适配测试发现的问题。

从表3-1中可以看出,两个Bug都是某个系统下的浏览器不响应用户手指操作。点击开关,不响应开关命令;滑动屏幕,不响应滚动命令。其本质是因为开发在重构或者实现函数功能时,忽略了高低版本系统上的系统API调用的差异性。
这种情况一般发生在函数重构阶段,重构的开发在不了解系统差异性的情况下,容易出现这样的问题。作为测试人员,对每次重构类型的测试,尽量做到系统覆盖。如果条件允许,最好与开发一起过一下高低版本系统API实现是否有差异性。
2.发布新系统
在每年的新系统发布前,苹果公司会陆续发布Beta版本供开发者适配。这时测试也要跟进,对App在新系统上运行的情况进行检查确认。时机一般是在开发完成一轮适配测试后开始启用。原则上是所有的功能都要在新系统上运行一次检查。在启动测试工作之前,测试人员最好也要了解新系统的特性及其变化。
下面还是以QQ浏览器(iPhone)为例,如表3-2所示。

Bug 1如图3-2所示,其中左边的图是手机通知栏中浏览器下发的消息,点击这条消息后进入右边的图,可以发现上方本应该显示手机的网络信号、电量、时间信息的状态栏不显示了。

图3-2 通知栏Bug图
这是iOS 9正式发布前的Beta 3版本自身的问题,我们可以对这个问题进行兼容,在iOS 9正式版本发布后这个问题也不复存在。
Bug 2的现象如图3-3所示,其中左图中的下方工具栏有一个“收藏到QQ”,点击后会提示登录QQ(已经登录过QQ),现象如右边的图所示。

图3-3 收藏到QQ功能Bug
这是iOS 9基于安全性考虑,不允许扫描用户手机里App的安装情况,必须在URL scheme里指定调起的App(URL scheme一般使用的场景是应用程序有分享或跳转其他平台授权的功能,分享或授权后再跳转回来)。
在iOS 8中并没有做过多限制,但是iOS 9需要将在外部调用的URL scheme列为白名单,才可以完成跳转。如果iOS 9没做适配,则会报错。具体的解决方案是要在info.plist中设置 LSAPPlicationQueriesSchemes类型为数组,下面添加所有用到的scheme,如图3-4所示。

图3-4 工程配置
上述两个Bug,主要是在新版本适配前的Beta版本的测试过程中发现的。这个阶段,测试要随开发一起学习新系统的特性,多多阅读相关文档,联系产品各项功能检查。新系统上的UI显示问题,大部分也是由于旧版SDK上的编译导致的,例如iOS 9上的字体变化了,但是旧的SDK还是按照之前的方式进行编译,就会出现省略号的问题。
3.启用新SDK
在新系统发布后一段时间,开发人员会采用高版本的SDK编译,比较显式的是用高版本的Xcode来编译版本。这里有个问题,就是如果使用高版本独有的API,编译器是不会标识出来的,而低版本系统并没有这种API,因此运行在低版本上就会出现问题。
QQ浏览器(iPhone)项目曾经出现过3D Touch重压菜单点击后不能跳转到App内对应的内容上。原因就是新版本SDK引入的适配问题。
浏览器创建Quick Action(用力按压App图标出现的标签)采用的是静态方式,静态创建方式是在info.plist文件中声明的,其中有两个键值是必须设置的。
UIAPPlicationShortcutItemTitle:表示这个键值设置标签的标题。
UIAPPlicationShortcutItemType:表示设置一个快捷通道类型的字符串,这个字符串唯一地标识出这个通道类型。
点击3D Touch中的快捷选项,会先启动浏览器,然后根据回传的type参数即标识通道类型的字符串来确认需要跳转的模块页面。在更新iOS 10系统的SDK后,系统会在Quick Action里自动添加widget入口,同时系统在回调type参数时会在原字符串前面自动添加一个字符串“com.tencent.mttliteextension”,即浏览器的Bundle ID,如图3-5所示。而在回调函数中,我们还用原字符串“search”“new page”“history”去匹配,全部匹配失败,所以启动浏览器后不再做任何处理,就不会跳转到相应页面了。

图3-5 参数形式截图
上述三个阶段产生的适配问题主要是因为新系统淘汰或更新了一些API,如果开发人员在这些地方不注意,就会出现上述问题。这里测试人员可以做的工作是与开发人员一起学习每个系统的特性—关联产品特性。例如,iOS 9上关于URL scheme的规定涉及外部App调用,那么测试人员可以排查所有涉及外部App调用的功能,避免开发人员遗漏。本章中的案例就是开发人员忽略了工具箱中收藏的QQ功能也涉及外部App调用(QQ账号调用)。
不同系统接口差异引发的API适配是适配测试重点关注的问题,无论是API更新、淘汰,都会导致适配问题,关注API变更是测试人员和开发人员都要做的。测试人员对缺陷要知其然,更要知其所以然。

时间: 2024-10-03 05:40:00

《腾讯iOS测试实践》一一3.2 系统兼容的相关文章

《腾讯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测试实践》一一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所示. 由于实际测试人力受限,不能每个机型

《腾讯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测试实践》一一1.6 数据反推

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

《腾讯iOS测试实践》一一1.3 品质管理

1.3 品质管理 品质管理分为两大类,即研发品质和线上品质.研发品质:包括品质体系(性能指标+用户评测).测试过程数据(Bug.通过率).线上品质:包括线上数据.用户反馈.漏测率.品质体系,除产品本身的特性功能外,还包含流畅度.内存.耗电量.启动速度.弱网络等功能,是用户体验能感知或者影响用户口碑的.同时需要思考各个指标的比重(主要考虑对用户的影响程度),这样可以更好地优化核心指标.线上品质,研发品质的指标都可以通过预设在被测App里的埋点上报上来,这样就有了线上数据.用户反馈主要是通过各反馈渠