crash出现后1.查看操作多少次出现
2.记录此次随机操作的seed值
3.将CRASH字样后面所有的打印发给开发
python中导入monkeyrunner模块
运行时不同于普通python,使用monkey runner **.py
monkeyrunner在安卓tools中,需加入环境变量才可以用
脚本文件必须在手机上面才能让Monkey执行。
脚本在手机上不必使用adb命令去执行脚本了(也就是命令行不必加adb shell)。
执行Monkey脚本的命令:
ANR结果析取步骤。
Crash结果析取步骤:
ignore-time:忽略超时事件。
ignore-crashes参数:让Monkey忽略崩溃和异常,继续测试。
不常用事件:
系统导航事件:
主要导航事件:
基本导航事件:
轨迹球事件:
触摸事件有很多种,可以通过参数设置某种触摸事件占总比例。
pct -touch:设置点击事件比例;
pct -motion:设置滑动事件比例。
比如要对系统计算器设置1000次事件,且全部都是点击事件,那么就可以输入:
adb shell monkey -v -p com.android.calculator2 --pct-touch 100 1000。
seed 参数:可以指定随机生成的数的 seed 值。因为压力测试每次的测试序列都是随机的,有了 seed 参数之后就可以保证每次的序列都一样。这样便于复现测试结果。
throttle:设置压力测试的间隔,单位为毫秒,格式为adb shell monkey -p {package} --throttle {间隔时间} {测试次数}
adb logcat:输出Android手机上面的日志;
adb logcat | findstr START:输出含有“START”标签的日志。此时,打开手机上的App会动态输出日志,其中cmp后面的名称即为报名;
adb shell monkey -p package 1000:对指定包名的App做压力测试。
获取当前连接的设备:adb devices.
压力测试可能出现的非正常结果:
Crash:崩溃。应用程序在使用过程中非正常退出;
ANR:应用无响应。
MonkeyScript是一组可以被Monkey识别的命令集合,并且可以完成重复且固定的操作,但是不支持截屏操作,因此需要使用借助另外的叫做MonkeyRunner的工具。
MonkeyRunner提供了一系列的API(Application Programming Interface,应用程序编程接口)通过MonkeyRunner中的APIs我们可以完成模拟事件以及截屏操作;
Monkey和MonkeyRunner的区别在于,Monkey是在adb shell中生成用户或系统的伪随机事件,MonkeyRunner则是通过API定义特定命令和事件来控制设备,就是MonkeyRunner把Monkey里面的事件进行了封装实现了一些函数;
MonkeyRunner APIs中包括三大API。第一个API是MonkeyRunner,主要是用来连接并操作设备或模拟器;第二个API是MonkeyDevice,用于提供应用,卸载应用并发送模拟事件、第三个API是MonkeyImage完成图像保存,以及对比操作。
MonkeyRunner主要的测试内容可分为三方面:多设备控制、功能测试、回归测试。
monkey是发送伪随机用户事件的工具,存在于android手机系统中;
在mac上借助Terminal,在windows使用cmd,通过连接线(USB线)和ADB(Android Debug Bridge即安卓调试桥,手机调试的入口)进行沟通。
开展压力测试的时机:
为什么要开展压力测试?
补充:
要想重复执行MonkeyRuner脚本,可以利用python多线程
脚本:
执行脚本:
截屏:
MonkeyRunner:
python写的脚本(MonkeyRunner脚本与用户之间的沟通,与设备无关):
monkeyrunner路径:
启动的app不是测试的app:
是app源码的问题,开发可以改
ps:安卓崩溃日志可以好几种方式导出
脚本(activity名需要拼接包名):