软件测试学习之-ADB命令
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(闪退/崩溃)
相关文章:
软件测试学习之-ADB命令
ADB命令 adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统,adb就派上用场啦! Android程序的开发通常需要使用到一…...
Redis的入门导读(一)
目录 单机架构 分布式系统 个人总结 一.Redis的介绍 二.Redis特性 三.Redis的快原因 四.Redis的应用场景 五.Redis的总结 由于Redis和分布式系统息息相关,因此我们需要先了解一下,分布式系统! 接下来就是分布式系统的演化过程。 单…...
H5与小程序:两者有何不同?
H5,即HTML5,是构建Web内容的一种语言描述方式,也是互联网的下一代标准,被认为是互联网的核心技术之一。HTML5是在HTML4.01的基础上进行了一定的改进后的规范,用户在使用任何手段进行网页浏览时看到的内容原本都是HTML格…...
计算机视觉、目标检测、视频分析的过去和未来:目标检测从入门到精通 ------ YOLOv8 到 多模态大模型处理视觉基础任务
文章大纲 计算机视觉项目的关键步骤计算机视觉项目核心内容概述步骤1: 确定项目目标步骤2:数据收集和数据标注步骤3:数据增强和拆分数据集步骤4:模型训练步骤5:模型评估和模型微调步骤6:模型测试步骤7:模型部署常见问题目标检测入门什么是目标检测目标检测算法的分类一阶…...
7月10日学习打卡,环形链表+栈OJ
前言 大家好呀,本博客目的在于记录暑假学习打卡,后续会整理成一个专栏,主要打算在暑假学习完数据结构,因此会发一些相关的数据结构实现的博客和一些刷的题,个人学习使用,也希望大家多多支持,有…...
鸿蒙语言基础类库:【@ohos.util.TreeSet (非线性容器TreeSet)】
非线性容器TreeSet 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 T…...
freemarker生成pdf,同时pdf插入页脚,以及数据量大时批量处理
最近公司有个需求,就是想根据一个模板生成一个pdf文档,当即我就想到了freemarker这个远古老东西,毕竟freemarker在模板渲染方面还是非常有优势的。 准备依赖: <dependency><groupId>org.springframework.boot</gr…...
勇攀新高峰|暴雨信息召开2024年中述职工作会议
7月8日至9日,暴雨信息召开2024年中述职工作会议,总结回顾了上半年的成绩和不足,本次会议采用线上线下的方式举行,公司各部门管理人员、前台市场营销人员参加述职,公司领导班子出席会议。 本次述职采取了现场汇报点评的…...
C++:filter2D函数简要概述
OpenCV中的filter2D函数是一个非常强大的工具,用于对图像进行卷积操作,从而应用各种线性滤波器。这个函数能够处理图像中的每个像素,通过将其与指定的卷积核(或称为滤波器)进行卷积运算,来修改图像的特性。…...
Postman使用教程【项目实战】
目录 引言软件下载及安装项目开发流程1. 创建项目2. 创建集合(理解为:功能模块)3. 设置环境变量,4. 创建请求5. 测试脚本6. 响应分析7. 共享与协作 结语 引言 Postman 是一款功能强大的 API 开发工具,它可以帮助开发者测试、开发和调试 API。…...
微软Phi-3:小型而强大的AI模型解析与实战指南
微软Phi-3:小型而强大的AI模型解析与实战指南 引言 随着人工智能技术的飞速发展,小型而高效的AI模型逐渐成为研究与应用的新热点。微软研究院推出的Phi-3系列模型,以其卓越的性能和高效的成本效益,在AI领域引起了广泛关注。本文…...
Python 获取 SQL 指纹和 HASH 值
前言 本文介绍一个提取 SQL 指纹的方法,就是将 SQL 语句的条件转换为 ?可用于脱敏和 SQL 聚类分析的场景。 1. 工具安装 这里用到的工具,就是 pt 工具集中的 pt-fingerprint 含在 Percona Toolkit 中,安装方法可参考 Percona T…...
基于OpenCv的快速图片颜色交换,轻松实现图片背景更换
图片颜色更换 图片颜色转换 当我们有2张图片,很喜欢第一张图片的颜色,第2张图片的前景照片,很多时候我们需要PS进行图片的颜色转换,这当然需要我们有强大的PS功底,当然小编这里不是介绍PS的,我们使用代码完全可以代替PS 进行图片的颜色转换 图片颜色转换步骤: 步骤…...
在Linux下直接修改磁盘镜像文件的内容
背景 嵌入式Linux系统通常在调试稳定后,会对磁盘(SSD、NVME、SD卡、TF卡)做个镜像,通常是.img后缀的文件,以后组装新设备时,就将镜像文件烧录到新磁盘即可,非常简单。 这种方法有个不便之处&a…...
ASP.NET Core----基础学习03----开发者异常页面 MVC工作原理及实现
文章目录 1. 开发者异常页面(1)Startup.cs 页面的基础配置(2)自定义显示报错代码的前后XX行 2. MVC 的原理3. MVC 的实现4.默认路由路径5.返回Json字符串 1. 开发者异常页面 (1)Startup.cs 页面的基础配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…...
jvm 07 GC算法,内存池,对象内存分配
01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数1, 当引用失效时,计数-1,如果计数0,表示没有其他对象引用,…...
ComfyUI入门教程
本文主要介绍了通过源码运行comfyui,默认例子介绍,节点管理器的使用,以及界面汉化。可多参考开源工作流,多加实践,从而掌握comfyui操作。 1.源码运行comfyui 执行命令python main.py如下: 安装numpy 1.x最…...
Flutter TabBar与TabBarView联动及获取当前点击栏目索引
TabBar还有TabBarView都是谷歌flutter官方组件库——Material组件库提供的组件,其中TabBar用于导航切换,TabBarView则是配合其切换显示的对应的视图,官网参考地址:TabBarView class - material library - Dart API。 实现一体联动…...
【区块链+跨境服务】跨境出口电商溯源 | FISCO BCOS应用案例
当前跨境出口电商已成为带动我国外贸发展的中坚力量,尤其疫情特殊时期,成为推动经济增长的一个重要组成 部分。但是跨境出口电商流程长、环节多,且需辗转于不同的服务商以及国家之间,监管与定位也相对困难,容 易出现诸…...
记录一次mysql死锁问题的分析排查
记录一次死锁问题的分析排查 现象 底层往kafka推送设备上线数据应用层拉取设备上线消息,应用层有多个消费者并发执行将设备上线数据同步数据库表pa_terminal_channel日志报:(Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: …...
【UE5.1 角色练习】16-枪械射击——瞄准
目录 效果 步骤 一、瞄准时拉近摄像机位置 二、瞄准偏移 三、向指定方向射击 四、连发 效果 步骤 一、瞄准时拉近摄像机位置 打开角色蓝图,在事件图表中添加如下节点,当进入射击状态时设置目标臂长度为300,从而拉近视角。 但是这样切…...
04OLED简介和调试方法
OLED简介和调试方法 调试方式串口调试显示屏调试其他调试方法总结: OLED简介硬件电路OLED驱动函数 keil调试模式进入方法keil调试界面窗口简单功能说明更加强大的功能 调试方式 电脑想看什么变量可以直接打印到屏幕,但是单片机很多时候由于成本和电路结构…...
“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“
目录 1.前言 2.准备工作 2.1.环境信息 2.2.关闭SELinux和firewalld 3.安装Nginx 3.1.运行以下命令,安装Nginx 3.2.运行以下命令,查看Nginx版本 4.安装MySQL 4.1.更新秘钥 4.2.配置MySQL的YUM仓库 4.3.安装MySQL 4.4.查看MySQL版本 4.5.启动…...
院内导航:如何用科技破解就医找路难题
自2019年开始“院内导航”被纳入医院智慧服务评估体系以来,到2023年改善就医服务升级的部署,每一步都见证了我国医疗卫生体系向智能化、人性化迈进的坚实步伐。 面对庞大复杂的医院环境与日益增长的就诊需求,如何让患者在茫茫人海中迅速找到就…...
C++基础篇(1)
目录 前言 1.第一个C程序 2.命名空间 2.1概念理解 2.2namespace 的价值 2.3 namespace的定义 3.命名空间的使用 4.C的输入输出 结束语 前言 本节我们将正式进入C基础的学习,话不多说,直接上货!!! 1.第一个C程…...
云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析
随着科技的快速发展,视频监控技术已经广泛应用于各个领域,如公共安全、商业管理、教育医疗等。与此同时,视频转码技术作为视频处理的关键环节,也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…...
xcode配置swift使用自定义主题颜色或者使用RGB或者HEX颜色
要想在xcode中使用自定义颜色或者配置主题色,需要在Assets中配置,打开Assets文件,然后点击添加Color Set: 输入颜色的名称,然后选中这个颜色,会出现两个颜色: Any Appearance表示亮色模式下使用…...
相同含义但不同类型字段作为join条件时注意事项
假设表A和表B中都有表示学号的stu_id字段,但该字段在表A和表B中类型分别为bigint和string。当直接通过该字段进行join时,一般情况下可以得到我们预期的结果。 select a.stu_id from a as r join b as l on r.stu_id l.stu_id 但是如果学号长度较长的…...
数据结构(3.8)——栈的应用
栈在括号匹配中的应用 流程图 代码 #include <stdio.h> #include <stdlib.h> #define MaxSize 10typedef struct {char data[MaxSize];int top; } SqStack;// 初始化栈 void InitStack(SqStack* S) {S->top -1; // 初始化栈顶指针 }// 判空 bool StackEmpty(…...
前端面试题35(在iOS和Android平台上,实现WebSocket协议有哪些常见的库或框架?)
在iOS和Android平台上,实现WebSocket协议有许多成熟且被广泛使用的库和框架。下面是一些推荐的选项: iOS 平台 SocketRocket 简介:这是由Facebook开源的库,专门为iOS和Mac OS X设计,提供WebSocket连接的功能。它基于S…...
网站开发背景怎么写/百度外推排名代做
HM9921/HM9924泛海微原厂2.5A内置MOS降压恒流IC支持PWM调光 HM9921/HM9924 是一款高效率,稳定可靠 的高亮度 LED 灯恒流驱动控制芯片,内置 高精度比较器,固定关断时间控制电路, 恒流驱动电路等,特别适合大功率、多个…...
温州网站托管/英文网站建设
实现功能:由每个注册的文档模板获得对应的视图类指针。 1.获得对应文档模板指针 CDocTemplate *pTempl ((CPCApp*)AfxGetApp())->pDocTemplateTest; // pDocTemplateTest为注册的模板 /******************************************************************…...
个人网站如何赚钱/百度推广代理查询
在linux下面,为了保证服务器安全,通常会记录所敲命令的历史记录,但是记录为1000条,并且退出重新登录后,之前的变会没有了,通过编辑/etc/bashrc文件记录历史命令到日志文件下面,并已登录来源IP&a…...
中港海通网站是谁做的/任务放单平台
本文转自网络,对疑问的地方做了修改 官方参考文献:http://www.mongovue.com/tutorials/ MongoVUE 是个比较好用的MongoDB客户端,需要注册,但是可以变成永久使用, 一、基础操作 新增一个连接 进入的界面形如 二、进阶操…...
东莞凤岗网站建设制作/快照关键词优化
浙大版《Python 程序设计》题目集 第2章-14 求整数段和 (15分) 给定两个整数A和B,输出从A到B的所有整数以及这些数的和。 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。 输出格式:…...
可以做英语阅读理解的网站/比较正规的代运营
使用 Spring MVC 时,很多业务场景下 Controller 需要接收日期时间参数。一个简单的做法是使用 String 接收日期时间字符串(例如:2020-01-29),然后在代码中将其转换成 Java 8 的日期时间类型或 java.util.Date 类型。这种方法虽然简单…...