ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Adb与monkey命令学习总结

2020-12-19 23:33:54  阅读:175  来源: 互联网

标签:总结 包名 shell monkey -- 指定 adb Adb


主要内容

adb构成和工作原理

全称:Android Debug Bridge 就是起到调试桥的作用。顾名思义,adb就是一个debug工具。
adb构成

  1. client端:在电脑上,负责发送adb命令
  2. daemon守护进程:在手机上,负责接收和执行adb命令
  3. server端:在电脑上,负责管理client和daemon之间的通信

adb工作原理

  1. client端将命令发送给server端
  2. server端将命令发送给daemon端
  3. daemon端进行执行
  4. 将执行结果,返回给server端
  5. server端将结果再返回给client端

adb的作用

借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

adb常用命令

查看当前连接设备

必要前提:设备端上版本号多次点击打开开发者选项–>打开USB调试

adb devices

没有设备信息时可以尝试手动连接(模拟器)

adb connect 127.0.0.1:62001    本地夜神模拟器为例

端口号被占用或连接出错时尝试使用一下方法解决
在这里插入图片描述

安装apk文件

adb install <apk文件路径>   将指定的apk安装到安装到设备上。如:adb install F:\Desktop\酷安.apk
adb install -r xxx.apk     强制安装或覆盖安装
adb –s 设备号 install xxx.apk    连接多个设备时,指定设备号安装

卸载APP

adb uninstall <apk包名>      例如:adb uninstall com.coolapk.market
adb uninstall -k <apk包名>    -k参数为卸载软件时保留配置和缓存文件

获取包名和界面名

  1. 包名(package):决定程序的唯一性
  2. 界面名(activity):可以理解为,一个界面名对应着一个界面
    步骤:打开需要测试的应用程序,输入adb命令

命令格式:Mac/Linux:

adb shell dumpsys window windows | grep mFocusedApp

Windows:

adb shell dumpsys window windows | findstr mFocusedApp

adb shell am/pm

am全称为activity manager,可使用am命令模拟各种系统的行为,如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。

adb shell am start -W包名/界面名   获取APP启动时间(ms) 

This time–>activity
Total time–>Application+activity
wait time–>系统+Application+activity
启动时间看Total time,Application一般不会有

adb shell am start  <apk包名>/<activityName>    启动一个app。
adb shell am force-stop 包名     强制关闭应用程序
adb shell am start -n 包名/界面名 -S      启动APP,-S是启动前先杀掉这个进程

pm全称为package manager,利用pm命令可模拟android行为或查询设备上的应用等。

adb shell pm list packages		获取所有应有的包名
adb shell pm list packages -s   获取系统应用的包名
adb shell pm list packages -3   获取第三方应用的包名
adb shell pm clear 包名      清除应用程序缓存数据

adb文件传输

adb push 电脑的文件路径 手机的文件夹路径    从电脑发送文件到手机
adb pull 手机的文件路径 电脑的文件夹路径     从手机拉取文件到电脑

其他常用命令

adb kill-server   停止服务器
adb start-server    启动服务器
adb shell     进入到安卓手机内部的Linux系统命令行中
adb logcat    获取手机日志
adb shell ps/top    查看当前终端中的进程信息,如pid等
adb shell screencap /sdcard/screen.png    可以使用screencap命令来进行手机屏幕截图
adb shell screenrecord /sdcard/demo.mp4    录制屏幕视频

monkey常用命令

跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android app的稳定性。
注意:日志必须写在倒数第二,事件数写在倒数第一,其他命令不分顺序

事件数

adb shell monkey 100    100为事件次数

频率 –throttle(毫秒),延时操作

adb shell monkey --throttle 1000 50   1000为事件频率,单位ms;50为事件次数
使用频率的好处:
	1:尽可能模拟用户的操作
	2:通过频率来设置不同的压力
	3:通过频率和事件数量来控制运行时间
		monkey命令模拟用户操作,持续执行1分钟。大部分用户的执行频率是0.5s,1s
			1分钟=60s=60000ms
			1000ms*次数=60000ms   次数=60
			所得命令为:adb shell monkey --throttle 1000 60

指定执行的应用 –p

adb shell monkey -p com.wuba --throttle 1000 50   -p指定一个包,1000为频率 100为事件次数
adb shell monkey -p com.wuba -p com.handsgo.jiakao.android 200  -p 指定多个包,对每个包执行200次事件

日志 -v

-v 用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。

adb shell monkey -p com.wuba -v -v -v 100 >D:\app\wuba.log    将日志信息保存到指定位置

日志中的日志信息:
ANR:程序无响应
CRASH:程序崩溃或异常
Exception:异常

调试选项

--ignore-crashes		忽略在应用程序出现crash时导致的monkey停止
--ignore-timeouts		忽略在应用程序出现ANR问题时导致monkey停止
--ignore-security-exceptions	忽略应用程序发生许可错误时导致monkey停止
--kill-process-after-error	当应用程序发生错误时,应用程序停止运行并保持在当前状态

完整应用monkey命令进行稳定性测试

adb –s 44a188f9 shell monkey -p com.tal.kaoyan –s 101 --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 500 >d:\kaoyan.log

说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。
-p <apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多个包。
第2个-s,用于指定伪随机数生成器的seed值,可以自己指定。如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
–throttle <毫秒数> 指定用户操作(事件)间的时延。
–ignore-crashes 指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。
–ignore-timeouts 当应用程序发生ANR错误时,Monkey依然会发送事件,直到事件计数完成。
最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。
(> 将日志信息保存到d:\ kaoyan.log

标签:总结,包名,shell,monkey,--,指定,adb,Adb
来源: https://blog.csdn.net/weixin_44795214/article/details/111411173

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有