美文网首页appium
App专项测试-常见ADB命令应用实践

App专项测试-常见ADB命令应用实践

作者: 熊一二 | 来源:发表于2020-04-15 14:17 被阅读0次

一、设备连接操作

1. 获取连接设备

直接启动终端,使用命令 adb devices 命令即可

adb devices
image.png

其中手机连接设备状态有如下三种种情况:

  • offline:设备没有与adb相连接或者无法响应.
  • device:设备正与adb服务器连接
  • unknown:没有连接设备

通常连接过程中可能会出现各种问题,怎么办,推荐按如下顺序尝试解决:

1.重新插拔USB数据线
2.重启adb服务
3.使用助手类软件尝试
4.重启手机
5.换根数据线试试

其中重启ADB服务命令如下:

adb kill-server
adb start-server

如果adb服务启动不起来,查看是不是5037端口被占用

# 1、查看端口占用程序的pid
netstat -ano | find '5037'

# 2、根据PID查询程序信息
tasklist |findstr '5408' 

# 3、杀掉占用端口的程序
taskkill /f /t /in xxx.exe
image.png image.png image.png

2. 安装软件

(1) 全新安装

通过本地apk文件,安装一个设备上不存在的应用

语法:adb install ${path_to_apk}

例子:
  adb install esbooks.apk
(2) 升级(覆盖安装)

通过本地apk文件,升级(覆盖安装)一个设备上已存在的应用。使用参数 -r

语法:adb install -r  ${path_to_apk}

例子:
  adb install -r esbooks.apk
(3) 卸载

通过应用的包名卸载一个设备上存在的app

语法:adb uninstall ${package_name}

例子:
adb uninstall esbooks.apk

3. 文件拉取与推送

(1) 从设备端拉取「pull」文件至本地

从模拟器或者设备中复制文件或目录,使用如下命令

语法:adb pull ${remote} ${local}
 即:adb pull ${手机设备} ${PC本地}
(2) 从本地推送「push」文件值设备端

将文件或目录复制到模拟器或者设备,使用如下命令

语法:adb push ${local} ${remote}
 即:adb push ${PC本地} ${手机设备}
(3) 举个栗子:

本地建立个文本文件,并推送至设备sdcard目录下

1、当前目录建立test.txt,并写入“testMI”
echo 'testMI' > test.txt

2、推送test.txt至设备/sdcard/目录下
adb push test.txt /sdcard/test.txt

3、使用命令输出设备/sdcard/目录下的test.txt内容
adb shell 'cat /sdcard/test.txt'

4、拉去设备端/sdcard/目录下的test.txt至当前目录
adb pull /sdcard/test.txt demo.txt

4. 截屏

对模拟器或者设备进行截屏,使用如下命令

举个栗子:
截取当前屏幕,并传回至当前目录,并浏览

Adb常用命令第一部分至此结束
二、APP相关操作

  1. 获取当前展示APP的页面名称
    首先,在设备端打开要获取名称的页面。
    然后,运行如下命令:

其中mCurrentFocus行里就包含当前展示app页面的包名与页面名称,格式:
app.pakcage.name/package.activity.name

  1. 开启与关闭app
    (1)开启app
    首先,需要获取可启动的activity名称。即在含有如下配置的activity:
    如何获取上述信息,本文下面有详细说明
    然后,通过am命令启动指定app
    缺图
    (2)强行关闭app
    可以通过如下命令来强制关闭一个app

还是没有关闭怎么办,试试这个:

提示:学会这两个命令关闭运行中的monkey再也不用重启手机了。

  1. 获取app的activity信息
    使用如下命令,可以再不反编译的情况下,获取测试关注的清单文件内的信息。如versionName,versionCode,activity配置,权限配置等。命令如下:
    adb shell “dumpsys window | grep mCurrent”
    文件内容概要说明如下:
    一个activity信息片段的截取2

package相关信息片段的截取

三、系统信息相关操作

  1. 获取系统信息
    如果你想获取设备主板的一些信息,可以通过adb shell命令getprop或cat命令读取/system/build.prop文件的方式获取。
    getprop的例子如下:

