软件测试学习之-ADB命令

news2024/9/19 10:37:04

ADB命令

adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统,adb就派上用场啦!

Android程序的开发通常需要使用到一个编辑器,Android studio 。在Androidstudio中,自带了adb工具。所以Android开发们,能够直接去调试手机上的错误。

作为一名测试,实施人员,我们学习和使用adb命令的目的是为了,完成money自动化或者查询手机端本地日志。

搭建本地adb环境

1.adb安装程序放在电脑指定目录下

把发的压缩包解压即可

在这里插入图片描述

2.配置环境变量

在环境变量里面,path里面加上这个路径
在这里插入图片描述

可以输入adb version来检查
在这里插入图片描述

【用手机数据线将手机和电脑连接起来】

3.打开手机开发者模式(关于–点击版本号)

4.进入开发者模式后,打开usb调试

5.把adb相关的调试功能都设置为允许

在这里插入图片描述

记得授权(如果不弹出该窗口,就多插拔几次数据线,然后或者把usb的调试开关,开关几次,多试几次)

6.在命令行里输入 adb shell ,查看是否能正常运行

在这里插入图片描述

想要退出的话,输入exit

在这里插入图片描述


拓展面试题之什么是adb?

adb全称为Android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。是一个安卓端的手机调试终端。

1*. adb devices

查看当前连接的设备以及唯一设备号【deviceid】(连接计算机的Android设备或者模拟器)。
这个号码是全世界独一无二的,只属于你的这个手机,这个设备

在这里插入图片描述

2*.adb install

adb install <apk文件路径>
将指定的apk安装到设备上,安装的apk包会放在/data/app目录下。
几个参数:
-r 强制安装
-d(真机,多个设备中只有一个真机时适用)
-e(模拟器,多个设备中只有一个模拟器时适用)
-s(指定设备,后接序列号)
adb –s 44a188f9 install –r test.apk(其中44a188f9即序列号(设备号),通过adb devices可获取)

3*.adb uninstall

adb uninstall <apk包名>
adb uninstall –k <apk包名>
-k参数为卸载软件时保留配置和缓存文件
Ps:adb shell pm list packages 查看手机上所有的包名

4.adb reboot 重启android设备

5*.adb shell

通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。(因为Android本质内核就是linux)
如果只想执行一条shell命令,就可以采用:adb shell [linux命令]
在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。

6.adb shell su

前提手机已经root。获取adb shell的root权限。
使用su提权,用户命令提示符有$变成#,如果手机没有root,会提示su:permission denied。

7*.adb shell ps/top

查看当前终端中的进程信息,如pid等。

8.adb pull 和 adb push

adb pull <设备中的文件路径> <本地路径>:从模拟器或设备中复制文件到本地。
adb push <本地文件路径> <设备中的路径>:将本地文件或目录复制到设备或模拟器。
这里还涉及到一个权限的问题,在后续再作介绍。

9*.adb logcat

查看手机端本地的日志
可以通过过滤来查看指定信息,过滤指定字符串
adb logcat | grep MyApp
也可以通过后面跟优先级来仅查看指定错误日志优先级的日志
adb logcat *:W
//显示所有优先级大于等于“warning”的日志
//优先级是下面的字符,顺序是从低到高:
V — 明细 verbose(最低优先级) D — 调试 debug I — 信息 info
W — 警告 wam E — 错误 error F — 严重错误 fatal S — 无记载 silent
输出最近的10行日志 adb logcat -t 10
清空日志缓存 adb logcat -c
输出缓存日志 adb logcat -d

10*.adb shell monkey

跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android app的稳定性。
如下为测试腾讯新闻apk的一个简单实例:
在这里插入图片描述

说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。
-p <apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
-v 用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。个包。
–throttle <毫秒数> 指定用户操作(事件)间的时延。
–ignore-crashes 指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。
–ignore-timeouts 当应用程序发生ANR错误(无响应)时,Monkey依然会发送事件,直到事件计数完成。
第2个-s,用于指定伪随机数。没什么用
最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。

">输出测试结果到D:\monkeylog.txt
终止一个monkey命令可以用kill
kill用来中止一个进程。比如我们在跑monkey的时候,怎么强制关闭monkey呢,可以用kill <monkey进程PID>另开启一个cmd,找到monkey的pid号,然后杀掉即可。

在这里插入图片描述


Adb常见面试题

1.有用过adb工具吗?

说法一:之前在公司有使用过,但是用的不多,一些基础的都用过。像找crash日志的时候会用到。

2.都用过哪些adb命令?

比如adb shell ,adb logcat ,adb monkey等等
主要还是使用adb命令来看系统日志。不过后面我们开发为了方便就直接把crash日志写死到某个文件中了。这样后面找起来就简单多了。

3.adb之前在工作中都是怎么用的?

