【学习笔记】ADB命令&Monkey

一.ADB(安卓调试桥)

1.ADB组成

  • 客户端client:运行在电脑上,可以通过shell来掉起一个客户端,其他安卓工具,例如ADT插件,DDMS都可以创建出一个客户端
  • 服务器server:运行在电脑的后台,负责client和deamon进行通信
  • 守护进程deamon:运行在模拟器或者安卓设备的后台

解释:ADB中客户端就是用户操作的位置属于我们常见的客户端;守护进程就是在手机or模拟器中的后台;服务器就相当于一个中间件,类似于代理一样,server服务器用于客户端和守护进程的通信中转站

adb环境搭建

  1. 使用安装包安装
  2. 配置环境变量-新建ANDROID_HOME (SDK 存放路径)
  3. 并在系统变量Path中加入%ANDROID_HOME &\platform-tool;%ANDROID_HOME%\tools
  4. cmd命令行输入adb version验证

2.adb基础命令

#查看帮助手册
adb -help

#检测链接到电脑的安卓设备
adb devices

3.通过adb链接

1.真实手机

  • 用usb线将手机连接上电脑
  • 打开手机设置->开发者选项(关于手机点击五下版本号)->USB调试模式
  • 一直允许该设备进行调试
  • 一般无法连接请更新手机驱动,普通安卓手机就更新安卓驱动,需要手机助手的手机就按照手机助手进行驱动管理,

2.模拟器

使用mumu模拟器
adb connect 127.0.0.1:7555

127.0.0.1表示本地模拟器,7555表示mumu的端口

3.设备检测

#查看设备是否连接
adb devices 
  • device:正常
  • offline:一般真机会出现的现象,重新拔线重装即可
  • Ack:有软件占用端口

如果ACK,说明有进程占用了端口号,假设是5037,则通过

netstat -nao|findstr "5037"

找到对应的pid,通过taskkill杀死,
如果杀不掉则通过

tasklist |findstr "pid号"

找到是谁

5.adb常见命令

a.进入手机路径
#安卓类似于一个Linux系统,进去手机的路径
adb shell 

#这里之后可以使用linux命令查找系统环境
#切换手机目录sdcard文件
cd sdcard

#退出,必须通过exit退出命令模式
exit
b.从模拟器/设备中拷入或拷出文件

pull 和 push 命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置。

1.把文件放入手机模拟器

#注意:电脑路径在前
adb push 原路径(电脑) 目标路径(手机)

2.把文件从模拟器中剪切出来

adb push 原路径(手机) 目标路径(电脑)
adb pull /sdcard/myscte.png d:\TesterT\doc

命令报错汇总:

  • No such file or directory:看一下文件顺序是否有误,是不是把电脑和手机目录位置写错了

  • Read-only file system:权限问题,参考:http://www.111cn.net/sj/android/44496.htm

c.抓取log(重要)
# 打印日志输出成文档,>表示重定向文件
adb logcat -v time>D:\logCrash.txt
adb logcat >D:\logCrash.txt

# ctrl+c终止当前日志获取
# 鼠标拖动文件到命令行就可以显示当前文件的路径
d.安装和卸载

1.安装APP

#路径可以拖动进入
adb install [apk的路径]

# 
adb install -r [路径]

2.卸载APP

adb uninstall +(app包名)

# 包名是手机上唯一的标识的,可以用包名把app卸载

3.查询APP的包名

手机上每一个APP都有唯一的包名,每个APP的界面有很多,对应就是ACTIVITY,输入命令前,先在模拟器打开APP,然后打开对应的页面

# 查找包名
adb shell dumpsys activity top|findstr  "ACTIVITY"

#显示内容:
ACTIVITY com.ss.android.article.news/.activity.MainActivity 24b53301 pid=1821

# 格式:
ACTIVICY 包名/Activity名 24b53301 pid=1821
e.通过wifi进行远程链接手机进行调试

这个wifi链接并不是完全抛弃USB线,而是在之前会通过USB链接手机,然后才可以使用wifi调试

adb connect
adb disconnect

如何通过远程wifi的方式去操作手机:

