Monkey日志分析

1. Monkey日志详解

Monkey日志由以下几部分组成:

  1. 测试命令信息

    随机种子seed、运行次数、可运行应用列表、各事件百分比。

  2.  App切换和Activity跳转

    可以看到切换到了哪个App,从哪个Activity跳转到了哪个Activity,如果发生了异常,就可以看出是在哪个App和Activity中发生的。

  3.  伪随机事件流

    各种随机事件。

  4.  异常信息

    应用崩溃、无响应等异常相应信息。

  5.  测试结果信息

    完成事件数、其他信息。

(1) 测试命令信息

包括随机种子、事件总数、允许测试包和使用的Activity、各事件百分比。

       

    

Monkey日志分析_第1张图片

(1) App切换和Activity跳转

可以看到切换到了哪个App,从哪个Activity跳转到了哪个Activity,如果发生了异常,就可以看出是在哪个App和Activity中发生的。

注:在允许一次测试多个应用时,会看到多次App切换;只测试一个应用时,一般只看到一次App切换,除非应用异常后重启。

        

       

        

(2) 伪随机事件流

记录各种随机操作及中间的延迟时间,主要是以下几种操作:   

  • touch 触摸操作

  • motion 滑动操作

    Monkey日志分析_第2张图片
  •  trackball 曲线滑动操作

    Monkey日志分析_第3张图片

 

 pinch-zoom 缩放操作

  • Monkey日志分析_第4张图片

  • rotation 旋转操作

 

(3) 异常信息

应用无响应、崩溃等异常信息

  • 应用无响应时信息:

    Monkey日志分析_第5张图片

    崩溃信息:

  • Monkey日志分析_第6张图片

 

 

(4) 测试结果信息

完成事件数、其他信息              

  • 完成事件数:

     

  • 其他信息:

     

1. 从日志中发现并提交bug

使用Monkey进行测试结束后,我们关注的是应用在测试中是否出现崩溃或无响应这类问题。测试结果可以通过如下方法判断:

  1. 在日志中搜索“CRASH”,如果搜到,可以判断App在测试过程中发生过崩溃问题;

  2. 在日志中搜索“ANR”,如果搜到,可以判断App在测试过程中发生过无响应的问题;

    我们可以把这些关键字,连同其上下文,包括Java异常信息和其他相关信息一起提交。其中,Java异常信息主要有以下类型:

    算术异常类:ArithmeticExecption

    空指针异常类:NullPointerException

    类型强制转换异常:ClassCastException

    数组负下标异常:NegativeArrayException

    数组下标越界异常:ArrayIndexOutOfBoundsException

    违背安全原则异常:SecturityException

    文件已结束异常:EOFException

    文件未找到异常:FileNotFoundException

    字符串转换为数字异常:NumberFormatException

    操作数据库异常:SQLException

    输入输出异常:IOException

    违法访问错误:IllegalAccessError

    内存不足错误:OutOfMemoryError

    堆栈溢出错误:StackOverflowError

2. ANR异常和traces.txt文件

Monkey日志中ANR相关信息不够详细,当发现APP运行中存在ANR问题时,我们还需要使用adb pull命令从被测设备的/data/anr目录下导出名为traces.txt的对应log文件,一并交给开发人员排查问题。命令如下:

adb pull /data/anr/traces.txt D:\logs\logcat日志

3. adb logcat 查看Android系统日志

使用monkey进行测试时,还要注意logcat日志。这是Android系统日志,包含更详细的内容,可以帮助开发人员定位问题。如果要获取logcat日志,需要在执行monkey测试前开始记录logcat日志。完整步骤如下:

  1. adb logcat -c 清理现有日志

  2. adb logcat -v time > D:\logcat.log 开始记录日志

  3. 运行monkey程序  

    运行monkey程序结束后,可以把logcat日志文件logcat.log也提交给开发作为定位问题的参考。

4. 复现问题

如果需要复现问题,可以在日志中找到当时执行的Seed值,再构建monkey命令运行几次。构建命令时,seed值自定义,定义成与第一次运行相同。程序运行的初始界面也跟第一次运行相同。

后续回归问题也用同一个命令,seed值保持相同。 如果问题不易复现,需要多运行几次,或多运行一段时间。

5. 一次测试发现多个问题

monkey 执行时如果加了--ignore-crashes和--ignore-native-crashes,App出现崩溃退出后,还会自动重启并继续发送事件(否则monkey中断)。我们可以等monkey进程结束后,去日志里直接搜索CRASH。可能会看到多处问题。所以加这两个选项可以帮助我们在一次测试中发现多处崩溃问题。

monkey 执行时如果加了--ignore-timeouts,App出现无响应后还会继续发送事件;我们可以等monkey进程结束后,去日志里直接搜索ANR,可能会看到多处问题。所以加这个选项可以帮助我们在一次测试中发现多处无响应的问题。

上述三个选项都加,则可能在一次测试中发现多处CRASH或ANR问题。


以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

你可能感兴趣的:(软件测试,功能测试,软件测试,程序人生,测试工具,软件测试工程师)