Android测试-monkey

好久以前搞过monkey,最近看了一个monkey+日志录制的一个分享,准备自己也搞一下。

monkey的doc文档:

https://developer.android.google.cn/studio/test/monkey.html

adb查看包名/Activity名

adb shell "logcat | grep START" 
adb shell dumpsys activity | find “mFocusedActivity”
adb shell pm list packages
adb shell dumpsys window | findstr mCurrentFocus

aapt也可以查看,参考 https://www.cnblogs.com/lynn-li/p/5885001.html

命令行中切换到aapt.exe目录,执行命令:aapt dump badging F:\QQyinle_439.apk ,注意,apk路径中一定不能有空格。

把日志存储在特定的文件中,在文件中通过搜索关键字,得到包名及活动名,这里我把结果输出到F盘的log.txt中:

aapt dump badging F:\QQyinle_439.apk > F:\log.txt

    到此,已经获取了app的package名和activity。下面,我们真正的启动app。在原有cmd运行窗口,输入命令:

device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")

 

基本命令介绍:

#-v 事件数量 -v个数越多,时间日志越详细,最多3个
# adb logcat 获取当前应用package名称

#adb shell monkey -v 100
# -f 执行对应的monkey脚本
#adb shell monkey -f /path
# --throttle time
#adb shell monkey --throttle 100
#触摸事件百分比 --ptc-touch 
#adb shell monkey --ptc-touch 30
#--ptc-motion 动作down+up --ptc-trackball 随机移动+点击
#--ptc-nav 导航事件 up/down/left/right --ptc-majornav 主要导航事件 ,home back menu
#--ptc-syskeys 系统按键 home/back/call/endCall/volume
#--ptc-appswitch 启动应用事件 startActivity()
#--ptc-anyevent 其他类型事件


#-p 限定在包中,可选多个包,每个包名前需要加-p ,所有包属于一个app,否则只在第一个app里面的包里执行
#adb shell monkey -p com.patech.testApp 1000 -p com.patech.zhizhitest 1000 --throttle 1000 --ptc-trackball 100

#-c 一个或多个main-category参数,即android的activity的类型,不指定则选择Intent.category_Launcher和Intent.category_monkey
#--hprof 生成报告
#adb shell monkey --hprof 100
#--ignore-crashes 无视crash
#--ignore-timeouts 无视超时
#--ignore-security-exceptionis 无视权限错误
#--monitor-native-crashes 监视并报告Android系统native code崩溃事件

  

写了一个bat脚本来执行monkey并记录各种日志

@echo off
rem edit by zhzh.yin
rem 设置放置测试脚本的目录,测试package名称,操作事件总数,思考事件
set FILE_PATH=C:\Users\user\Desktop\testReport
set PACKAGE_NAME=com.android.calendar
set OPERATION_NUM=1000
set THINK_TIME=1000
set ADB_PATH=D:\android_sdk\platform-tools
set ADB_DIR=D:
rem 设置时间百分比,总和需<100,当前设置为50%触摸事件,20%动作事件(down and up),20%轨迹球事件(随机移动+点击)
set TOUCH_PER=50
set MOTHION_PER=20
set TRACKBALL_PER=20
cd %ADB_DIR%
cd %ADB_PATH%
adb devices
adb logcat -c -b main -b events -b radio -b system
rem --ptc-nav 导航事件 up/down/left/right
rem --ptc-majornav 主要导航事件 ,home back menu
rem --ptc-syskeys 系统按键 home/back/call/endCall/volume
rem --ptc-appswitch 启动应用事件
rem --ptc-anyevent 其他类型事件
set NOW_TIME_HH=%time:~0,2%
if "%NOW_TIME_HH%" lss "10" (set NOW_TIME_HH=0%time:~1,1%) else (set NOW_TIME_HH=%time:~0,2%)
for /f %%i in ('powershell -c "Get-Date -uformat '%%Y%%m%%d'"') do (
set "Today=%%i"
)
set NOW_TIME=%Today%%NOW_TIME_HH%%time:~3,2%%time:~6,2%
cd %FILE_PATH%
echo create the folder
rem mkdir %NOW_TIME%
md %FILE_PATH%\%NOW_TIME%
echo the name of folder is %NOW_TIME%
cd %ADB_DIR%
cd %ADB_PATH%
adb shell monkey -p %PACKAGE_NAME% -v -v %OPERATION_NUM% --throttle %THINK_TIME% --ptc-touch %TOUCH_PER% --ptc-motion %MOTHION_PER% --ptc-trackball %TRACKBALL_PER% 1>%FILE_PATH%\%NOW_TIME%\monkey_standard.txt 2>%FILE_PATH%\%NOW_TIME%\monkey_error.txt
echo the monkey log is saved in %FILE_PATH%\%NOW_TIME%,and the fileName is begin with monkey
adb logcat -v time *:E -d >%FILE_PATH%\%NOW_TIME%\logcat.txt
echo the logcat log is saved in %FILE_PATH%\%NOW_TIME%,and the fileName is begin with logcat
pause

  

posted @ 2019-08-08 16:35  头鹰在学习  阅读(212)  评论(0编辑  收藏  举报