使用adb命令完成对Android手机的操作,比如下载卸载apk,或者查询devicedid,还有查询手机系统进程(adb shell ps ),杀死进程(adb shell kill xxxx)等等.
有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志,也会用adb命令来看。
比如://格式1:打印默认日志数据 adb logcat
//格式2:需要打印日志详细时间的简单数据 adb logcat -v time
//格式3:需要打印级别为Error的信息 adb logcat *:E
//格式4:需要打印时间和级别是Error的信息 adb logcat -v time *:E
//格式5:将日志保存到电脑固定的位置,比如D:\log.txt adb logcat -v time >D:\log.txt

4.有跑过monkey命令?有写过monkey脚本吗?Monkey有什么用?

之前有做过monkey自动化的测试,简单做过一些。我们之前app在发版本前都会进行一轮monkey测试,通过Monkey程序模拟用户触摸屏幕、滑动、按键等操作来对设备上的程序进行稳定性测试。
常见的命令比如:
Adb shell monkey -p 包名 -throttle间隔时间 -运行次数 -保存结果
大概是这样的
Monkey还能测试内存泄露,能够看一下测试的app会不会出现内存持续增长,不过还需要配合内存检测工具来监控内存,之前公司有见我们组长用过。

5.Monkey测试的优点和缺点?

优点:
1、使用简单
2、节省了重复性操作的时间
3、随机输入可能会发现一些平常意想不到的缺陷。
Monkey虽然可以根据一个指定的命令脚本发送按键消息,但其不支持条件判断,也不支持读取待测界面的信息来执行验证操作。
缺点:
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件流数据流是随机的,不能进行自定义。

6.什么是手机Monkey测试?如何使用Monkey测试?

Monkey是AndroidSDK提供的一个命令行工具,可以简单,方便地运行在任何版本的Android模拟器和实体设备上。Monkey会发送随机的用户事件流,适合对app做压力测试。主要目的就是为了测试app是否会Crash(闪退/崩溃)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1916840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Anaconda下载pytorch常见问题

1.问题一 安装完Anaconda后&#xff0c;输入conda命令&#xff0c;出现 conda不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 分析原因&#xff1a;未配置环境到系统变量 解决方法&#xff1a;将Anaconda安装路径和Anaconda目录下的Scripts文件的路径配…

本地部署,GFPGAN: 实用的面部修复算法

目录 什么是 GFPGAN&#xff1f; 技术原理 主要功能 应用场景 本地安装 运行结果 结语 Tip&#xff1a; 在图像处理和计算机视觉领域&#xff0c;面部修复是一个重要且具有挑战性的研究方向。随着深度学习技术的不断进步&#xff0c;许多新的算法被提出&#xff0c;用于…

Linux笔记之使用系统调用sendfile高速拷贝文件

Linux笔记之使用系统调用sendfile高速拷贝文件 code review! 文章目录 Linux笔记之使用系统调用sendfile高速拷贝文件sendfile 性能优势sendfile 系统调用优点&#xff1a;缺点&#xff1a; cp 命令优点&#xff1a;缺点&#xff1a; 实际测试&#xff1a;拷贝5.8个G的文件&a…

《Windows API每日一练》9.1.5 自定义资源

自定义资源&#xff08;Custom Resources&#xff09;是在 Windows 程序中使用的一种资源类型&#xff0c;用于存储应用程序特定的数据、图像、音频、二进制文件等。通过自定义资源&#xff0c;开发者可以将应用程序所需的各种资源文件集中管理和存储&#xff0c;便于在程序中访…

开源可视化Flutter图表库:Graphic

Graphic&#xff1a;用Graphic绘制数据的无限可能- 精选真开源&#xff0c;释放新价值。 概览 Graphic&#xff0c;这个基于Flutter的图表库&#xff0c;以其源自《The Grammar of Graphics》的灵感&#xff0c;为数据可视化提供了一种全新的方法。它不仅仅是一个工具&#xf…

安全策略与用户认证综合实验

一、实验拓扑 二、实验需求 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器,仅能ping通10.0.3.10 4,办公区…

【运维】docker批量删除临时镜像(两种方式)

docker批量删除Tag<none>的临时镜像 在开发的时候&#xff0c;需要经常发布开发包&#xff0c;在使用docker build构建镜像的时候&#xff0c;同一个版本经常会使用相同tag&#xff0c;频繁打包一段时间后&#xff0c;本地会出现很多Tag<none>的临时镜像&#xff…

WordPress知识付费系统+自动采集插件

采集功能&#xff1a; 1.支持分类替换 将主站同步过来的文章分类进行替换 2.支持自定义文章作者&#xff08;选择多个作者则同步到的文章作者将会随机分配&#xff09; 3.支持添加黑名单分类 添加后 如果同步过来的文章包含黑名单分类将不会发布文章 4.自动检测同步&#xf…

