什么是adb(Android debug bridge)

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。

备注:adb 只能操作Android

开启开发者选项

image.png
手机—【设置】—【关于手机】—【版本号】,连续点击7次。

常用命令

adb 也可以连接手机。手机需要开启开发者选项,以及usb调试功能。
image.pngimage.png

adb devices 查看连接的设备

  1. adb devices

image.png
结果中有 127.0.0.1:62001 表示设备的串号。

  • device 表示连接成功。

adb shell 进入手机

image.png
在手机中可以执行一些常用的Linux命令,android 系统内核是Linux系统。所以支持部分Linux命令。
exit 可以退出adb shell
image.png

adb push电脑文件上传到手机

  1. adb push C:\Users\zengy\Desktop\01.png /sdcard/DCIM
  • C:\Users\zengy\Desktop\01.png 电脑上的文件路径
  • /sdcard/DCIM 手机上的文件路径

adb pull 从手机里下载文件到电脑

  1. adb pull /sdcard/DCIM C:\Users\zengy\Desktop

adb install 安装app

  1. adb install C:\Users\zengy\Desktop\app-release.apk

查看手机上安装的所有软件

  1. adb shell pm list packages

image.png
默认会把本机安装的app已经自己安装的第三方app信息都会显示出来。

查看第三方app

  1. adb shell pm list packages -3

image.png

卸载app

  1. adb shell pm uninstall 包名

image.png

monkey 测试

monkey可以模拟当app 被胡乱操作的时候的场景。

  1. adb shell monkey -p org.cnodejs.android.md 10000
  • -p 指定运行app
  • 10000 随机操作10000个事件

monkey测试主要测试app的稳定性,monkey执行的时候会做很多随机的动作,如果应用在胡乱操作的时候闪退或者崩溃。所以需要提测。

monkey运行出错

image.png
当app出现闪退的时候,app会报错。

  1. adb shell monkey -p com.fanmao.crashtest 1000
  2. // CRASH: com.fanmao.crashtest (pid 9796)
  3. // Short Msg: android.content.ActivityNotFoundException
  4. // Long Msg: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.app.mainactivity2 }
  5. // Build Label: samsung/dream2qltezh/dream2qltechn:7.1/N2G48H/G9550ZHU1AQEE:user/release-keys
  6. // Build Changelist: 700210421
  7. // Build Time: 1619015543000
  8. // android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.app.mainactivity2 }
  9. // at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1809)
  10. // at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
  11. // at android.app.Activity.startActivityForResult(Activity.java:4238)
  12. // at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:675)
  13. // at android.app.Activity.startActivityForResult(Activity.java:4196)
  14. // at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:662)
  15. // at android.app.Activity.startActivity(Activity.java:4535)
  16. // at android.app.Activity.startActivity(Activity.java:4503)
  17. // at com.fanmao.crashtest.MainActivity$1.onClick(MainActivity.java:22)
  18. // at android.view.View.performClick(View.java:5638)
  19. // at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
  20. // at android.view.View$PerformClick.run(View.java:22430)
  21. // at android.os.Handler.handleCallback(Handler.java:751)
  22. // at android.os.Handler.dispatchMessage(Handler.java:95)
  23. // at android.os.Looper.loop(Looper.java:154)
  24. // at android.app.ActivityThread.main(ActivityThread.java:6198)
  25. // at java.lang.reflect.Method.invoke(Native Method)
  26. // at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
  27. // at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)
  28. //
  29. ** Monkey aborted due to error.
  30. Events injected: 70
  31. ## Network stats: elapsed time=796ms (0ms mobile, 0ms wifi, 796ms not connected)
  32. ** System appears to have crashed at event 70 of 1000 using seed 1634205140279

上面就是报错信息,只需将报错信息发给开发即可。

常用的monkey命令参数

  1. adb shell monkey -s 1634159219306 --throttle 500 -p org.cnodejs.android.md -vv 100

—throttle 500 每两个事件中间的延迟时间未500毫秒
-s 1634159219306 种子值,保证每次生成的序列一样
-p org.cnodejs.android.md 运行的app
-vv 显示详细的日志
100 运行次数

更多adb命令

ADB 操作命令详解及用法大全

面试问题

手机端你们平时是怎么测试的?
平时最主要的还是做手工功能测试。以功能为主,
也会使用monkey 跑一下Android app的稳定性。
(注意:monkey 不能跑IOS)。