共计 1250 个字符,预计需要花费 4 分钟才能阅读完成。
项目名称:
某问卷调研零碎
我的项目形容:
一个基于某银行 app 的其中一个子系统:问卷调研子系统。
问题形容:
在一次发版过程中,有某为某型号的机型在零碎第一次降级当前呈现 app 闪崩景象。从新卸载当前问题可解决。
问题出现过程:
客户:系统升级当前,有工单提交到后盾,app 闪崩, 必须重启。
技术:提供具体的零碎机型,型号,操作步骤
客户:操作步骤:下载新版本的 app 客户端,装置当前,登录,进入问卷模块,app 卡顿,重启后可进入其余模块,再进入问卷模块 app 依然卡死
机型:某为某型号
操作系统:安卓
技术:卸载 app 后再重新安装新版本问题是否存在?
客户:卸载后再重新安装新版本,不是从旧版本升级而来,app 不闪退,能进入答题模块。
频率:工单一天有好几单。
问题剖析过程:
通过问题出现的形式,发现收集回来的工单,机型集中在某为机型,某具体型号。
因为测试机有安卓和苹果机型,但没有某为该机型,遂首先定位是测试机型差别导致本问题产生。
问题复现:
为了复现该问题,大楼挨个工位搜查该机型号,收集有 5 台,因为卸载后问题隐没,所以须要多收集几台,看产生的概率,同时按不同的操作形式定位问题。
收集 5 台机器后,经测试,通过旧版本升级而来的 app,问题 100% 必现。卸载后问题 100% 隐没。
问题再次剖析:
依据后面的情景,初步狐疑是系统升级时,未进行旧版本的缓存清理,导致问题产生。当从新卸载后,app 因为旧版本的缓存被清理,新版本 app 缓存没有问题,所以问题没有产生。
初步解决计划验证:
为了验证再次剖析问题的想法,提出的初步解决计划是,对一台有问题的机型,进行缓存清理后,再次进入答题模块。
问题验证步骤:
一台有问题的安卓机型,降级 app 后,不做任何操作,进入问卷模块,发现问题存在。关上 app 的,进入设置界面,进入分明缓存菜单,确定清理数据。
等再次进入,发现能够进入问卷模块,进行答题。一切正常。
至此,能够对工单进行回复,通过卸载 app 的形式或者清理缓存的形式,进行问题临时解决。
问题深入分析:
尽管找到了长期的解决问题的形式,然而具体的问题实质还是要剖析。
找到源码,仔细阅读缓存相干,发现在答题时,会缓存问卷信息到 app,缩小对后端接口的申请次数,然而在新旧版本的降级中,有某个字段进行了类型批改,当新版本的代码读这个类型的字段时,读取失败,导致失败,因为后续问题解决不优雅,导致系统 app 间接假死。必须重启。
尽管从源码层面找到了问题,也提交了新的修复版本 app,然而为何有的机型不会出问题,而只有这一款机型出问题呢?
问题本源剖析:
为了找到基本的起因,找到了 app 专家,经剖析发现,该呈现故障的机型,对缓存的解决形式和一般机型的解决形式有些差别,会默认保留系统升级后的缓存,而其余机型系统升级后缓存默认是笼罩缓存的。因而导致本次测试未笼罩到。
我的项目总结:
尽管问题找到了,然而是通过人工一步步剖析才解决的。前面为了通过工具可能迅速定位该类问题,打算引入一款挪动端性能剖析工具,经调研,有友盟 + 的一款 u -apm 能够解决该场景的问题。
作者:焦宗官