adb命令与Monkey测试基础

前言

        本文章介绍adb常用命令和Monkey测试基础,供分享学习参考。

安装adb工具包

网上下载一个scrcpy投屏工具,随便放到一个路径下,路径不要有中文和空格。

86ba1ff9e93b48788bdfa8edc45b7213.png

内部文件如下图。

d583e973d3474335904260c6fc2e8f99.png

把该路径在系统变量Path中新建个环境变量,例如D:\scrcpy-win64-v1.24

e1759f383da9464aaa1ae723f82e9a10.png

在CMD中输入adb,出现如下图,说明设置成功。

40dd57c7cb484bc8b27ce7c151c9cd8e.png

手机连接电脑

手机打开开发者模式,打开调试,然后用usb线与电脑连接,手机选择【传输文件】选项连接。

adb常用命令

投屏

scrcpy -m 1080 -b 3M --shortcut-mod=lctrl

查看设备列表

adb devices

如果电脑有连接手机,就会在list下面显示设备序列号。如有连接了多台,就会显示多台序列号。

ba7bcf7ae0c94cd5902c5874ad513288.png

指定连接

adb connect 序列号

例如adb connect a4983377,会去连接序列号为a4983377的设备。

如果要与电脑本地安装的夜神模拟器连接,则是connect 127.0.0.1:62001(如果开了2个夜神模拟器,则另外一个是62005)

8d43f34e047a4baeb1b4ba0926c3b8d6.png

杀死/启动adb服务

adb kill-server

adb start-server

获取root权限

adb root

进入shell命令

adb shell

shell常用命令

ls、cd、exit等

获取system分区

adb remount

查看设备里所有应用程序的包名

adb shell pm list packages

只想看到安装的第三方应用程序包名

adb shell pm list packages -3

1b8f685a711948d1a28b7a12b493e3d5.png

只想看到系统的程序包名

adb shell pm list packages -s

过滤,在命令后加 | findstr "关键字",

比如,adb shell pm list packages -3 | findstr "tencent"

68c0f217108f4ba2a3551d17ba0afe9f.png

查看进程

adb shell ps

通常与过滤一起使用,比如adb shell ps | findstr "monkey" 

安装应用程序

adb install 路径+XXX.apk,如下图

2076a696e8b94ba9a64ebb14a281a4c2.png

卸载应用程序

adb uninstall 包名,(包名可通过adb shell pm list packages命令查看到)

如下图

96fdebc32ecc4631bf9b952ef01dfb66.png

从本地上传文件到远程设备处

adb push 本地路径+文件名 远程路径,如下图

5133f4ab660246ec9c443c83428fd881.png

从远程设备处下载文件到本地

adb pull 远程路径+文件名 本地路径,如下图

1f6e66dc57ec47ac9137ffa3aac9f3dd.png

截图

adb shell screencap -p 路径+文件名,如下图

40d180d41a134b9dbd8a675b769e6d13.png

实时日志输出

adb logcat

停止则是Ctrl+C

把10分钟左右之前的日志信息保存到本地

adb bugreport >路径+文件名,如下图

e84112487bbd45c6baf3cef3d8022e92.png

清屏(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、日志分析

edacb825c28e4d45bb3a9869627a58f4.png

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再输入命令了。

猜你喜欢

转载自blog.csdn.net/v781423070/article/details/130463722