【系统稳定性 - 测试】2.2 谈谈Monkey老化测试场景的ANR问题分析

Monkey 测试,就像一只猴子在屏幕上随即点击测试。Andoird通过 Monkey 向系统发送伪随机的用户事件流(点击、滑动、 Application 切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试,检测程序 多久的时间会发生异常。monkey 测试为了测试软件的稳定性而生,在有些公司称之为老化测试。

Monkey测试是随机的,不可自定义;但频率可控,测试过程中可能会导致的不必要的应用 crash 或者 ANR。

一,同时进行两组或多组Monkey测试同时进行

这种情况下会导致事件触发过快,事件处理速度异常通常会导致 SystemServe 的 ION 内存占用高。这种问题在大分辨率的设备会很容易导致内存异常。可以通过dumpsys pid_xxx查看进程的详细内存布局;

二,Monkey机制问题

如果 monkey 测试过程中由于其他应用 crash 或者 ANR,系统触发异常处理机制,打印 Log,处理 crash 进程等操作,会使得系统瞬间非常卡顿。这样通过 Monkey 向系统发送伪随 机的用户事件流,由于系统卡顿,可能会导致例如,AMS 广播队列阻塞,time tick 广播未能 及时分发完成等情况,导致被测试应用出现 crash 或者 ANR 情况。

如下场景:

D KeyguardUpdateMonitor: received broadcast android.intent.action.TIME_TICK

TIME_TICK 广播由系统发送至 应用 的过程整体慢导致,应用接收到广播时已经慢了 20s+,已经超出了前台广播的处理时间限制(前台广播接收处理的总时限为 20s),直接就会触发 ANR。

三&#

猜你喜欢

转载自blog.csdn.net/huangyabin001/article/details/126903500