Android
测试同学,不可避免的都接触过
targetSdkVersion
升级相关的测试,今天小编结合之前的经历聊一聊测试过程遇到的关于
targetSdkVersion
的坑。
小编参与测试的项目有一个产品线是由
SDK
和
awp
内核组成,为第三方提供优化移动端的
web
应用体验的解决方案。
近期,接入合作方的开发反馈了一个很诡异的问题:他们正在开发新版本出现
web
页面加载后显示空白的问题。而这在其他接入方使用一年多时间都没有反馈过上述问题。
故,我们开始探案模式:整个过程采用典型的排除法来定位问题
和接入方沟通出现问题的机型和系统
(AndroidQ)
以及出现问题的链接,自行编译
demo
,但是并没有成功的复现问题。
(
排除由于网站原因导致白屏的可能
)
在出现问题机型上安装接入方提供的安装包,发现可以稳定复现网页白屏的问题。(说明该开发版本存在问题)
使用接入方提供的安装包,替换加载早期版本的内核,惊奇的发现也是可以复现网页白屏的问题。(排除近期产品代码和功能的变更优化,引入上述问题)
使用接入方线上的安装包,分别加载早期和最新版本的内核,结果发现问题无法复现。(这个一度使我们陷入困境,怀疑是接入方自身代码错误而引入的问题)
STEP-05: 确认接入方代码改动对awp的影响
和接入方开发沟通,排查前后版本有哪些重大改动。(确认哪些改动,是否影响到
awp
的接入功能,最后发现该开发版本计划升级
targetSdkVersion
到
api29
)
修改
demo
代码,更改
targetSDKVersion
为
29
,发现在
Android Q
手机上可以复现问题。
基于上面的排查步骤,可以初步定位是由于接入方将
targetSDKVersion
升级
29
导致
Android Q
机型上独有的问题。之前一年没有反馈上述问题的原因是基本业界内主流应用
targetSdkVersion
大部分都没有升级到
29
,所以提前没有暴露上述问题。
这个部分,测试同学在排查阶段不需要介入太多。由开发持续定位深层原因和修复问题。
针对问题的后续的定位和排查,我们发现导致问题的原因是由于接入方升级
targetSDKVersion
为
29
,诱发了潜藏的共享内存问题,导致网页显示白屏。后续有机会可以针对共享内存问题总结分享一次。
Android Q
共享内存特性详细参考:
https://developer.android.com/about/versions/10/behavior-changes-10
细思下,这有个更隐患的问题。这个问题是在接入方开发过程提出发现的,如果到接入方测试后期才发现呢?或者由于未适配
API29
的机型呢?对于用户,这无疑将是一个重大伤害。
那我们在过程中的哪个环节存在问题呢:没有关注
Android
新版本的特性吗?没有关注共享内存对于逻辑细节的影响吗?
答案是否定的,这个是我们学习、总结、沉淀和提升的过程,但是并不是解决这个问题的核心方法。核心在于如何尽早发现上述问题。
解决这个问题的核心在于第一时间进行
targetSdkVersion
适配。
因为是为第三方提供服务的产品形态,所以和单一
APP
测试存在的区别是:在单一
APP
测试中,适配测试主要涉及分辨率适配,厂商机型适配,系统版本适配,
ROM
适配,
CPU
架构适配和
Android
系统运行环境适配。但是单一
APP
特定版本
targetSdkVersion
是恒定的,不需要适配
targetSDKVersion
。
而作为第三方服务提供者,接入方
targetSDKVersion
版本并不统一,虽然接入方也不会第一时间升级到最新版本的
targetSDKVersion
。但是第一时间完成最新版本
targetSDKVersion
的适配,可以提前发现潜藏的问题,以便为接入方提供更好的服务。
工作中需要学会尽可能避免踩坑,但实际上不可能做到完全杜绝。真正重要的是杜绝踩相同的坑,工作过程遇到的问题都是成长的宝藏:
There are nomistakes, save one: the failure to learn from a mistake.

搜狗测试QQ粉丝群:459645679

本文分享自微信公众号 - 搜狗测试(SogouQA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。