安卓模拟器的使用和adb工具的使用-mac
####
夜神有windows版,也有mac版
我用的mac版,直接官网下载mac版安装
但是夜神模拟器在我的mac安装一直是卡在99%,所以使用了网易mumu模拟器
###
###
现在不管是用使用代码的方式,往手机传输数据,
还是云测平台,比如阿里云测,华为云测,
还是手机群控,兼容性测试,
还是说appium工具,
都是里面部分使用了adb的命令
##
###
什么是adb
ADB,全称为Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具。
只能操作安卓手机
###
###
adb的工作原理:
首先是adb client 和adb server,都是安装在pc端的,守护进程是在app端的,
然后pc的adb client 输入命令,adbserver会接收到这个命令,然后转发给app端,这就是原理,
###
adb环境安装:
去安装安卓sdk,并且配置环境变量,这里不做介绍
###
adb连接设备查看状态:
可以连接真机,或者模拟器,都行,
mac连接的时候需要重启一下服务,然后再去连接,就可以了,
mac不需要安装手机驱动,
通过adb devices,这个命令,
未授权,可能连接真机会有这个问题,
adb get-state,也可以查看连接状态,
###
adb命令格式,和安装卸载app
设备是一个可选项,可以不写,
##
注意这个命令的,apk包,是在pc上面的路径,
具体下载apk,可以去腾讯应用宝下载apk的文件,
###
如果多台设备的话,也是可以adb -s 设备名 uninstall XXX来指定设备卸载
###
实际这个安装卸载app,比较鸡肋,因为这个可以在模拟器里面安装卸载app啊,
###
adb启动app
###
这个命令很重要很重要!!!
adb shell "dumpsys window | grep mCurrentFocus"
知道这个就可以启动app的这个页面了
adb shell am start -n com.tencent.news/com.tencent.news.pubweibo.PubTextWeiboActivity
这个命令是先打开app的某一个页面,然后执行这个命令,
###
这个命令非常的重要!!!
adb logcat ActivityMnanager:I | grep "cmp"------com.tencent.news/.activity.SplashActivity
adb shell am start -n com.tencent.news/.activity.SplashActivity
这个就是从启动页,开始启动app,模拟用户的真实操作,
这个是先打开日志这个命令,然后去操作app
###
使用adb shell 命令清理缓存
安卓的底层是使用的Linux内核的,所以Linux的命令都是通用的,
可以使用adb shell 直接进入这个安卓系统,
所有应用包名列表:adb shell pm list packages
查看所有自己安装的app,adb shell pm list packages -3
常用的adb shell操作----文件操作
进入手机设备:adb shell ---剩下的操作和Linux一样
列出目录下的文件和文件夹:ls
进入文件夹:adb shell cd <folder>
新建文件夹:adb shell mkdir path/foldername
###
所有的包都在cd /data/data/这个目录下面,
查看ls | grep news
这个是一个目录,可以进入,
我们操作了这个app之后,发现有些问题,想要回到初始的安装的状态,又不想要卸载重装,怎么办,就可以把所有的缓存都删除,就是刚安装好的初始状态了,
执行了这个命令之后,这个文件夹就只剩下lib目录了,其他的文件夹都删除了,
pm是package manage
am是activity manage,这两个一个是包管理器,一个是页面管理器,
###
####
###
手机电脑传输文件,
注意:导入导出要退出adb shell,
1.导入到app中,
adb push pc下文件路径 device中目录路径
2.导出app中的到pc中,
adb pull device中的文件路径 pc下的文件路径
app中的/data/data/我们是不能操作的,这是系统目录,
我们可以操作sdcard,这个目录,ls /sdcard
可以使用vi,touch,这样的命令,vim使用不了
可以把app的图片和日志拉取出来,然后分析,
####
使用adb查看日志
###
设置成为V,会打印所有的日志,
开发人员一般是D,debug模式,
S是什么日志都不输出,
###
这个日志不是全部的,这个日志很大的时候,会把之前的日志覆盖,这个要注意,
###
###
###
"*:W"这个是任意tag下的warning以上的日志
'*:S' 这个已经要有,意思就是设置为静默模式,其他的都不展示,只展示我们想要的内容,
###
通过adb命令模拟手机按钮操作
在模拟器的设置里面,打开开发者模式,打开指针位置设置,
####
###
这个命令结合指针,很重要!!!
adb shell input tap 257 406
###
adb shell input text 312312
###
adb shell input swipe 479 769 479 1392
adb shell input swipe 479 1392 479 769 2000 ----这个是慢慢的滑动,
###
实际上是手机所有的操作都是有一个key值得,可以看这个连接查看,
###
使用adb查看性能指标
###
###
-d 1,就是每隔一秒,就打印一下性能情况
这个命令是实时的,这个更加的准确,上面的cpuinfo这个是某一个时间段内的平均值,
###
##
###
adb命令实现monkey压力测试
###
压力测试就是连续长时间的操作这个应用,能保证每一个按键,页面都是操作到的,没有性能问题,
比如内存泄漏,比如app无相应
为什么叫做monkey,因为是随机性点击操作,猴子上蹿下跳的,客户的操作也是随机性的
我们只需要收集这个monkey的日志,然后分析,看看有没有问题,
###
##
monkey是adb的一个应用,
###
###
adb shell monkey 100,就是100个事件,事件发送的非常的快,
下面是花费了多少时间,12s的时间就运行完了 ,
如果想要看到运行的结果,那就是设置多一些,比如设置1000个事件,就可以看到运行的过程了,
会随机的吊起其他的应用,随机性是非常的强的,
##
刚刚我们看到,打印的日志是非常的少的,
我么可以使用这个命令,打印更多的日志,
可以看到发送了哪些事件,比如移动,点击,滑动输入,等等,
####
我们可以输入很大的事件数,比如10万个,
我们怎么停掉他呢?
进入到设备里面,adb shell
杀掉进程,
所以monkey要停止,只有这三个情况可以停止,pc端是停止不了这个monkey的
###
一般我们就是只需要一个包压力测试,
##
300是毫秒
适当的延长时间,可以更好的模拟用户操作,
###
问题:
这种都是随机的操作,出现问题了,我们怎么复现呢?
可以看到每次开启这个monkey任务的时候,有一个种子,找到这个种子号,我们可以重现这次随机的操作,
####
##
启动启动monkey的时候我们可以看到比例
###
比如有的app点击事件比较多,比如抖音是滑动事件比较多,都可以设置的,
事件的权重合计,不能大于100%,
这个是根据产品的需求来设置的,
###
忽略异常,就不会运行是停止的了,
一般操作的时候,可以直接把这些都忽略掉,忽略崩溃,忽略超时,忽略安全异常,
###
###
第一种方式,直接输出到pc电脑上了,执行了这个命令,页面就不打印日志了,
这个会把每一个时间都打印出来,但是这些我们是不需要的,这个非常占据空间,有可能运行了几天之后,磁盘都被占满了都有可能,
第二种方式,我们可以对日志过滤,‘*E’这就是我只想关注error日志,
注意,我们可以执行运行的命令之后,再新开一个窗口执行第二个方式的命令,这种命令就会过滤日志,把我们的error输出到文件,
###
####
8小时能执行多少个事件呢?怎么算,按照,每一个事件发送需要1毫秒算
8*60*60*1000/300=96000,不要被图片上的误导了,
###
###
可以在日志中搜索,
###
这个monkey,也有问题,有些时候,在一个页面转转,跑不出来,而有些页面就点击不到,
####
==================结束=================
###
###
在移动端测试时,经常会用到adb,如果是同时多开多台设备,想要操作某个设备时就要指定设备才可以
命令:adb -s 127.0.0.1:62027 +命令就可以了 adb -s 设备 命令
###
###