导图社区 《精通移动App测试实战》笔记思维导图
《精通移动App测试实战》思维导图,阅读笔记,知识摘要,包含Android系统基础内容介绍,Junit框架基础,ADB命令、Monkey工具等。
编辑于2023-11-03 10:51:14《精通移动App测试实战》
第1章 Android系统基础内容介绍
系统架构
应用程序层
应用程序框架层
系统运行库层
Linux内核层
第2章 Junit框架基础
第3章 ADB命令
Android Debug Bridge
ADB相关指令
adb devices
查看设备的相关信息
第一列为设备的序列号
的第二列为设备的状态信息
device状态
设备或模拟器已连接到adb服务器上
offline状态
设备或模拟器没有连接到adb服务器或者没有响应
no device状态
没有物理设备或者模拟器连接
adb install
-s
指定设备
adb -s 物理手机设备序列号/手机模拟器设备序列号 install 安装包路径
-r
覆盖原来安装的软件并保留数据
adb uninstall
-s
指定设备
adb -s 物理手机设备序列号/手机模拟器设备序列号 uninstall 应用的包名
-k
保留卸载软件的配置和缓存文件
adb -s 物理手机设备序列号/手机模拟器设备序列号 shell pm uninstall -k 应用的包名
adb pull
将设备中文件传输到电脑中
adb pull 设备中文件路径 电脑中路径
-s
指定设备
adb -s 物理手机设备序列号/手机模拟器设备序列号 pull 设备中文件路径 电脑中路径
adb push
将电脑中文件传输到设备中
adb push 电脑中文件路径 设备中路径
-s
指定设备
adb -s 物理手机设备序列号/手机模拟器设备序列号 push 电脑中文件路径 设备中路径
adb shell
支持常见的Linux命令,保存在/system/bin文件下
例adb shell ls
adb shell
su root
cd /data/data
ls
查看手机安装了那些应用,展示的是应用包名
adb shell dumpsys battery
查看电池电量的相关信息
AC powered:flase
是否连接电源供电
flase表示没有使用电源供电
USB powered:true
是否使用USB供电
true表示使用USB供电
status:5
电池充电状态
5表示满电
health:2
电池的健康状态
2表示电池的状态为良好
level:100
当前剩余的电量信息
100%表示满电
scale:100
电池电量的最大值
通常该值都是100,因为电池电量是按百分比显示
voltage:4332
当前电池的电压
4322毫伏(mv)
temperature:314
当前电池的温度
31.4度,单位为0.1度
technology:Li-ion
电池使用的技术
Li-ion表示锂电池
adb shell dumpsys wifi
查看无线网络的信息
可加入"|more"参数,当输出信息在显示满一页时就暂停输出,可按空格继续显示下页,或按“Q”停止显示后续输出信息
五种WiFi连接状态
disabled已关闭
disabling正在关闭中
enabled已启用
enabling正在启动中
unknown未知
adb shell dumpsys power
查看电源管理的相关信息
Windows系统加入"findstr"或"grep"过滤
Linux系统加入"grep"
mScreenOffTimeoutSetting屏幕关闭时间,单位毫秒
adb shell dumpsys telephony.registry
查看电话相关信息
mCallState
呼出状态
0:待机状态
1:来电尚未接听状态
2:电话占线
mCallIncomingNumber
最近一次来电的电话号码
mServiceState
服务的状态
0:正常使用状态
1:电话没有连接到任何电信运营网络
2:电话只能拨打紧急呼叫号码
3:电话已关机
mSignalStrength
信号强度信息
mMessageWaiting
是否在等待无线电消息
mCallForwarding
是否启用了呼叫转移
mDataActibity
无线数据通话情况
0:没有通话
1:正在接受IP PPP信号
2:正在发送IP PPP信号
3:正在发送和接受IP PPP信号
mDataConnectionState
无线数据连接情况
0:无数据连接
1:正在创建数据连接
2:已连接
3:挂起状态,已经创建号连接,但是IP数据通信暂时无法使用
mDataConnectionPossible
是否有数据连接
mDataConnnectionReason
数据连接的原因
mDataConnectionApn
APN(Access Point Name)接入点名称
mDataConnectionLinkProperties
数据连接的链路属性
mDataConnectionLinkCapabilities
数据链路连接的能力
mCellLocation
基站相关信息
registrations
登记记录数
adb shell cat /proc/cpuinfo
/proc分区保存了系统各种实时信息,如CPU、内存等
查看CPU硬件的相关信息
adb shell cat /proc/meminfo
查看内存的相关信息
adb shell cat /proc/iomem
查看I/O内存分区的相关信息
adb shell cat /system/build.prop | findstr "ro.product.model"
获取手机型号信息
adb shell cat /proc/cpuinfo | findstr "Processor"
获取手机处理器信息
adb shell cat /proc/meminfo | findstr "MemTotal"
获取手机内存信息
adb shell dumpsys window | findstr "Display"
获取手机屏幕分辨率的相关信息
adb shell getprop ro.build.version.release
获取手机系统版本的相关信息
adb shell cat /proc/version
获取手机内核版本的相关信息
adb shell getprop gsm.operator.alpha
获取手机运营商的相关信息
adb shell getprop gsm.network.type
获取手机网络类型的相关信息
adb shell dumpsys iphonesubinfo | findstr "Device ID"
获取手机串号的相关信息
adb shell df
获取手机Android系统各个分区的相关信息
adb shell dmesg
输出Linux内核的环形缓冲区信息,获取系统架构、CPU、挂载的硬件、RAM等多个运行级别大量的系统信息
常用语设备故障的诊断
提示权限不足
adb shell
su root
dmesg > /sdcard/log.txt
重定向
adb shell dumpstate
获取手机Android系统当前状态的相关信息
包括系统构建的版本信息、网络相关信息、系统内核的相关信息、正常运行时间信息、内存使用情况信息、CPU使用情况信息、进程的相关信息、正在运行的应用/服务列表相关信息、系统中已安装的应用包相关信息
adb get-serialno
获取设备的序列号
adb get-state
查看设备的当前状态
3中状态
device状态
offline状态
no device状态
adb logcat
查看和跟踪系统日志缓冲区的信息
日志的等级
V
冗余级别
D
调试级别
I
信息级别
W
警告级别
E
错误级别
adb logcat *:W
输出等级大于“警告”级别的日志,即:W、E
日志有多个循环缓冲区
radio
查看包含无线/电话相关的缓冲区消息
events
查看时间相关的消息
main
查看主缓冲区相关的消息
adb logcat -b main
查看主缓冲区
adb bugreport
查看Android启动过程的日志信息,及启动后的系统状态,包括进程列表、内存信息、VM信息等
adb jdwp
列出指定设备的JDWP相关的进程ID
JDWP:Java Debug Wire Protocol,即JAVA调试器无线协议,它定义了调试器(Debugger)和被调试的JAVA虚拟机(Target VM)之间的通信协议
JDWP仅定义了数据传输的格式,未指定具体的传输方式
adb start-server
启用adb服务
adb kill-server
关闭adb服务
adb forward
将本机的端口重定向到设备端口上
adb forward tcp: 2211 tcp: 5566
所有发往2211端口的数据将被转发到5566端口
am
全称:Activity Manager
可用来模拟各种系统的行为
例:adb shell am start -n com.sec.android.app.camera/.Camera 启动三星手机的照相功能
例:adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 5 --ei "sacle" 100 向手机发送模拟手机低电量的信息(发送了剩余5%电量的信息,等几十秒后自动恢复到实际)
pm
全称:package manager
可用来模拟android行为或者查询设备上的应用等
例:adb shell pm list packages 打印所有包列表信息
例:adb shell pm list packages -f 查看其关联的信息,即应用apk的位置跟对应的包名
其他参数
-d
查看disabled packages
-e
查看enabled package
-s
查看系统package
-3
查看第三方package
-i
查看package的对应安装者
-u
查看曾被卸载过的package
Telnet
开启与启用
控制面板-程序与功能-打开或关闭Windows功能-Telnet客户端
控制台输入“Telnet”启用,按“quit”退出
help查看支持的命令
gsm call 13888888888
以13888888888给设备打电话
sms 13888888888 hi,tester
给设备发送一条“hi,tester”的短信
network
help network
查看其帮助信息
help 命令
查看命令相关的用法
network status
查看网络状态的信息
包括上行、下行的速度和最大、最小延时的相关信息
network speed
动态设定设备的网速
network speed 14.4:20
设定上行速度为14.4Kb,下行速度为20Kb
network speed 后可加入如下值
gsm
GSM/CSD;UP:14.4,DOWN:14.4
hscsd
HSCSD;UP:14.4,DOWN:43.2
gprs
GPRS;UP:40.0,DOWN:80.0
edge
EDGE/EGPRS;UP:118.4,DOWN:236.8
umts
UMTS/3G;UP:128.0,DOWN:1920.0
hsdpa
HSDPA;UP:348.0,DOWN:14400.0
full
无限制;UP:0.0;DOWN:0.0
<num>
设置一个上行和下行公用的明确速度
<up>:<down>
分别为上行和下行设置明确的速度
network delay
动态的设定设备的网络延时
network delay 5 设定网络延时为5毫秒
network capture start/stop 文件名
动态的捕获设备的网络数据包
network capture start 文件名
开始捕获数据包
network capture stop 文件名
停止捕获数据包
windows scale 0.5
将模拟器尺寸缩小到原来的二分之一
第4章 Monkey工具
adb shell monkey
-p
指定运行的包
adb shell monkey -p 包名 次数
向XX包名的app发送xx次随机时间
-v
指定打印信息的详细级别,每多含1个“-v“就增加一个信息的详细级别
1个“-v”:默认信息的详细级别为0,会打印测试执行时的一些发送给被测试的Activity的事件
2个“-v”:默认信息的详细级别为1,打印的信息更全面,增加了哪些Activity被选中,将在信息中被输出出来
3个“-v”:默认信息的详细级别为2,打印的信息最全面,不仅增加了哪些Activity被选中,哪些应用已经安装了但是却没有被选中的信息也被输出出来
adb shell monkey -v -v -v -p 包名 次数
没有指定随机种子(-s参数),默认使用的种子时0(即seed=0)
事件相关参数表
-s <seed>
伪随机数生成器的种子值,如果用相同的随机种子值再次运行相同的Monkey命令时,前后两次执行将会生成相同的事件序列
--throttle <milliseconds>
设定在两个事件之间插入一个固定延时,它可以减缓Monkey的执行速度。如果不指定该项,Monkey将不会被延时,事件将尽快可能快地生成和发送消息
adb shell monkey -p 包名--throttle 3000 100
间隔为3000ms
--pct-touch <percent>
设定触屏事件生成的百分比,触屏事件是一个有手指按下、抬起事件的手势
adb shell monkey --pct-touch 50 -p 包名--throttle 3000 100
触屏事件占比为50%
--pct-motion <percent>
设定滑动事件生成的百分比,滑动事件是一个现在某个位置手指按下,滑动一段距离后再抬起手势的手势
adb shell monkey --pct-motion 50 -p 包名--throttle 3000 100
滑动事件占比50%
--pct-trackball <percent>
设定轨迹球事件生成的百分比。轨迹球事件是包含一系列随机移动和单机事件的事件
adb shell monkey --pct-trackball 50 -p 包名--throttle 3000 100
轨迹球的事件占比为50%
--pcet-nav <percent>
设置基本的导航事件的百分比,基本导航事件是模拟方向性设备输入向上/下/左/右的事件
adb shell monkey --pct-nav 50 -p 包名--throttle 3000 100
导航事件占比为50%
--pct-majornav <percent>
设定主要导航事件的百分比,主要导航事件通常会导致UI产生回馈事件,如:单机BACK键、MENU键
adb shell monkey --pct-majornav 50 -p 包名--throttle 3000 100
主要导航事件占比为50%
--pct-syskeys <percent>
设定系统按键事件的百分比,系统按键是指这些按键通常被保留,由系统使用,如HOME、BACK、拨号、挂断、及音量控制键
adb shell monkey --pct-syskeys 50-p 包名--throttle 3000 100
系统按键事件占比为50%
--pct-appswitch <percent>
设定启动活动事件的百分比。在随机的一定间隔后,Monkey就会执行一个startActivity()函数尽可能多的覆盖包中全部活动
adb shell monkey --pct-appswitch 50 -p 包名--throttle 3000 100
启动活动事件占比为50%
--pct-anyevent <percent>
设定其他类型事件的百分比,如普通的按键消息、不常用的设备按钮事件等
adb shell monkey --pct-anyevent 50 -p 包名--throttle 3000 100
其他类型事件占比为50%
约束条件
-p <允许的包名列表>
设定一个或几个包,Monkey将只允许系统启动这些包里的活动。要指定多个包时,需要使用多个“-p”选项,每个“-p”选项只能用于一个包
-c <意图的分类>
指定意图的分类,这样Monkey只会启动可以处理这些种类的意图的活动。如果没有设置这个选项,Monkey则只会启动带有Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_Monkey。与“-p”参数类似,要指定多个类别,需要使用多个“-c”选项,每个"-c"选项只能用于一个类别
调试选项
--dbg-no-events
若指定该参数,Monkey将会执行初始启动,进入到一个测试Activity,不会再进一步生成事件。为了得到最佳结果,把它与"-v"、"-p"和"--throttle"等参数一起使用。并让Monkey运行30s或更长时间,从而能够让我们可以观测到应用程序所调用的包与包之间的切换过程
--hprof
若指定了该参数,Monkey会在发送事件序列的前、后,生成性能分析报告。通常会在"data/misc"目录下生成一个5MB左右大小的文件
--ignore-crashes
通常情况下,Monkey会在待测应用程序崩溃或发生任何异常后停止运行,若指定了该参数,则Monkey将会在产生异常后,继续向系统发送事件,知道指定的事件消息全部完成为止
adb shell monkey -p 包名--ignore-crashes 100
--ignore-timeouts
通常情况下,当应用程序发生任何超市错误(如"Application Not Responding"对话框)时,Monkey将停止运行。若指定了该参数,则Monkey将会在产生错误信息后,继续向系统发送事件,知道指定的事件消息全部完成为止
adb shell monkey -p 包名--ignore-timeouts 100
--ignore-security-exceptions
通常情况下,Monkey会在被测应用程序发生权限方面的错误时停止运行。若指定了该参数,则Monkey将继续向系统发送事件,知道指定的事件消息全部完成为止
adb shell monkey -p 包名--ignore-security-exceptions 100
--kill-process-afer-error
通常情况下,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,它将会通知系统停止发生错误的进程
注:当Monkey正常执行完毕后,它不会关闭所启动的应用,设备依然保留其最后接收到的消息状态,所以建议大家在执行命令后为保持应用的初始状态,徐守东或者脚本程序将已打开的应用进行关闭
--monitor-native-crashes
监视由Android C/C++代码部分引起的崩溃,若同时指定了--kill-process-after-error参数,则整个系统将会关机
--wait-dbg
启动Monkey后,先中断其运行,等待调试器和它相连接
adb shell monkey --ignore-crashes --ignore-timeouts --kill-process-after-error --ignore-security-exceptions --throttle 1000 -v -v -v -s 5 100000
向系统发送100000此随机事件,各个随机事件的间隔为1000ms,它的种子是5,测试过程中忽略相关的安全、超时、崩溃等异常