APP--Monkey压⼒测试
adb
adb是安卓调试桥是⼀种功能多样的命令⾏⼯具,可以与设备进⾏通话
monkey压⼒测试
原理:
通过向系统发送伪随机的⽤户事件流(如按键输⼊、触摸屏输⼊、滑动Trackball、⼿势输⼊等操作),来对设备上的程序进⾏压⼒测试,检测程序多久的时间会发⽣异常。
⼀般在功能测试完成后进⾏
Monkey测试⽤于发现App测试中的问题(如ANR(Application Not Responding),响应延时以及CRASH,⾮正常退出)
Monkey还对测试中的系统进⾏监测,对下列三种情况进⾏特殊处理(⾃动停⽌):
(1)如果限定了Monkey运⾏在⼀个或⼏个特定的包上,那么它会监测试图转到其它包的操作,并对其进⾏
阻⽌;
(2)如果应⽤程序崩溃或接收到任何失控异常,Monkey将停⽌并报错;
(3)如果应⽤程序产⽣了应⽤程序不响应(application not responding)的错误,Monkey将会停⽌并报错;
monkey命令常⽤的选项主要有四个,⼀个是-v 、-s、--throtlle、-p,-v的话⽤于详细显⽰命令执⾏过程
  -p:获取包名(不指定,随机)
  -v:查⽇志  v越多越详细⼀般来说展⽰在cmd⾥⾯(也可以⽣成log报告来查看)
  -throttle:延时器相当于jmeter的思考时间,以毫秒为单位(mm)
  -s:指定mokey命令执⾏的序列号,主要作⽤就是处理复现问题
seed:意思是把事件流做记录,来进⾏回归测试
下次跑的时候加 -s seed
当我们程序模拟100次随机⽤户事件
事件的百分⽐(Event percentages):如果没有设置,就会随机分配
调整触摸事件的百分⽐
例如:
adb shell monkey -p com.sf.DarkCalculator --pct-touch 10 -v 1000
Event percentages(事件百分⽐):
网页app
0:点击事件百分⽐,即参数--pct-touch
1:滑动事件百分⽐,即参数--pct-motion
2:缩放事件百分⽐,即参数--pct-pinchzoom
3:轨迹球事件百分⽐,即参数--pct-trackball
4:屏幕旋转事件百分⽐,即参数--pct-rotation
5:基本导航事件百分⽐,即参数--pct-nav
6:主要导航事件百分⽐,即参数--pct-majornav
7:系统按键事件百分⽐,即参数--pct-syskeys
8:Activity启动事件百分⽐,即参数--pct-appswitch
9:键盘唤出隐藏事件百分⽐,即参数--pct-flip
10:其他事件百分⽐,即参数--pct-anyevent
monkey的调式参数,⽐较常⽤的就是两个调式参数⼀个是:忽略异常退出(--ignore-crashes)、忽略响应延迟(--ignore-timeouts)
monkey的参考命令
adb shell monkey -t.XXX(替换包名) --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes  -v -v -v 1000000>d:\monkeyScreenLog.log
例⼦:
adb shell monkey -p com.android.browser  --ignore-crashes --ignore-timeouts --ignore-security-excepti
ons --ignore-native-crashes  -v -v 100000>e:\monkeyScreenLog.log
我们压测10万个⽹页请求可能会碰到⼀些问题
例如 carsh(崩溃,⽹页⽆法打开) ANR(⽆响应,或者响应很慢)
⼀般来说app响应的时间在⼀秒内
可以通过上⼀版本来进⾏评估
也可以参考同⾏来做竞品
或者根据需求或者领导要求
安卓启动时间测试
什么是启动的时间:
从点击应⽤的启动图标开始创建出⼀个新的进程直到我们看到了界⾯的第⼀帧,这段时间就是应⽤的启动时间。
我们要测量的也就是这段时间,测量这段时间可以通过adb shell命令的⽅式进⾏测量,这种⽅法测量的最为精确
app冷启动:当应⽤启动时,后台没有该应⽤的进程,这时系统会重新创建⼀个新的进程分配给该应⽤,这个启动⽅式就叫做冷启动(后台不存在该应⽤进程)。
app热启动:当应⽤已经被打开,但是被按下返回键、Home键等按键时回到桌⾯或者是其他程序的时候,再重新打开该app时,这个⽅式叫做热启动(后台已经存在该应⽤进程)。
app⾸次启动: ⾸次启动应⽤时会有很多的数据或配置⽂件的初始化⼯作,因此其启动时间远远⼤于冷启动的启动时间,这样的话app的启动时间也就变成了从3个指标去衡量了
获取包名的⽅法:
adb shell pm list package
(adb shell pm list package -3  (第三⽅))
adb logcat | findstr START
获取包名
通过包名在模拟器上执⾏命令
举例:adb shell am start -W [packageName]/[packageName.MainActivity]
执⾏成功后将返回三个测量到的时间:
ThisTime:⼀般和TotalTime时间⼀样,除⾮在应⽤启动时开了⼀个透明的Activity预先处理⼀些事再显⽰出主Activity,这样将
⽐TotalTime⼩。
TotalTime:应⽤的启动时间,包括创建进程+Application初始化+Activity初始化到界⾯显⽰。
WaitTime:⼀般⽐TotalTime⼤点,包括系统影响的耗时。脚本取得是TotalTime
ctrl +c:退出编辑界⾯
adb shell am force-stop com.sf.DarkCalculator :关闭app
⼀般来说获取启动的时间,要多次进⾏,好⽐测五次,取其中的平均值
电量测试
需注意,⼿机通过USB连接电脑,⼿机会处于充电状态,必须保证⼿机为⾮充电状态
切换⾮充电状态
命令:adb shell dumpsys battery set status 1
其中 status 1 为⾮充电状态,status 2 为充电状态即
切换为充电状态
命令:adb shell dumpsys battery set status 2
获取电量
命令:adb shell dumpsys battery

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。