Monkey 测试日志讲解 (二)


monkey.txt日志详解

  • 运行命令:adb shell monkey -p 包名1 -v -v -v 10
  • log详解:先贴张大图,了解下monkey的log输出内容:  

下面就是我贴出的详细LOG:(表情代替注释符号,以免跟日志搞混)

 伪随机种子数与事件总数
:Monkey: seed=1519697645236 count=10

 允许测试包
:AllowPackage: 包名1

 Category包含的LAUNCHER
:IncludeCategory: android.intent.category.LAUNCHER

 Category包含的MONKEY 
:IncludeCategory: android.intent.category.MONKEY

 查询允许包的activity 结果列表
// Selecting main activities from category android.intent.category.LAUNCHER

 这些都不是指定包的activity

//   - NOT USING main activity com.android.browser.BrowserActivity (from package com.android.browser)  
//   - NOT USING main activity com.android.calendar.homepage.AllInOneActivity (from package com.android.calendar)
//   - NOT USING main activity com.android.camera.Camera (from package com.android.camera)

....  中间忽略,从这也可以看出你手机上都安装了哪些应用
 这个就是我们指定的包的activity 
// + Using main activity 包名1.ui.portal.WelcomeActivity (from package 包名1)

//   Selecting main activities from category android.intent.category.MONKEY

 种子为1519697645236
// Seeded: 1519697645236

 事件百分比

// Event percentages: 
//   0: 15.0%
//   1: 10.0%
//   2: 2.0%
//   3: 15.0%
//   4: -0.0%
//   5: -0.0%
//   6: 25.0%
//   7: 15.0%
//   8: 2.0%
//   9: 2.0%
//   10: 1.0%
//   11: 13.0%

 表示跳转到com.crazyhornets.MyHokageAndroidZSY包中的com.crazyhornets.MyHokage.MyHokageActivity里

:Switch:  
#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=cn.yaomaitong.app.daily/cn.yaomaitong.app.ui.portal.WelcomeActivity;end

 允许此Intent跳转

// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=cn.yaomaitong.app.daily/cn.yaomaitong.app.ui.portal.WelcomeActivity } in package cn.yaomaitong.app.daily
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=cn.yaomaitong.app.daily/cn.yaomaitong.app.ui.portal.WelcomeActivity } in package cn.yaomaitong.app.daily

 以下就是事件间的延迟和发送的各种事件
 --pct-nav事件

Sleeping for 0 milliseconds    
:Sending Key (ACTION_DOWN): 82    // KEYCODE_MENU
:Sending Key (ACTION_UP): 82    // KEYCODE_MENU
Sleeping for 0 milliseconds
:Switch: 
#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=cn.yaomaitong.app.daily/cn.yaomaitong.app.ui.portal.WelcomeActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=cn.yaomaitong.app.daily/cn.yaomaitong.app.ui.portal.WelcomeActivity } in package cn.yaomaitong.app.daily
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=cn.yaomaitong.app.daily/cn.yaomaitong.app.ui.portal.WelcomeActivity } in package cn.yaomaitong.app.daily 

 --pct-touch事件

Sleeping for 0 milliseconds  
:Sending Touch (ACTION_DOWN): 0:(532.0,1392.0)
:Sending Touch (ACTION_UP): 0:(542.04724,1391.5958) 

 --pct-motion事件

Sleeping for 0 milliseconds    
:Sending Touch (ACTION_DOWN): 0:(838.0,113.0)
:Sending Touch (ACTION_UP): 0:(852.82526,101.77225)

 --pct-trackball事件

Sleeping for 0 milliseconds     
:Sending Trackball (ACTION_MOVE): 0:(1.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-3.0)

 --pct-rotation屏幕旋转百分比 ####隐藏事件

: Sending rotation degree=0, persist=true
: Sending rotation degree=1, persist=false: 
: Sending rotation degree=2, persist=true
: Sending rotation degree=3, persist=false

 注入事件10
Events injected: 10

 发送屏幕翻转 度=0,存留=假
:Sending rotation degree=0, persist=false

 丢弃:键=0,指针=0,轨迹球=0,键盘轻弹=0,屏幕翻转=0
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0

 网络状态:占用时间=42ms(手机0ms,wifi0ms,未连接42ms)
## Network stats: elapsed time=42ms (0ms mobile, 0ms wifi, 42ms not connected)

 Monkey测试完成

// Monkey finished

  • 异常结果:
    • ANR输出LOG(暂时没相关例子,贴别人的图):  
    • CRASH输出LOG:
// CRASH: cn.包名1 (pid 3165)
// Short Msg: java.lang.IllegalStateException
// Long Msg: java.lang.IllegalStateException: Fragment SingleChatFragment{366281} not attached to Activity
// Build Label: Xiaomi/sagit/sagit:7.1.1/NMF26X/V9.2.4.0.NCACNEK:user/release-keys
// Build Changelist: V9.2.4.0.NCACNEK
// Build Time: 1516183841000
// java.lang.IllegalStateException: Fragment SingleChatFragment{366281} not attached to Activity
//  at android.support.v4.app.Fragment.getResources(Fragment.java:646)
//  at cn.yaomaitong.app.ui.message.fragment.SingleChatFragment$13$1.run(SingleChatFragment.java:586)
//  at android.os.Handler.handleCallback(Handler.java:754)
//  at android.os.Handler.dispatchMessage(Handler.java:95)
//  at android.os.Looper.loop(Looper.java:163)
//  at android.app.ActivityThread.main(ActivityThread.java:6365)
//  at java.lang.reflect.Method.invoke(Native Method)
//  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
//  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791)

快速从monkey.txt日志中看问题

测试结果初步判断

  1. monkey执行时未加--ignore-crashes --ignore-crashes参数,就先浏览日志中Events injected: 值,查看当前已执行的次数,就知道有无bug
  2. 程序无响应的问题:在日志中搜索 “ANR”
  3. 崩溃问题:在日志中搜索 “Exception” ,在这里顺便提一下常见的Java异常:
    1. 算术异常类:ArithmeticExecption
    2. 空指针异常类:NullPointerException
    3. 类型强制转换异常:ClassCastException
    4. 数组负下标异常:NegativeArrayException
    5. 数组下标越界异常:ArrayIndexOutOfBoundsException
    6. 违背安全原则异常:SecturityException
    7. 文件已结束异常:EOFException
    8. 文件未找到异常:FileNotFoundException
    9. 字符串转换为数字异常:NumberFormatException
    10. 操作数据库异常:SQLException
    11. 输入输出异常:IOException
    12. 违法访问错误:IllegalAccessError
    13. 内存不足错误:OutOfMemoryError
    14. 堆栈溢出错误:StackOverflowError 15.其他,请参考:

找出问题后的操作步骤:

  1. 找到是monkey里面的哪个地方出错
  2. 查看Monkey里面出错前的一些事件动作,并手动执行该动作
  3. 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。

相关