ADB

1.1、了解目前连接的设备/模拟器的状态的相关信息

adb devices

  1)device状态:物理手机设备已经连接上服务器

  2)offine状态:设备没有连接到adb服务器

  3)no device状态:没有物理设备链接

1.2、将电脑应用安装到手机设备或模拟器

adb install

  例:将C盘的xx.apk文件安装到手机

adb install C:\Desktop\xx.apk

  例:指定将将C盘的xx.apk文件安装到指定手机(xxxxxx为手机设备)

adb -s xxxxxx install C:\Desktop:xx.apk

  例:设备已有该应用,又不想卸载后安装,直接覆盖安装并且保留数据

adb -s xxxxxx install -r C:\xx.apk

1.3、卸载手机应用(需知道卸载应用的包名)

adb uninstall

  例:卸载指定物理手机设备或模拟器应用(“com.xxx”为包名)

adb  -s xxxxxx uninstall com.xxx

   例:卸载指定物理手机设备或模拟器应用,但保留卸载软件的配置和缓存文件。

adb -s xxxxxx shell pm uninstall -k com.xxx

1.4、将手机端文件下载到PC电脑

adb pull

  例:将手机里sdcard的文件传到PC电脑C盘桌面(xxx为手机某文件)

adb pull /storage/emulated/0/xxx C:\Desktop

  例:将指定手机里sdcard的文件传到PC电脑C盘桌面

adb -s xxxxxx pull /storage/emulated/0/xxx C:\Desktop

1.5、将PC电脑文件上传到手机端

adb push

  例:将PC电脑C盘桌面的xxx文件上传到手机端原目录

adb push C:\Desktop\xxx /storage/emulated/0/

2.1、adb shell 各指令

  这些命令都保存在手机“/system/bin”文件下,经常操作的指令如“ls、cat、df、uptime、ps、kill”等等

adb shell

  进入adb shell界面后,可以输入相关命令开始操作,使用"exit"退出界面模式。

2.1.1、查看当前目录的所有内容

ls

  例:访问手机系统“/data/data”目录

adb shell
su root    #root用户权限获取,需要root才可以执行
cd /data/data
ls

  PS:没有root的用户,会出现访问权限问题“Permission denied”

2.1.2、查看电池电量相关信息

dumpsys battery

2.1.3、查看无线网络的信息

dumpsys wifi

  PS:加入“|more”,就可以输出信息在显示满一页时就暂停输入,按空格可以继续显示

dumpsys wifi |more

2.1.4、查看电源管理的相关信息

dumpsys power

   PS:屏幕关闭时间设置为“mScreenOffTimeoutSetting”

  可以直接输入以下代码,即可找出对应的时间

dumpsys power | grep "mScreenOffTimeoutSetting"

2.1.5、查看电话相关信息

dumpsys telephony.registry

2.1.6、查看CPU硬件的相关信息

cat /proc/cpuinfo

2.1.7、查看内存的相关信息

cat /proc/meminfo

2.1.8、

 

查询当前应用操作日志

#进入桌面
cd desktop

#在桌面生成日志(要确保桌面的盘符准确)
adb logcat>d:/log.txt

#手机上操作应用几秒后,键盘ctrl+c退出

 

 

查看手机操作系统的版本号

adb shell getprop ro.build.version.release

 

显示设备中所有的包

adb shell pm list package

 

查找设备中某个包

adb shell pm list packages | findstr 查找关键字

 

查找启动项

#以下均需要开启app

adb shell dumpsys activity | findstr "关键字"  #TaskRecord 后面的内容即为查询到的记录

#写法最优
adb shell dumpsys window w | findstr \/ | findstr name=

 

 adb 服务器的开关

#启动
adb start-server

#关闭
adb kill-server

 

 

monkey压测常用命令

-throttle 事件间隔.事件间隔300ms

adb shell monkey -p com.tencent.mm --throttle 300 -v -v 1000

 

 --pct 动作事件Monkey的事件种类一般是11种,不同的Android SDK中的Event percentages种类和顺序也不同哦。

--pct-touch 70         触摸事件百分比70
--pct-motion 5         手势事件百分比70

--pct-trackball 5      轨迹球事件百分比10

--pct-pinchzoom 2      二指缩放事件百分比2

--pct-rotation 0       屏幕旋转事件百分比0

--pct-nav 0            基本导航事件百分比0

--pct-majornav 5       主要导航事件百分比5

--pct-syskeys 5        系统事件百分比 5

--pct-appswitch 2      Activity启动事件百分比2

