1.monkey测试
在保证基本功能正常的情况下,模拟用户对目标软件进行随机操作,一定时间后观察功能是否正常。Android系统自身带有monkey(java语言)程序,jar包在系统中存在的路径为system/framework,执行脚本存放路径为system/bin。
2.测试准备
1)设置中关闭锁屏密码
2)关闭亮度自动调节,休眠时间选择最大,打开“保持唤醒状态”
3)查看连接设备是否成功:adb devices
4)设置测试数据
5)如果连接多台设备:adb -s 设备序列号shell monkey... (指定设备测试)
3.执行命令
adb shell "monkey -p package --throttle 400 -s 100 --ignore-crashes --ignore-timeout --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes --kill-process-after-error 100000"
-p: 指定包名
--throttle: 事件之间的延迟时间(s)
--s: 伪随机数产生的seed值
--ignore-crashes: 设置此项,当程序发生crashes, monkey会继续向程序发送事件,直到计数全部完成。
--ignore-timeout: 设置此项,当程序发生超时时,monkey会继续向程序发送事件,直到计数全部完成。
--ignore-security-exceptions:设置此项,当程序发生许可错误时,monkeymonkey会继续向程序发送事件,直到计数全部完成。
--ignore-native-crashes: 设置此项后,当发生native崩溃和异常,monkey会继续向程序发送事件,直到计数全部完成。
--monitor-native-crashes: 用于指定监视并报告测试程序发生崩溃的本地代码(native层:本地框架)。
--kill-process-after-error: 设置此项,当发生错误时,终止monkey进程。
4.抓取查看日志
1)抓取日志到PC端:
adb pull log_path(androidlog) pc_path
2)初步分析日志:
查看ANR日志(无响应):在文件中搜索main关键字,定位原因;查看问题文件显示进程和时间,在log全日志中搜索相关关键字日志。
查看dropbox日志(各种app崩溃\anr\android死机\重启\模块崩溃等问题):查看是否有相关包名,如果有定位原因。
空指针:NullPointerException
内存泄露:GC(java的垃圾回收机制)
monkey本身问题
3)如果需要复现,输入相同的seed值,按照之前的命令重新跑monkey(使用相同的seed值再次运行monkey,会生成同样的事件序列)
5.强制终止monkey
1)查看monkey进程pid:adb shell "ps | grep monkey "
2)强制结束monkey:adb shell "kill -9 monkey_pid"