Android monkey 测试工具的完善思路

monkey 的架构大致分为,OptionProcessor,MonkeyEvent,ExceptionCollector,EventGenerator,Executor。

基本流程是这样的,

  • 根据(测试人员)传入的测试参数设定执行参数,生成相关的测试 Event,发送 Event
  • 通过 ExceptionCollector 进行异常监听,当有异常(ANR,Crash)发生时,会记录标志位
  • 每个 Event 后,检查异常标志位,并根据测试参数来决定是否报告此次异常,并终止测试

据此,可以做出如下改进。

增加 CPU 数据收集

monkey 的流程中是没有全过程 cpu 数据采集的,但作为性能测试工具,cpu 的过程信息非常有必要保存下来

采集的办法有两种,简单一点的,通过持续输出并保存 top 命令信息即可。另外一种,通过读取运行 package 对应的 pid/stat,对数据加以处理后存入文件。

增加内存数据收集

内存数据采集,通过 dumpsys meminfo packageName 收集。

增加事件重试

当 monkey 在执行 TOUCH 事件时,应该是 DOWN 和 UP 成对出现并且都发送成功。而 monkey 调用的事件模拟接口 InputManager.injectEvent 可能会返回 false,尤其当 DOWN 事件 true 而 UP 事件 false 时会造成屏幕控件处于 long click 的状态。

为了避免这种错误发生,在上述成对的事件中,我们对 DOWN 的返回值进行判断,如果是 false,则应该重试发送,直到为 true 再进行下一组事件发送

增加 ANR 和 CRASH 去重

我们知道 monkey 长时间测试时,可能会产生很多 ANR 和 CRASH,这里面会有大量重复的问题,如果不加以检索统统提报,会造成严重的重复,而人工查重工作量又十分大。

对于发生的 ANR 和 CRASH,采用合适的数据结构存储关键信息,当有新的问题发生时,重复值则不再记录。最后将唯一的 ANR 和 CRASH 信息输出。

发布了27 篇原创文章 · 获赞 3 · 访问量 5653

猜你喜欢

转载自blog.csdn.net/candyngwh/article/details/91039849