--pct-flip  2          键盘翻转事件百分比

--pct-anyevent 2       其他事件百分比

 --ignore 忽略错误事件

--ignore-crashes 忽略crash

--ignore-timeouts 忽略timeouts

--ignore-security-exceptions 忽略权限错误

--ignore-native-crashes 忽略本地应用程序发生崩溃

出现crash你怎么定位:crash一般是空指针导致的,在logcat日志中输入“nullpoint”搜索到相关的日志,然后把日志给开发定位

1、在跑monkey前,先清空手机的logcat日志:adb logcat -c

2、接下来,获取logcat日志:adb logcat -v time > E:\share\logcat.log

3、使用monkey运行被测应用:adb shell monkey -p your.package.name -v 100000 > E:\share\monkey.log

4、测试完成后查看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。那我就要去看看logcat日志有没有null point,或anr in的关键字,如果有null point,就表示app在测试过程中crash了,然后把null point前后的日志截取下来,发给开发定位;如果有anr in,表示app在测试过程中出现了ANR(程序无响应),我们要把/data/anr/traces.txt文件取下下来,再把ANR进程号对应的日志发给开发定位问题。

APP出现ANR的原因:

1、线程阻塞的 2、内存不足 3、CPU满负荷(由于现在的手机基本都是8核CPU,所以基本不会出现CPU满负荷的情况)

APP出现CRASH的原因

1、空值指针 2、数组越界 3、内存不足 4、CPU满负荷(由于现在的手机基本都是8核CPU,所以基本不会出现CPU满负荷的情况)

 

APP测试常见的严重问题有(例Crash)?分别引起的原因有哪些?

1)、Wifi和移动数据之间切换,没有提示;2)、长时间使用,内存不足,可能是内存泄露;3)、前后台切换,app 崩溃;4)、敏感数据没有加密,如:用户名和密码。

 

-kill-process-after-error 错误后停止应用

 

释义:操作事件简介

Monkey所执行的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。Monkey通过这11大事件来模拟用户的常规操作,对手机App进行稳定性测试。下面让我们来详细了解这11大事件。

1.触摸事件  --pct-touch

触摸事件是指在屏幕某处按下并抬起的操作,可通过--pct-touch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到。 该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。

2.手势事件  --pct-motion

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。

该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。

3.二指缩放事件  --pct-pinchzoom

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过--pct-pinchzoom参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。

4.轨迹事件  --pct-trackball

轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过--pct-trackball参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。

5.屏幕旋转事件   --pct-rotation

屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过--pct-rotation参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。

6.基本导航事件   --pct-nav

基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过--pct-nav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。

7.主要导航事件   --pct-majornav

主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。可通过--pct-majornav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键。

8.系统按键事件   --pct-syskeys

系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过--pct-syskeys参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。

9.启动Activity事件   --pct-appswitch

启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过--pct-appswitch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Switch操作组成的,从手机上看,上面的操作实际是打开了com.android.settings这个应用的一个com.android.settings.Settings的Activity界面。

10.键盘事件   --pct-flip

键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过--pct-flip参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 如日志所示,这里主要是键盘的打开和关闭操作。

11.其他类型事件   --pct-anyevent

其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是其他的一些系统按键,如字母按键、数字按键等。因为现在手机很少带字母按键或数字按键,所以这个事件一般使用得比较少

举例:

1、忽略crash、timeouts、权限错误事件
2、触摸事件百分比70、手势事件百分比20、主要导航事件百分比5、键盘事件百分比5
3、日志三级,间隔100ms,1000次事件

adb shell monkey -p com.qbdz1441.nuzrdi --ignore-crashes --ignore-timeouts --ignore-security-exceptions --pct- touch 70 --pct-motion 20 --pct-majornav 5 --pct-flip 5 --throttle 100 -v -v -v 1000 

 

 

常用的adb命令

文件路径:/data/anr/traces.txtadb
devices查看设备名
adb connect连接设备
adb install xxx.apk
adb uninstall 包名
adb shell "dumpsys window | grep mCurrentFocus"
adb push 本地路径 服务器路径
adb pull 服务器路径 本地路径
adb shell monkey -p 包名 -v(vv) 次数 adb shell monkey -p 包名 -s seed值(回归测试)-v(vv) 次数
adb logcat -c adb logcat -v time > 本地路径
adb logcat -v time | findstr START 找包名
posted on 2019-01-10 20:31  Damon_Ding  阅读(199)  评论(0编辑  收藏  举报