美文网首页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