项目名称:
某问卷调研系统
项目描述:
一个基于某银行app的其中一个子系统:问卷调研子系统。
问题描述:
在一次发版过程中,有某为某型号的机型在系统第一次升级以后出现app闪崩现象。重新卸载以后问题可解决。
问题呈现过程:
客户:系统升级以后,有工单提交到后台,app闪崩,必须重启。
技术:提供具体的系统机型,型号,操作步骤
客户:操作步骤:下载新版本的app客户端,安装以后,登录,进入问卷模块,app卡顿,重启后可进入其他模块,再进入问卷模块app仍然卡死
机型:某为某型号
操作系统:安卓
技术:卸载app后再重新安装新版本问题是否存在?
客户:卸载后再重新安装新版本,不是从旧版本升级而来,app不闪退,能进入答题模块。
频率:工单一天有好几单。
问题分析过程:
经过问题呈现的方式,发现收集回来的工单,机型集中在某为机型,某具体型号。由于测试机有安卓和苹果机型,但没有某为该机型,遂首先定位是测试机型差异导致本问题发生。
问题复现:
为了复现该问题,大楼挨个工位搜寻该机型号,收集有5台,由于卸载后问题消失,所以需要多收集几台,看发生的概率,同时按不同的操作方式定位问题。
收集5台机器后,经测试,通过旧版本升级而来的app,问题100%必现。
卸载后问题100%消失。
问题再次分析:
根据前面的情形,初步怀疑是系统升级时,未进行旧版本的缓存清理,导致问题发生。当重新卸载后,app由于旧版本的缓存被清理,新版本app缓存没有问题,所以问题没有发生。
初步解决方案验证:
为了验证再次分析问题的想法,提出的初步解决方案是,对一台有问题的机型,进行缓存清理后,再次进入答题模块。
问题验证步骤:
一台有问题的安卓机型,升级app后,不做任何操作,进入问卷模块,发现问题存在。打开app的,进入设置界面,进入清楚缓存菜单,确定清理数据。
等再次进入,发现可以进入问卷模块,进行答题。一切正常。至此,可以对工单进行回复,通过卸载app的方式或者清理缓存的方式,进行问题暂时解决。
问题深入分析:
虽然找到了临时的解决问题的方式,但是具体的问题本质还是要分析。
找到源码,仔细阅读缓存相关,发现在答题时,会缓存问卷信息到app,减少对后端接口的请求次数,但是在新旧版本的升级中,有某个字段进行了类型修改,当新版本的代码读这个类型的字段时,读取失败,导致失败,由于后续问题处理不优雅,导致系统app直接假死。必须重启。
虽然从源码层面找到了问题,也提交了新的修复版本app,但是为何有的机型不会出问题,而只有这一款机型出问题呢?
问题根源分析:
为了找到根本的原因,找到了app专家,经分析发现,该出现故障的机型,对缓存的处理方式和普通机型的处理方式有些差异,会默认保留系统升级后的缓存,而其他机型系统升级后缓存默认是覆盖缓存的。因此导致本次测试未覆盖到。
项目总结:
虽然问题找到了,但是是通过人工一步步分析才解决的。后面为了通过工具能够迅速定位该类问题,打算引入一款移动端性能分析工具,经调研,有友盟+的一款u-apm可以解决该场景的问题。
作者:焦宗官