【软件测试】APP停止运行的bug分析
2016-03-23 12:53
441 查看
APP停止运行的bug分析
——by PopStar_Z
一、事件起因
操作手机自带的返回键时,手机出现闪退,提示“***停止运行”,并退出到手机主页,点击该软件再次登录时,反复操作又会出现类似的问题
二、原因分析
1、初步定位
定位分析:
1、由于在软件运行过程中,不断的操作手机会产生大量的缓存数据,当手机中安装的软件比较多时,手机内存占用空间比较 大,此时如果缓存数据过多,就会造成内存空间不足,从而产生手机闪退的情况;2、在安装过程中,历史版本数据如果不清除也有可能造成新版本的异常退出情况;
3、弱网络环境原因,由于网络延迟问题。当手机需要从服务器端获取请求的信息数据时,服务端将响应过后的信息发送给手机端,但是由于网络延迟会出现响应数据不能正常接收,从而闪退 ;
4、手机固件、机型的不同,造成软件与手机的兼容问题也不同,因此需要把兼容问题考虑在内。
初步排查步骤:(软件缓存、手机版本安装、弱网络、兼容问题)
手机缓存:在安装A应用之前,排查手机缓存
1) 安装A应用后查看手机剩余内存
2) 运行A应用,反复操作通知详情,监控该软件占用手机缓存占用情况
历史数据冲突:排查是不是因为在卸载之后,历史数据并没有删除
1) 首先安装历史版本,将软件卸载时,保留历史数据
2) 然后安装新版本,打开A应用查看能否正常运行
固件、机型适配:排查是不是兼容问题
更换其他机型、固件的手机,进行类似操作,是否会出现相似的问题
初步定位总结:
从以上测试结论,由此推测,bug主要原因可能是由于手机软件缓存数据过多,造成内存不足的原因,而出现退出软件。
2、Bug深入定位
1)排查缓存数据占用大量内存
反复操作手机会产生过多的缓存数据。可能由于手机系统盘安装的软件过多已经没有空间了,打开软件的时候回产生缓存数据,而手机已经没有系统盘已经没有放缓存数据的空间了,因此你打开软件的时候会不断的崩溃。
具体操作:
使用itest工具监控使用过程中的内存变化,进入手机自带的“应用程序管理器”查看软件的缓存数据大小。查看iTest内存监控,发现内存占有较小,缓存数据量也只有104K,可以初步排除缓存容量过多的问题。
2)排查历史版本数据冲突
A应用有可能是在卸载旧版本之后,还存在着历史数据,有的时候是因为历史版本与新版本冲突,会导致新版本的部分内容不可以使用,出现闪退。
具体操作:
首先安装历史版本,将软件卸载时,保留历史数据,然后安装新版本,打开A应用查看能否正常运行 。结果在部分功能上,A应用由于历史数据没有删除的原因。功能使用出现问题,比如聊天不同的问题,但并未出现“A应用停止运行”的情况。
3)排查弱网络环境
有时候会由于网络延迟问题。弱网络环境原因,造成网络延迟:当手机需要从服务器端获取请求的信息数据时,服务端将响应过后的信息发送给手机端,但是由于网络延迟会出现响应数据不能正常接收,从而闪退
具体操作:
Fiddler的模拟限速是通过延迟上传/下载速度来实现的。启用该功能方法如下:Rules → Performances → Simulate Modem Speeds
就能按照默认的参数限速,模拟弱网络。
若要自定义modem speeds 操作如下:
Rules →Customize Rules… 将打开Fiddler ScriptEditor页面(可以安装一个fiddlersyntaxsetup.exe插件,方便操作);
反复验证后此时情况,弱网络环境下界面显示加载的时间会比较长,最后会出现“请设置网络的提示”,并没有出现手机闪退的情况,因此并不是bug的原因所在。
4)排查代码:返回键按键事件的判断忽略
查看相关的代码,发现在执行过程中,由于判断分支并没有考虑异常处理的情况所以在执行操作后,点击手机自带的返回键后,由于软件不知道该如何处理,而闪退出A应用。修复代码如下:与开发沟通之后,这个问题出现的真正原因是忽略了对社交界面的返回键按键事件的判断,在比较早的版本,那个时候按返回键默认情况是退出,而在社交界面没有设定按下返回键的操作,结果就认为是默认操作,当用户点击返回键后,便会直接退出A应用。
三、规避bug方案
1)当出现第一种情况解决的办法是通过手机的自带的删除软件把一些软件删除掉,腾出一些空间来。2)建议卸载重新安装,安装方式在选择时,不要选择覆盖安装,可以首先清理A应用的缓存数据,然后卸载A应用,确认卸载完 毕后将A应用重新安装
3)这种处理方案可以首先查看网络,将网络的异常情况的处理,写到代码中去,当没有接收到服务端的响应数据时,就可以按照异常的情况来处理,不会发生闪退或崩溃
4)及时与开发交流沟通,在软件代码方面由于手机返回键没有写到代码里造成软件闪退。
四、QA测试推断A应用停止运行的bug的总结
初步定位:
抓包工具fiddler,手机性能测试工具iTest,初步定位bug原因;
深入定位:
缓存问题:借助手机应用管里器等查看缓存数据大小进行定位。历史数据问题,覆盖安装但未清理历史数据。
弱网络问题:借助fiddler等工具限制网速,模拟弱网络进行重现和定位。
代码数据问题:由于返回数据为异常,而引起bug,模拟异常数据进行重现和定位。
深入定位总结:
这个问题出现的真正原因是忽略了对社交界面的返回键按键事件的判断,在比较早的版本,那个时候按返回键默认情况是退出,而在社交界面没有设定按下返回键的操作,结果就认为是默认操作,当用户点击返回键后,便会直接退出A应用。
相关文章推荐
- 024_MapReduce中的基类Mapper和基类Reducer
- 027_编写MapReduce的模板类Mapper、Reducer和Driver
- Xcode7.2中storyboard能显示tab bar的图标真机测试不显示 解决办法
- 011_用eclipse打开hadoop1.2.1源码出现The method getSplits(JobConf, int) is undefined for the type Object错误
- 微信入门 ——《微…
- Android Wear 兼容
- android studio获取发布版安全码
- JDK源码(一)Object类
- Android BottomNavigationBar底部导航控制器的使用
- Android根据手机远近自动切换扬声器或听筒
- 02 - 加载XIB(ViewController)后 View的子控件无响应中
- WebView加载html页面
- 01 - Pushing a navigation controller is not supported
- objective-C学习笔记(三)数据成员:属性与实例变量
- iOS 项目前期技术点测试
- Android Studio导入项目的遇到的两个问题
- IOS中延时执行的几种方式的比较和汇总
- Android有关Service问题汇总
- android开发步步为营之98:android studio使用技巧之一(如何清理不需要的文件)
- android PendingIntent