前言
本文章介绍adb常用命令和Monkey测试基础,供分享学习参考。
安装adb工具包
网上下载一个scrcpy投屏工具,随便放到一个路径下,路径不要有中文和空格。
内部文件如下图。
把该路径在系统变量Path中新建个环境变量,例如D:\scrcpy-win64-v1.24
在CMD中输入adb,出现如下图,说明设置成功。
手机连接电脑
手机打开开发者模式,打开调试,然后用usb线与电脑连接,手机选择【传输文件】选项连接。
adb常用命令
投屏
scrcpy -m 1080 -b 3M --shortcut-mod=lctrl
查看设备列表
adb devices
如果电脑有连接手机,就会在list下面显示设备序列号。如有连接了多台,就会显示多台序列号。
指定连接
adb connect 序列号
例如adb connect a4983377,会去连接序列号为a4983377的设备。
如果要与电脑本地安装的夜神模拟器连接,则是connect 127.0.0.1:62001(如果开了2个夜神模拟器,则另外一个是62005)
杀死/启动adb服务
adb kill-server
adb start-server
获取root权限
adb root
进入shell命令
adb shell
shell常用命令
ls、cd、exit等
获取system分区
adb remount
获取Android系统版本
adb shell getprop ro.build.version.release
查看设备里所有应用程序的包名
adb shell pm list packages
只想看到安装的第三方应用程序包名
adb shell pm list packages -3
只想看到系统的程序包名
adb shell pm list packages -s
过滤,在命令后加 | findstr "关键字",
比如,adb shell pm list packages -3 | findstr "tencent"
查看进程
adb shell ps
通常与过滤一起使用,比如adb shell ps | findstr "monkey"
安装应用程序
adb install 路径+XXX.apk,如下图
卸载应用程序
adb uninstall 包名,(包名可通过adb shell pm list packages命令查看到)
如下图
从本地上传文件到远程设备处
adb push 本地路径+文件名 远程路径,如下图
从远程设备处下载文件到本地
adb pull 远程路径+文件名 本地路径,如下图
截图
adb shell screencap -p 路径+文件名,如下图
实时日志输出
adb logcat
停止则是Ctrl+C
把10分钟左右之前的日志信息保存到本地
adb bugreport >路径+文件名,如下图
清屏(cmd窗口)
cls
重启设备
adb reboot
查看monkey命令帮助
adb shell monkey
Monkey测试
Monkey测试介绍
模仿猴子一样对手机进行乱点操作,测试在长时间随意地使用手机软件的时候能否稳定使用。
关键字:长时间、随机、稳定。
对比人工的优势:
人工点击测试无法做到连续几个小时甚至7天24小时长时间一直点点点,而Monkey测试就可以长时间运行。
特点:
1、模拟用户操作,比如点击、滑动、返回、按键操作等。
2、事件流是随机的,不能指定操作顺序,比如不能先点击再滑动这样。
3、可以设定操作频率和次数,比如间隔多久点一次,总共点几次。
4、生成操作记录以便后续回顾,帮助发现更多问题。
测试结束后需要关注的指标和结果:
测试结束后,需要关注的指标有异常次数、异常出现的频率等,分析结果和统计,与之前的测试结果进行对比。一般有纵向对比和横向对比。
纵向对比:与前一次的数据进行对比。
横向对比:如果是第1次测试,没有前一次的数据,则可以与竞品软件进行对比。
Monkey测试原理
通过cmd发送adb命令→传到设备上→生成Monkey进程→进程再去解析→模拟用户操作。
Monkey测试流程
1、连接设备
2、确定测试对象。
3、设计脚本。
a)执行频率,比如1秒点击1次。
b)执行事件次数,即操作次数,比如执行操作300次。
c)执行对象。
d)执行过程中日志记录。
4、执行脚本。
5、执行结束后,分析日志以及提交bug等。
Monkey测试实操
1、电脑连接设备
通过adb devices命令查看是否连接成功。
2、确定测试对象
比如测试腾讯新闻app,通过adb shell pm list packages -3命令知道包名,比如腾讯新闻的包名是com.tencent.news。
3、设计脚本
a)设定脚本的执行频率,比如1秒。
b)设定执行事件次数,比如300次,即执行操作300次。
c)执行对象,比如com.tencent.news。
d)日志要记录在电脑本地,比如放在D:\log路径下。
4、输入monkey命令执行
monkey命令格式:adb shell monkey {参数}。
常用参数:
-p {程序包名}:指定执行的程序,要多开就再打一个-p。
--throttle {毫秒}:指定用户操作(即事件)间的延时,每个操作结束后的间隔时间,单位毫秒。
-s {数字}:表示伪随机数生成的seed值,如果seed值相同,则两次monkey所产生的事件序列是一样的。
Monkey测试1:adb shell monkey -p com.tencent.news –s 10 300
Monkey测试2:adb shell monkey -p com.tencent.news –s 10 300
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列是伪随机的。seed值可以在日志中找到。
count值:指定事件次数,数字,必填项。
>路径:指定日志保存的路径,比如>D:\log\53.txt
-v:指定反馈信息的级别(信息级别就是日志的详细程度),总共分3个级别,-v、-v-v和-v-v-v。
Level 0 : -v:缺省值,仅提供启动提示、测试完成和最终结果等少量信息。
Level 1 : -v-v:提供较为详细的日志,包括每个发送到Activity的事件信息。
Level 2 : -v-v-v:最详细的日志,包括了测试中选中/未选中的Activity信息。
--ignore-crashes:忽略崩溃。
--ignore-timeouts:忽略超时。
--ignore-security-exceptions:忽略安全异常。
例子:adb shell monkey -p com.tencent.news -v-v-v --throttle 1000 300 >D:\log\53.txt
测试com.tencent.news这个app(腾讯新闻),间隔1000毫秒(1秒),执行300次事件,输出详细日志到D:\log\53.txt。
(如果打了命令没有反应,日志中报错No activities found to run,monkey aborted,请检查-p后面的包名有没有打错,还有就是在cmd中要手动输入命令,不要复制)
查看monkey进程:
adb shell ps | findstr "monkey"
终止操作:
adb shell kill {进程号},来终止,(Ctrl+C没用),或者adb reboot直接重启设备来终止。
5、日志分析
seed=1683352957631 count=600:表示随机seed值和执行次数。
Event percentages:伪随机事件百分比
0:–pct-touch:触摸事件百分比,即一个在屏幕单一位置的按下-抬起事件。
1:–pct-motion:手势事件百分比,即一个滑动操作,但是是直线的,不能拐弯。
2:–pct-pinchzoom:缩放事件百分比,即智能机上的放大缩小手势操作。
3:–pct-trackball:轨迹球事件百分比,(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)。
4:–pct-rotation:屏幕旋转事件百分比,手机屏幕在横屏竖屏切换。
5:–pct-nav:基本导航事件百分比,(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有。
6:–pct-majornav:主要导航事件百分比,键盘的中间键、回退键、菜单键等。
7:–pct-syskeys:系统按钮事件百分比,点击Home键、返回键、音量调节键等。
8:–pct-appswitch:启动activity事件百分比,在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。
9:–pct-flip:键盘轻弹事件百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回。
10:–pct-anyevent:其他事件百分比,包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。
日志末尾:在log的最后,会打印出当前执行事件的次数和所花费的时间。
详细分析:
1、看Monkey日志(注意第一个switch以及异常信息等) 。
2、搜索关键字ANR:检查有无程序无响应问题。
3、搜索关键字Exception或crash:检查有无崩溃问题。如果出现空指针NullPointerException,一定有bug。
6、小技巧
在电脑上新建一个txt文本,然后把monkey命令复制到txt文本中,再把后缀名改为bat,即可变成一个可执行文件,这样的话想运行直接双击就行,不需要打开cmd再输入命令了。