禁止使用存储过程

优质博文&#xff1a;IT-BLOG-CN 灵感来源 什么是存储过程 存储过程Stored Procedure是指为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户可通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff09;来调用执行。 …

wifi ping ip地址可以但是域名失败

需求&#xff1a; 当连接上wifi之后获取&#xff0c;能正常获取IP并且能ping ip地址&#xff0c;但是不能ping域名&#xff0c;比如ping www.baidu.com 会显示坏地址 解决&#xff1a; 在/etc/resolv.conf中添加域名即可

NLP入门——词袋语言模型的搭建、训练与预测

卷积语言模型实际上是取了句子最后ctx_len个词作为上下文输入模型来预测之后的分词。但更好的选择是我们做一个词袋&#xff0c;将所有分词装在词袋中作为上下文&#xff0c;这样预测的分词不只根据最后ctx_len个分词&#xff0c;而是整个词袋中的所有分词。 例如我们的序列是&…

以太网的演变之路:技术进步与应用拓展

最初的以太网是由美国施乐&#xff08;Xerox&#xff09;公司的Palo Alto研究中心&#xff08;简称为PARC&#xff09;于1975年研制成功的。以太网从标准以太网&#xff08;10Mbit/s&#xff0c;也称为传统以太网&#xff09;开始逐步在有线局域网市场中占据了统治地位&#xf…

禁用windows的语音识别快捷键win+ctrl+s

win11组合键winctrls会弹出语音识别提示&#xff0c;即使到设置里禁用了语音识别也没用 解决办法&#xff1a;安装PowerToys&#xff0c;通过“键盘管理器”-“重新映射快捷键”禁用 PowerToys是微软自己的工具&#xff0c;不用担心安全问题&#xff0c;下载地址&#xff1a;h…

游戏视频是后期配音好还是边录边配 游戏视频怎么剪辑制作才能火 视频剪辑免费软件

游戏视频后期配音是先配还是先剪&#xff1f;游戏视频后期配音没有统一的准则&#xff0c;可以先配&#xff0c;也可以后配&#xff0c;主要是根据内容而定。游戏视频剪辑在游戏玩家中十分流行&#xff0c;那么&#xff0c;游戏视频怎么剪辑制作&#xff1f;下面让我们以具体的…

医院门诊预约挂号小程序模板源码

医院门诊预约挂号小程序模板源码,主要有&#xff1a;绿色的医院住院办理&#xff0c;门诊预约挂号微信小程序页面模板。包含&#xff1a;办卡绑定、快速办理预约挂号、门诊缴费、住院服务、医院信息、个人中心、添加就诊人、找医生等等。 医院门诊预约挂号小程序模板源码

zookeeper的shell操作

一&#xff1a;启动拽库的shell命令行 zkCli.sh -server localhost:2181 退出&#xff1a;quit 二&#xff1a;查询所有的命令 help 三&#xff1a;查询对应的节点 --查询zk上的根节点 ls / ls /zookeeper 四&#xff1a;查询对应节点的节点信息&#xff08;节点的元数据&a…

读人工智能全传09神经网络

1. 机器学习 1.1. 人们对人工智能的态度发生突如其来的巨大变化&#xff0c;是由一项核心人工智能技术——机器学习的快速发展所推动的 1.1.1. 机器学习是人工智能的一个分支领域&#xff0c;但在过去60年的绝大部分时间里&#xff0c;它一直在一条独…

MySQL 数据库支持存储emoji表情

当你通过node.js&#xff0c;往mysql存储emoji表情的时候&#xff0c;可能会遇到报错&#xff1a; code: ‘ER_TRUNCATED_WRONG_VALUE_FOR_FIELD’, errno: 1366, sqlMessage: “Incorrect string value: ‘\xF0\x9F\x8D\x94’ for column ‘nick_name’ at row 1”, sqlState…

大数据基础:Hadoop之MapReduce重点架构原理

文章目录 Hadoop之MapReduce重点架构原理 一、MapReduce概念 二、MapReduce 编程思想 2.1、Map阶段 2.2、Reduce阶段 三、MapReduce处理数据流程 四、MapReduce Shuffle 五、MapReduce注意点 六、MapReduce的三次排序 Hadoop之MapReduce重点架构原理 一、MapReduce概…

微积分-导数6(隐式导数)

隐式导数 前面我们学了如何求这些方程的导数&#xff1a; y x 3 1 or y x sin ⁡ x y \sqrt{x^31} \quad \text{or} \quad y x\sin x yx31 ​oryxsinx 但是如果是下面的方程&#xff0c;又该如何求导呢&#xff1f; x 3 y 3 6 x y x^3 y^3 6xy x3y36xy 这个方程的图…