前言
在日常生活中,我们会经常使用各种应用程序,偶尔也会遇到软件崩溃的情况,这已经成为了司空见惯的事情。然而,对于一个产品开发者来说,这样的用户体验显然是很糟糕的,大概率会导致用户流失,收益减少。这就要求我们测试人员要尽最大可能去发现软件中的缺陷,以减少应用程序崩溃的可能性 今天,我们一起来探讨一下导致“APP闪退”的那些事儿~
闪退的定义
闪退,是指在移动设备(如安卓、ios)中,在打开或使用应用程序时突然退出或中断的情况。
表现特征
-
当打开某个应用程序时,画面一闪而过,随即退回到App主页或者返回到桌面界面
-
在使用某些特定功能时,突然出现白屏、黑屏或者画面冻结,无法继续操作
-
手机在使用某个应用程序时,出现频繁的弹窗提示错误或者异常......
闪退原因
1. 应用流量激增
当某款应用程序突然面临大量用户访问时,服务器承受压力过大,导致无法满足访问需求,从而出现内容无法刷新或系统崩溃等情况。一般遇到这种情况,对于用户来说安心等待即可,开发人员会尽力通过各种技术手段来解决这个紧迫问题。
2. 内存管理
-
内存泄露:程序未能及时释放内存资源。
-
内存溢出:程序所需的内存超出了设备的限制
-
内存越界:程序访问了未授权的内存位置
3. App程序未充分考虑接口返回数据的兼容
接口返回的数据类型具有多样性,比如:空字符串、整数型和空数组等。若App未进行适当处理,将无法正确解析和获取所需参数,从而导致软件崩溃。因此,在前后台之间应建立统一的参数类型标准,以避免出现此类错误。
4. 资源加载问题
网页中引用的资源(如CSS文件、JavaScript文件、图片等)可能加载失败或加载错误,导致网页无法正常渲染或运行,进而导致崩溃。
5. 程序本身Bug
-
数组越界:使用负数索引或超过数组长度的索引进行访问。
-
空指针异常:程序中使用了未初始化的指针或者已经释放的指针,导致访问了无效地址,从而导致程序崩溃。
-
死锁:程序中多个线程或进程之间相互等待对方释放资源,形成死循环,最终导致程序崩溃
-
资源泄漏:程序中未正确释放或关闭资源,比如文件、数据库连接等,导致资源耗尽,最终导致程序崩溃。
-
堆栈溢出:堆栈区缓冲区被填满或在堆栈为空时进行数据操作。
-
并发操作:并发时调用了一个已释放的指针
-
逻辑错误:程序逻辑不正确导致的错误。
-
不正确的异常处理:程序中未正确处理异常情况,导致未预期的错误发生
-
不正确的输入验证:程序中未正确验证用户输入的数据,导致恶意输入或者非法输入导致程序崩溃。
6. 第三方库和插件问题
使用第三方插件或库可能会遇到兼容性问题、版本冲突或错误使用等情况,这可能导致网页崩溃的情况发生。
7. 缺少数据包
一些大型游戏需要数据包才能运行的,缺少数据包就可能会导致闪退哦~
8. 手机内存不足
在使用完一个应用程序后,很多用户会习惯性地返回到桌面。这时并没有真正退出应用程序,而是将其转为后台运行。如果后台运行的应用程序过多,并且手机的内存相对较少,就可能会出现闪退问题
9. 权限
一般是AndroidManifest文件中忘记配置相关权限
系统权限被拒后使用相关权限时出现闪退,如相机拍照
10. 交互逻辑
-
不同App来回切换
-
app 界面交互滑动操作导致 app 极度崩溃
11. 兼容性
-
系统兼容性:APP的SDK和手机的系统不兼容
-
版本兼容性:某些API在老版本有但新版本没有,造成对象为空引起闪退
-
分辨率兼容:由于手机型号多种,分辨率、软硬件信息各不同,不同的手机兼容上可能会出现不匹配导致崩溃
12. 网络异常
-
无网下操作:
-
网络切换:不同网络间切换(无网、WIFI、移动网络)
-
网络中断:使用app时突然断开网络
-
弱网:弱网环境,服务端没有及时响应,造成app闪退
13. 缓存垃圾过多
我们都知道每款软件都会占用一定的内存空间。比如:小红书会有视频缓存,微信有聊天记录缓存,浏览器会保存访问过的图片等等。如果长时间不清理这些缓存垃圾,软件所需的内存空间会逐渐不足,导致运行变得越来越卡顿,最终可能导致软件无法正常打开或者出现闪退的情况。
关于缓存数据大小,通常在软件设置中会有相应的模块可见。许多软件都提供了“清除缓存”按钮,但是在操作之前,我们需要考虑到某些文件或图片可能在未来仍会被使用到,因此建议谨慎地选择清除缓存的操作
14. 杀毒软件误判
手机端安装较多杀毒软件,可能会造成错误拦截,造成多个杀毒软件的冲突,还可能会造成软件启动时的误判,从而导致出现APP闪退的情况。
15. 资源竞争
软件冲突,资源竞争
结束语
总之,APP闪退的原因有很多种,需要根据具体情况进行分析和处理。在测试过程中,若遇到闪退问题,一定要截图(或录制)该问题,并保存相关的日志信息。尽力找到复现该问题的路径,并在缺陷平台记录该bug,尽可能详细的描述。比如:设备型号、系统版本,环境、时间、详细描述操作步骤和日志信息。如果问题是偶现的,可在标题中注明“偶现”
标签:导致,APP,程序,应用程序,内存,崩溃,闪退,原因 From: https://www.cnblogs.com/52Herze/p/17726394.html