ADB命令
adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统,adb就派上用场啦!
Android程序的开发通常需要使用到一个编辑器,Android studio 。在Androidstudio中,自带了adb工具。所以Android开发们,能够直接去调试手机上的错误。
作为一名测试,实施人员,我们学习和使用adb命令的目的是为了,完成money自动化或者查询手机端本地日志。
搭建本地adb环境
1.adb安装程序放在电脑指定目录下
把发的压缩包解压即可
2.配置环境变量
在环境变量里面,path里面加上这个路径
可以输入adb version来检查
【用手机数据线将手机和电脑连接起来】
3.打开手机开发者模式(关于–点击版本号)
4.进入开发者模式后,打开usb调试
5.把adb相关的调试功能都设置为允许
记得授权(如果不弹出该窗口,就多插拔几次数据线,然后或者把usb的调试开关,开关几次,多试几次)
6.在命令行里输入 adb shell ,查看是否能正常运行
想要退出的话,输入exit
拓展面试题之什么是adb?
adb全称为Android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。是一个安卓端的手机调试终端。
1*. adb devices
查看当前连接的设备以及唯一设备号【deviceid】(连接计算机的Android设备或者模拟器)。
这个号码是全世界独一无二的,只属于你的这个手机,这个设备
2*.adb install
adb install <apk文件路径>
将指定的apk安装到设备上,安装的apk包会放在/data/app目录下。
几个参数:
-r 强制安装
-d(真机,多个设备中只有一个真机时适用)
-e(模拟器,多个设备中只有一个模拟器时适用)
-s(指定设备,后接序列号)
adb –s 44a188f9 install –r test.apk(其中44a188f9即序列号(设备号),通过adb devices可获取)
3*.adb uninstall
adb uninstall <apk包名>
adb uninstall –k <apk包名>
-k参数为卸载软件时保留配置和缓存文件
Ps:adb shell pm list packages 查看手机上所有的包名
4.adb reboot 重启android设备
5*.adb shell
通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。(因为Android本质内核就是linux)
如果只想执行一条shell命令,就可以采用:adb shell [linux命令]
在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。
6.adb shell su
前提手机已经root。获取adb shell的root权限。
使用su提权,用户命令提示符有$变成#,如果手机没有root,会提示su:permission denied。
7*.adb shell ps/top
查看当前终端中的进程信息,如pid等。
8.adb pull 和 adb push
adb pull <设备中的文件路径> <本地路径>:从模拟器或设备中复制文件到本地。
adb push <本地文件路径> <设备中的路径>:将本地文件或目录复制到设备或模拟器。
这里还涉及到一个权限的问题,在后续再作介绍。
9*.adb logcat
查看手机端本地的日志
可以通过过滤来查看指定信息,过滤指定字符串
adb logcat | grep MyApp
也可以通过后面跟优先级来仅查看指定错误日志优先级的日志
adb logcat *:W
//显示所有优先级大于等于“warning”的日志
//优先级是下面的字符,顺序是从低到高:
V — 明细 verbose(最低优先级) D — 调试 debug I — 信息 info
W — 警告 wam E — 错误 error F — 严重错误 fatal S — 无记载 silent
输出最近的10行日志 adb logcat -t 10
清空日志缓存 adb logcat -c
输出缓存日志 adb logcat -d
10*.adb shell monkey
跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android app的稳定性。
如下为测试腾讯新闻apk的一个简单实例:
说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。
-p <apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
-v 用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。个包。
–throttle <毫秒数> 指定用户操作(事件)间的时延。
–ignore-crashes 指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。
–ignore-timeouts 当应用程序发生ANR错误(无响应)时,Monkey依然会发送事件,直到事件计数完成。
第2个-s,用于指定伪随机数。没什么用
最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。
">输出测试结果到D:\monkeylog.txt
终止一个monkey命令可以用kill
kill用来中止一个进程。比如我们在跑monkey的时候,怎么强制关闭monkey呢,可以用kill <monkey进程PID>另开启一个cmd,找到monkey的pid号,然后杀掉即可。
Adb常见面试题
1.有用过adb工具吗?
说法一:之前在公司有使用过,但是用的不多,一些基础的都用过。像找crash日志的时候会用到。
2.都用过哪些adb命令?
比如adb shell ,adb logcat ,adb monkey等等
主要还是使用adb命令来看系统日志。不过后面我们开发为了方便就直接把crash日志写死到某个文件中了。这样后面找起来就简单多了。
3.adb之前在工作中都是怎么用的?
使用adb命令完成对Android手机的操作,比如下载卸载apk,或者查询devicedid,还有查询手机系统进程(adb shell ps ),杀死进程(adb shell kill xxxx)等等.
有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志,也会用adb命令来看。
比如://格式1:打印默认日志数据 adb logcat
//格式2:需要打印日志详细时间的简单数据 adb logcat -v time
//格式3:需要打印级别为Error的信息 adb logcat *:E
//格式4:需要打印时间和级别是Error的信息 adb logcat -v time *:E
//格式5:将日志保存到电脑固定的位置,比如D:\log.txt adb logcat -v time >D:\log.txt
4.有跑过monkey命令?有写过monkey脚本吗?Monkey有什么用?
之前有做过monkey自动化的测试,简单做过一些。我们之前app在发版本前都会进行一轮monkey测试,通过Monkey程序模拟用户触摸屏幕、滑动、按键等操作来对设备上的程序进行稳定性测试。
常见的命令比如:
Adb shell monkey -p 包名 -throttle间隔时间 -运行次数 -保存结果
大概是这样的
Monkey还能测试内存泄露,能够看一下测试的app会不会出现内存持续增长,不过还需要配合内存检测工具来监控内存,之前公司有见我们组长用过。
5.Monkey测试的优点和缺点?
优点:
1、使用简单
2、节省了重复性操作的时间
3、随机输入可能会发现一些平常意想不到的缺陷。
Monkey虽然可以根据一个指定的命令脚本发送按键消息,但其不支持条件判断,也不支持读取待测界面的信息来执行验证操作。
缺点:
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件流数据流是随机的,不能进行自定义。
6.什么是手机Monkey测试?如何使用Monkey测试?
Monkey是AndroidSDK提供的一个命令行工具,可以简单,方便地运行在任何版本的Android模拟器和实体设备上。Monkey会发送随机的用户事件流,适合对app做压力测试。主要目的就是为了测试app是否会Crash(闪退/崩溃)