cat /system/build.prop的例子如下:

从上述命令的输出结果,可以出看出我的测试设备是一款samsung的GT-I9500设备。
当然,该命令还可以进一步进行扩展,比如要测试OOM(OutOfMemory)专项的时候,必须获取vm设备数据。则可以通过如下命令:

我在这里推荐大家使用cat读取文件的方式,因其输出简洁规整,方便做进一步处理。

  1. 获取屏幕相关信息
    (1)获取屏幕分辨率与dpi
    记住这条命令,再也不用去百度手机型号查分辨率了。

(2)获取屏幕亮度相关设置
如果你的app提供了系统亮度设置相关的交互功能,这个时候你就需要用到如下方式解决。
1)屏幕超时时间设置获取
设置完超时时间后,不用去等真的超时锁屏,调用如下命令看下设置就好了:

2)屏幕亮度相关设置
屏幕亮度设置也是一样的,可以使用如下命令查看设置:

3)屏幕自动亮度开关设置
如果你设置的屏幕为自动亮度,那你需要用到这条命令查看:

APP性能测试
如果你要进行移动应用(APP)的性能测试,那么你就需要先了解并选取相应的性能测试指标,对于评估一个app的性能指标来说,通常会采用如下四个维度:
内存占用
CPU占用
流量消耗(上传、接收)
电量的消耗

本文将通过ADB命令对上述指标的获取方式进行简单操作说明。至于为什么用、怎么用、用来干什么,后续会发布相应文章进行说明。
下面就通过4个Adb的组合命令来获取:

  1. 获取应用占用的内存信息

其中,我们可以用Pss Total列、TOTAL行的数据作为当前APP内存占用的衡量数值。至于为什么用这个,后续会有专门的OOM(OutOfMemory)专项测试文章,里面会进行说明。

  1. 获取应用占用的CPU信息

其中,第一项数值可以用来作为衡量app对于设备CPU占用的衡量数值。
获取网络流量信息

  1. 获取系统电池电量信息

五、Android设备日志相关操作

  1. 清除设备端日志:
    为什么要先写清除日志,因为大部分人不是不会获取log,而是获取了太多、太多的log。

如果你想不听到研发人员的咆哮,测试之前请运行如下命令进行历史日志清除。

  1. 查看日志:
    1)查看全部日志
    最简单的一条查看日志的命令,如下:

2)查看指定级别以上的日志
如果只想关注Error级别的log,可以试试如下命令:

优先级由第到高的顺序如下:

3)仅查看某个标记的日志
如果你只想关心默认标记的log,如只想看看Activity相关活动的日志,你可以试试如下命令:

注:必须先设定所有的为silent,在此基础上设置的tag过滤才成功。

  1. dump日志:
    对于测试人员日志看看也就看看了,最重要的是存到本地随bug一起提交。如果获取当前设备端的日志,你可以试试如下命令:

  2. 界面化日志查看DDMS
    DDMS全称:Dalvik Debug Monitor Service,它提供截屏,查看线程和堆的信息,logcat,进程,广播状态信息,模拟来电呼叫和短信,虚拟地理坐标等等。
    启动后界面如下:

模拟用户操作
如果有一天,你需要实现一个超级简单的用户场景自动化,如在连续翻页1000次等,这个时候,你又不想引入复杂的框架与工具,那应该怎么办呢?我相信当你看完下面的两个adb操作命令说明,你已经知道该如何实现了。

  1. 获取用户操作事件日志
    如果你想要捕捉用户操作,例如获取一次点击操作的屏幕坐标点,那么你需要使用下面的getevent命令:

  2. 模拟获取用户操作
    如果你想回放一些操作,那么你需要如下基础命令:
    1)模拟点击操作:

模拟物理按键操作:

  1. 模拟滑动操作:

模拟输入文本信息:

相关文章

网友评论

    本文标题:App专项测试-常见ADB命令应用实践

    本文链接:https://www.haomeiwen.com/subject/fihcvhtx.html