TestBird 移动互联测试专家

TestBird兼容性测试之兼容性问题(一)ANR及测试实例

TestBird兼容性测试之兼容性问题(一)ANR及测试实例

背景:在移动端设备和移动端应用程序高速发展的今天,用户体验越来越受到用户和程序开发商的关注,TestBird致力于提高程序质量,提升程序用户体验,其提供的兼容性测试服务正在为越来越多的程序开发商提供服务,程序无响应问题在众多兼容性问题中占据着非常大的比重。

什么是程序无响应问题?

ANR: Application Not Responding,即程序无响应

定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现ANR,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。

ANR的种类

ANR主要有以下三类:
1. KeyDispatchTimeout(5 seconds) –主要类型按键或触摸事件在特定时间内无响应

2. BroadcastTimeout(10 seconds) –BroadcastReceiver在特定时间内无法处理完成

3. ServiceTimeout(20 seconds) –小概率类型 Service在特定的时间内无法处理完成

ANR出现的场景

1.应用在 5秒 内未响应用户的输入事件(如按键或者触摸)
2.BroadcastReceiver未在 10秒 内完成相关的处理

实际的测试案例:
测试时间:2016-03-11
客户:XX公司
程序名称:XXX
测试内容:兼容性测试
测试结果:程序无响应问题较多
测试服务公司:TestBird

1.测试结果中大量终端出现程序无响应问题,从TestBird测试截图可以看出明确提示了程序无响应,如图1:


图1

2.通过TestBird提供的日志分析工具和日志进行分析
图2通过TestBird快速问题分析工具瞬间定位到问题点:


图2

3.确认ANR类型


图3

从图3上面这里可以看出这个ANR是属于第三种小概率类型 Service在特定的时间内无法处理完成


图4

4.从图4可以知道ANR发生的时间是03-11 20:06:22.917,可以看出CPU在ANR前后的使用情况以及IOWait情况,可以为定位问题提供参考


图5

5.从图4和图5可以确定是执行PushServiceUser服务超时了

图6:以下是TestBird测试提供的DALVIK THREADS


图6

6.客户根据TestBird的测试结果,提供的log和测试截图,再结合程序的代码就可以方便快速的定位到代码问题点。

TestBird