1.常见的崩溃类型
- ANR:主线程5秒内没响应
app主线程发起一次网络请求,如果这个网络请求5秒内没有得到回应,系统就会检测到主线程5秒内没有得到应答,系统会弹出anr弹窗,提示应用无法响应,是否停止应用。 - Force Close:未捕获的Android vm异常
比如页面列表index计算错误,数组越界,导致应用崩溃。 - Crash:native crash
封装的底层库崩溃导致的
2.基本测试方法
2.1发布前
- monkey测试+AppCrawler自动遍历
- 结合各类场景用例
2.2发布后
- 埋点 注册一个异常处理的逻辑
- 介入外部sdk,如bugly
3.anr数据的收集:
手机的/data/anr/traces.txt文件记录了anr和各种各样的crash问题。
adb pull /data/anr/traces.txt
注意:如果应用安装了第三方的sdk,如bugly,traces.txt文件不会记录崩溃信息,此时需要去服务端查询崩溃信息。
4.一些发生崩溃的场景
4.1弱网下接口返回异常导致的崩溃
- 弱网( 完全超时 2G 3G)
- null返回
- 字段类型变更
1.接口返回null值或默认值,查看应用是否崩溃。接口的选择:模拟重要的服务,通过线上观测哪些服务经常出问题
2.弱网下,只用关注原生页面的加载情况,H5页面不用关注,查看应用是否会发生崩溃。
3.弱网下,页面返回前进后退,是否触发崩溃。
4.更换接口字段类型,是否触发崩溃
5.打开新页面,快速返回,异步处理问题。
4.2逻辑问题
打开新页面再快速返回、异步线程问题
横竖屏切换,前后台切换
示例:弱网下,进入一个页面然后返回。此时后台的进程依然在发起网络请求,当请求完成后,页面已经关闭。此时请求会针对一个空对象绘制页面,触发空指针异常
接口返回null值,应用是否能够处理,而不会触发崩溃。