首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android自动化测试基础 -- ADB介绍

Android自动化测试基础 -- ADB介绍

作者头像
上帝De助手
发布2019-09-18 14:27:16
1.2K0
发布2019-09-18 14:27:16
举报
文章被收录于专栏:TestQATestQA

前言

每一个准备学习Android自动化测试的同学,都会面临一个Android自动化测试框架的选择问题。与之前PC和WEB的测试框架不同,Android的自动化框架乍一看,非常的唬人。接踵而来的问题就是:怎么能有这么多呢,到底要选择哪一个呢?

通过这篇文章的介绍,希望能帮助到想了解或者进行Android自动化测试的同学,对Android自动化测试和框架有一个快速的入门和了解。

听说过的Android自动化框架

首先,你听过的Android自动化测试框架/工具可能有如下这些(不限于此):

  • appium
  • uiautomator
  • uiautomator2
  • uiautomation
  • adb
  • Robotium
  • Espresso
  • Instrumentation
  • Monkey
  • monkeyrunner

当然你还可能接触到其它的自动化框架,比如:

  • python版的uiautomator和uiautomator2
  • 腾讯的QT4A
  • 网易的AirTest
  • 基于JVM的Roboletric

But,本文主要介绍的还是上面第一波所列出来的相关框架的内容。因为它们相(我)对(有)常(了)见(解)。

最基础的Android工具

不管你最终选择了哪个自动化的框架,你始终都绕不过的就是ADB(Android Debug Bridge)工具。它是Android开发调试和自动化测试的基础工具,很多其它工具和框架都会在底层调用它来完成一些事情。

ADB的基础原理

就好比了解一个人,先了解他的底细一样;了解一个工具,要先了解它的基本原理。否则在使用过程中“尥蹶子”就不好了。如果你在网上搜ADB原理,会出现很多很多的相关文章,所以这里就只做一个简单的说明,想要挖局更多细节的可以自行深入。

这是一张ADB全局的通信逻辑图,从图中可以知道ADB是一套工具集,它包含:

  • adb client(运行在PC上的命令行工具)
  • adb server(运行在PC上的后台服务进程)
  • adbd(运行在设备或模拟器上的后台服务进程)

它们之间的通信关系也是比较的清晰:

  • adb client <--TCP--> adb server(监听5037端口) <--TCP--> adbd(监听5555端口)

而它们的生命周期是这样的:

  • adb client执行完就结束,跟普通命令行工具一样
  • adb server在首次执行adb命令时会自动启动,之后会一直运行在后台
  • adbd则是一直在手机上的后台运行,至于启动时间点估计是在设置debug时

这是另外的一张原理图,这个图中说明了adbd内部的运行逻辑。另外还说明了adb server和adbd的另一种通信方式 -- USB连接。这是对上一张图的补充,结合起来基本就是adb运行逻辑的全貌了。

而最终adbd能驱动Android的应用,则是因为它通过jdwp与JVM通信达到的。(JDWP:Java Debug Wire Protocol)简单说就是java的调试后门,通常用于远程和线上调试。

ADB的基本命令

ADB的命令跟其它命令行工具差别不大,只是参数层次和可用参数多了点。这里就只介绍下常(知)用(道)的命令:

adb devices        #查看当前已连接的设备和模拟器
adb connect ip.to.device    # 通过TCP的方式连接到指定的adb server, 即wifi连接
adb install /path/to/apk    # 安装指定APK包
adb uninstall com.package.name    # 卸载指定的应用
adb push local remote        # 向设备发送文件
adb pull remote local        # 从设备下载文件
adb shell       # 进入连接shell模式

这些命令里面最强大的是adb shell,它其实是进入到Android系统的shell环境,可以执行Android的shell中所有的命令。如果你只是做一些简单的Android自动化操作,那么adb也许就可以满足你的需求了。

除了上面提到的几个命令,只通过adb还可以实现点击、输入、滑动、dump界面树等功能。具体的命令如下:

# 点击坐标点10,10
adb shell input tap 10 10
# 输入文本1
adb shell input text 1
# 从坐标点100,410滑动到100,5
adb shell input swipe 100 410 100 5
# dump当前界面树到指定文件
adb shell uiautomator dump /sdcard/ui.xml
# 启动指定应用,并支持原生的scheme协议跳转
adb shell am start -n com.cubic.autohome/.LogoActivity -d autohome://carfriend/circlerank

是不是,很强大!!!如果不考虑大规模的开发用例,adb基本可以满足我的很多常规需求了。想要了解更多其它框架的知识请关注TestQA公众号!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TestQA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 听说过的Android自动化框架
  • 最基础的Android工具
    • ADB的基础原理
      • ADB的基本命令
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档