1.手机,电脑处于同一网段
2.把手机链接上电脑,通过adb devices可以链接上手机
3.通过adb tcpip 5555确定双端通信端口号
4.拔掉USB线,通过adb connect 手机ip地址,不需要端口号,

f.查看设备状态
#查看设备状态
adb get-state 
  1. device:正常
  2. offline:链接出现异常,设备无响应
  3. unknown:没有链接设备
g.获取手机所有包名

1.

adb shell pm list package
adb zhell pm list package -s

#获取对应apk的包和对应的包名
adb shell pm list package -f 

#启动APP
adb shell am start -n com.ss.android.article.news/.activity.MainActivity
adb shell am start -n 包名/activity

2.根据手机data获取包名

#进入shell命令行中
adb shell 

#切换到目录
ls data/data

3.获取当前页面的包名

adb shell dumpsys activity | find "mFocusedActivity"
h.查看存储图片路径截图图片
adb shell screencap -p /手机路径/图片名称
i.内存信息,内存泄漏
#查看是否存在内存泄漏情况-堆空间没有被回收
adb shell dumpsys meminfo 包名
#查看是否存在内存泄漏情况
adb shell dumpsys cpuinfo 包名

如果内存一直处于攀升状态,就说明会有内存泄漏

j.重启手机
adb reboot

二.APP压力稳定性(Monkey)

1.压力稳定性介绍

压力稳定性介绍,模拟用户触摸屏幕,滑动,按键(音量,电源,home等)等操作来对设备上程序进行压力测试,检测程序多久的时间会发生异常。

参考:http://note.youdao.com/noteshare?id=fb20bebd594d2187d5be11b092a0a87e&sub=DBBA6590E6B04EC5B112ACCF226D4E1F

2.Monkey命令格式

a.基础命令
#自动开始测试此次数
adb shell monkey (+命令参数) 次数

#查看帮助手册
adb shell monkey -help/-h
b.参数命令
  • -V 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,最详细的日志:-v-v-v
  • -P 后面接着对应的包名,如果是整机测试,就不需要,用此参数指定一个或者多个包(Package,APP的名字)
  • -S 用户指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的,用于问题的重现
  • –throttle<毫秒> 用户指定用户操作(即事件)间的时延,单位是毫秒
  • –ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到crash或者timeout的情况时忽略掉,一般不设置,出现crash或者timeouts时,Monkey测试会终止。这里是防止Monkey测试终止
  • 次数 100000 这里指点击的次数,根据测试经验,对于单个应用程序这个次数设置在100000次就可以了,如果是整机,一般设置在500000次
c.命令举例
# 在命令行窗口打印执行日志
adb shell monkey -p com.tencent.mm –v -v -v 1000

# 加上seed命令表示执行顺序和一致,用户问题的复现
adb shell monkey -p com.tencent.mm –v -v -v -s 450  1000

# 加上延时参数以免操作太快
adb shell monkey -p com.tencent.mm –v -v -v -s 450 --throttle 500 1000

#加上忽略crash
adb shell monkey -p com.tencent.mm –v -v -v -s 450 --throttle 500 --ignore-crashes --ignore-timeouts 100000
d.monkey 报错
  • 1.系统报错Count is not a number

查询了Monkey的源码发现这个异常报错情况:

catch(NumberFormatException e){
    System.err.println(*Error:Count is not a number*);
}

参考:https://wenku.baidu.com/view/c3e6a160856a561253d36f4f.htm

解决方式:手动输入,不要复制粘贴,cmd,命令行中复制粘贴会转换成字符串格式,

e.monkey终止

当执行了monkey之后想要终止monkey使用ctrl+c是不可以的,所以需要进入到adb shell的环境,ps检测当前正在运行的进程monkey,通过进程号以及kill命令杀死进程

3.Monkey进阶

当然在由于Monkey的局限性,在很多时候无法对特定的业务逻辑进行稳定性测试这个时候就需要

  • 改Monkey的源码
  • 自动化遍历项目(拓展APP自动化遍历)

你可能感兴趣的:(软件测试)