3.2.2 接口差异
《腾讯iOS测试实践》第3章iOS兼容性测试,本章结合过往兼容性的测试实践经验对iPhone上的App兼容性问题进行总结。本节为大家介绍接口差异。
- 作者:丁如敏来源:机械工业出版社|2017-09-14 15:57
有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研
3.2.2 接口差异
系统发布的同时,还有与新增功能对应的一些用户看不见的变化。一般来说,是对开发者而言的变化,大多体现为系统接口的变化,以及一些和过往不同的API出现,这里称为系统的接口差异。
新系统发布后,iOS产品的开发工具Xcode也会进行更新,提供新的SDK供开发者进行编译。而使用新SDK编译的版本在旧系统上也可能会存在各式问题,主要是SDK底层的API实现会做一些调整,需要开发者阅读新系统说明,旧有代码对新系统的API实现要进行适配,以免出现各式问题。
因为系统一般是一年发布一个大的版本,按照一年中不同的时间阶段,大约会有如图3-1所示的三个测试阶段。
1.日常兼容
一款App在编码阶段就要考虑不同系统的差异性,在修改代码的阶段要格外关注系统的高低版本之间API调用时实现的差异。
表3-1是QQ浏览器(iPhone)在非新系统发布时期的普通适配测试发现的问题。
表3-1 典型适配测试问题
从表3-1中可以看出,两个Bug都是某个系统下的浏览器不响应用户手指操作。点击开关,不响应开关命令;滑动屏幕,不响应滚动命令。其本质是因为开发在重构或者实现函数功能时,忽略了高低版本系统上的系统API调用的差异性。
这种情况一般发生在函数重构阶段,重构的开发在不了解系统差异性的情况下,容易出现这样的问题。作为测试人员,对每次重构类型的测试,尽量做到系统覆盖。如果条件允许,最好与开发一起过一下高低版本系统API实现是否有差异性。
2.发布新系统
在每年的新系统发布前,苹果公司会陆续发布Beta版本供开发者适配。这时测试也要跟进,对App在新系统上运行的情况进行检查确认。时机一般是在开发完成一轮适配测试后开始启用。原则上是所有的功能都要在新系统上运行一次检查。在启动测试工作之前,测试人员最好也要了解新系统的特性及其变化。
下面还是以QQ浏览器(iPhone)为例,如表3-2所示。
表3-2 Bug列表
Bug 1如图3-2所示,其中左边的图是手机通知栏中浏览器下发的消息,点击这条消息后进入右边的图,可以发现上方本应该显示手机的网络信号、电量、时间信息的状态栏不显示了。
这是iOS 9正式发布前的Beta 3版本自身的问题,我们可以对这个问题进行兼容,在iOS 9正式版本发布后这个问题也不复存在。
Bug 2的现象如图3-3所示,其中左图中的下方工具栏有一个“收藏到QQ”,点击后会提示登录QQ(已经登录过QQ),现象如右边的图所示。
这是iOS 9基于安全性考虑,不允许扫描用户手机里App的安装情况,必须在URL scheme里指定调起的App(URL scheme一般使用的场景是应用程序有分享或跳转其他平台授权的功能,分享或授权后再跳转回来)。
在iOS 8中并没有做过多限制,但是iOS 9需要将在外部调用的URL scheme列为白名单,才可以完成跳转。如果iOS 9没做适配,则会报错。具体的解决方案是要在info.plist中设置 LSAPPlicationQueriesSchemes类型为数组,下面添加所有用到的scheme,如图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”去匹配,全部匹配失败,所以启动浏览器后不再做任何处理,就不会跳转到相应页面了。
上述三个阶段产生的适配问题主要是因为新系统淘汰或更新了一些API,如果开发人员在这些地方不注意,就会出现上述问题。这里测试人员可以做的工作是与开发人员一起学习每个系统的特性—关联产品特性。例如,iOS 9上关于URL scheme的规定涉及外部App调用,那么测试人员可以排查所有涉及外部App调用的功能,避免开发人员遗漏。本章中的案例就是开发人员忽略了工具箱中收藏的QQ功能也涉及外部App调用(QQ账号调用)。
不同系统接口差异引发的API适配是适配测试重点关注的问题,无论是API更新、淘汰,都会导致适配问题,关注API变更是测试人员和开发人员都要做的。测试人员对缺陷要知其然,更要知其所以然。
喜欢的朋友可以添加我们的微信账号:
51CTO读书频道二维码
51CTO读书频道活动讨论群:365934973
回书目 上一节 下一节 |
- 大家都在看
- 猜你喜欢
- 24H热文
- 一周话题
- 本月最赞
- 3.3.1.1 标准9针串口引脚定义7.2.3 用ALTER TABLE语句来创建索引6.9.1 企业文件服务器搭建案例(1)一、中国制造2025主要内容10.4.1 使用os.system函数运行其他程序深入理解Spring Cloud与微服务构建6.4.2 postDelayed方法和removeCallbacks方法的使用(1)6.1.4 开发第一个实体Bean--Student.java
- 3.3.1.1 标准9针串口引脚定义一、中国制造2025主要内容8.2.8 drawRoundRect方法:绘制圆角矩形深入理解Spring Cloud与微服务构建Python即学即用7.2.3 用ALTER TABLE语句来创建索引2.6.1 @Produces注解12.2 使用DROP INDEX删除索引
- 3.3.1.1 标准9针串口引脚定义深入理解Spring Cloud与微服务构建8.2.8 drawRoundRect方法:绘制圆角矩形一、中国制造2025主要内容7.2.3 用ALTER TABLE语句来创建索引12.2 使用DROP INDEX删除索引2.3 三角函数的图像2.6.1 @Produces注解
视频课程+更多
-
Shell运维自动化高级实战视频课程[老男孩Linu
讲师:老男孩107285人学习过
-
【王佩丰】PowerPoint2010视频教程
讲师:王佩丰747358人学习过
-
2018年软考网络规划设计师-下午案例分析历年
讲师:小任老师29411人学习过
最新专题+更多
- 精选博文
- 论坛热帖
- 下载排行
读 书 +更多
Eclipse从入门到精通(第2版)
本书为《Eclipse从入门到精通》一书的全新改版。本书以最新的Eclipse 3.2作为写作版本。全书分为5篇:起步篇介绍了Eclipse及相关插件的安装...
-
订阅51CTO邮刊
点击这里查看样刊