当你还在学习的时候,请继续努力,因为只有努力才会有收获,躺平是没有任何好结果的,唯一的结果就是越来越拉,加油,我们一起努力学习。
这次总结的是(二)移动端(APP)自动化测试-Android应用测试。
CSDN话题挑战赛第2期
参赛话题:学习笔记
一、Android操作系统简介
1、Android操作系统诞生
2、Android操作系统发展历程
3、国内Android发行版
4、Android系统结构
(1)Linux内核
(2)系统运行库层(函数库)
(3)应用程序框架层
(4)应用程序层
5、Android运行虚拟机
二、Android测试常用术语
1、系统碎片化
2、屏幕尺寸
3、分辨率
4、像素
5、网络制式
三、Android应用的构成
1、活动(Activity)
2、服务(Service)
3、广播接收器(Broadcast Receiver)
4、内容提供者(Content Provider)
四、Android测试环境搭建
1、真机环境测试(adt-bundle)
2、第三方模拟器测试
3、Android自带的模拟器测试
4、Android开发环境测试
五、ADB简介及常用命令
1、ADB简介
2、ADB常用命令
2003年10月,安迪·鲁宾等人创建Android公司,并组建Android团队。
2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪·鲁宾成为Google公司工程部副总裁,继续负责Android项目。
2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的源代码 [2-3] 。
2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。
阿童木(AndroidBeta)
发条机器人(Android 1.0)
纸杯蛋糕(Android 1.5)
甜甜圈(Android 1.6)
松饼(Android 2.0/2.1)
冻酸奶(Android 2.2)
姜饼(Android 2.3)
蜂巢(Android 3.0)
冰激凌三明治(Android 4.0)
果冻豆(Jelly Bean,Android4.1和Android 4.2)
奇巧(KitKat,Android 4.4)
棒棒糖(Lollipop,Android 5.0)
棉花糖(Marshmallow,Android 6.0)
牛轧糖(Nougat,Android 7.0)
奥利奥(Oreo,Android 8.0)
派(Pie,Android 9.0)
MIUI、smartisan、Flyme、EMUI
基于Linux2.6内核(进程管理、内存管理、设备驱动、文件系统、网络协议),为Android设备各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、WIFI驱动、电源管理
程序库:C/C++库(底层为运行提供服务)
Android运行库:核心库(提供Java编程语言核心库的大多数功能)
提供构建应用程序可能用的各种API
活动管理者(Activity Manager):控制应用程序生命周期和活动栈的所有方面。
内容提供器(Content Providers):允许程序之间发布和分享数据。
资源管理器(Resource Manager):提供对非代码嵌入资源的访问,如字符串、颜色设置和用户界面布局。
通知管理器(Notification Manager):允许应用程序显示对话框或者通知给用户。
视图系统(View System):一个可扩展的视图集合,用于创建应用程序用户界面。
顶层中有所有的Android应用程序,包括通讯录、浏览器等,所有的应用程序都是使用Java语言编写的。
虚拟机类型 |
DVM(Dalvik VM) |
JVM(Java VM) |
首要差别 |
基于寄存器、编译和运行更快 |
基于栈,编译和运行慢 |
字节码区别 |
执行.dex格式字节码(.class文件的再编译、小) |
执行.class格式字节码 |
运行环境区别 |
一个应用启动都运行一个单独的虚拟机,运行在一个单独的进程中 |
只能运行一个实例(所有应用运行在同一个JVM) |
安卓平台差异化
屏幕对角线的长度(英寸:1英寸=2.54厘米)
屏幕分辨率,屏幕图像的精密度
px(pixels)像素
dip/dp(device independent pixels)设备独立像素
sp(scaled pixels - best for text size)比例像素
GSM、CDMA、3G、4G、5G
(1)与用户交互的界面
(2)生命周期:产生、运行、销毁
调用方法:onCreate(创建)、onStart(激活)、onResume(恢复)、onPause(暂停)、onStop(停止)、onDestroy(销毁)、onRestart(重启)
(1)无界面,启动后在后台运行,直到手机关机为止,但是可以点击停止或强制。
(2)承担大部分的数据处理工作。
(1)用于接收系统或者APP发送的广播事件。
(2)广播:发送消息和接收消息。
(3)原理
广播接收者通过Binder机制在AMS注册;
广播发送者通过Binder机制向AMS发送广播;
AMS根据广播发送者要求,在已注册列表中,寻找合适的广播接收者;
AMS将广播发送到合适的广播接收者相应的消息循环队列中;
广播接收者通过消息循环拿到此广播,并回调onReceive()
(4)特别注意
广播发送者和广播接收者的执行是异步的,即广播发送者不会关心有无接收者接收&也不确定接收者何时才能接收到。
(1)类似于“数据库”,用于存取数据,使一个程序的指定数据集提供给其他应用程序。
(2)只是中间者角色(搬运工),真正存储&操作数据的数据源仍是数据库、文件、xml或网络。
(1)Android手机用USB数据线连接到PC的USB口上。
(2)打开手机的开发者模式(默认未打开),设置->关于手机->版本号->连续点击五次以上会提示已经打开开发者模式。
(3)设置->系统和更新->开发人员选项->打开USB调试,点击确认;打开“仅充电”模式下允许ADB调试,点击确认。
(4)屏幕左边下拉通知栏,点击USB连接通知,选择传输文件MTP。
(5)打开cmd,输入adb devices,若显示设备序列号,则连接成功。
(1)夜神、腾讯手游、iTools、海马、逍遥
(2)功能测试可在模拟器测试
(1)需要搭建Android开发环境
(1)安装和配置JDK环境
(2)ADT工具包解压缩
(3)配置Android环境
配置变量:ANDROID_SDK_HOME
用户名:ANDROID_SDK_HOME
变量值:C:\java_android\adt-bundle-windows-x86_64_20140101\sdk
path:;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;
(1)ADB-Android Debug Brige,起到调试桥作用,让用户在电脑上对手机进行全面的操作。
(2)APK-Android Package,Android安装包,类似于SymbianSis或Sisx文件格式。
(1)adb devices # 列出所有的设备(真机、模拟器)
自动检测服务是否启动,若未启动,则会先启动服务
如果是设备是模拟器的话,需要重新开启一下网络,才能检测到
如果显示* daemon not running; starting now at tcp:5037无法启动,则运行netstat -ano | findstr "5037"查看占用端口的进程,然后开启资源管理器将对应PID的进程结束,再重新运行
(2)adb start-server # 开启adb服务(可在任务管理器的详细信息中查看)
若环境变量已配置,无需手动启动服务。
(3)adb kill-server # 关闭adb服务
(4)adb logcat # 查看log日志信息
V-Verbose (default for
) # 详细(最低优先级) D-Debug (default for '*') # 调试
I-Info # 信息
W-Warn # 警告
E-Error # 错误
F-Fatal # 严重错误
S-Silent (suppress all output) # 静默(最高优先级,绝不会输出任何内容)
adb logcat -c # 清空日志缓存信息,重新开始输出日志信息
adb logcat -d # 打印缓存日志,不会进行阻塞
adb logcat -t n # 打印最近的n行日志,并且不会阻塞
adb logcat -v [format] # 指定日志打印格式
brief(优先级/标签( PID): 日志信息)
color(按颜色区分优先级)(日期 时间 PID TID 优先级 标签: 日志信息)
epoch(以秒为单位的1970/1/1以来的纪元时间)(时间 PID TID 优先级 标签: 日志信息)
long([ 日期 时间 PID: TID 优先级/标签 ]\n 日志信息)
monotonic(以CPU秒为单位的自上次启动以来的时间)(时间 PID TID 优先级 标签: 日志信息)
printable(所有二进制日志记录内容都进行了转义)(日期 时间 PID TID 优先级 标签: 日志信息)
process(优先级( PID) 日志信息 (标签))
raw(日志信息)
tag(优先级/标签: 日志信息)
thread(优先级( PID: TID) 日志信息)
threadtime(默认)(日期 时间 PID TID 优先级 标签: 日志信息)
time(日期 时间 优先级/标签( PID): 日志信息)
uid(如果访问控制允许,显示UID或进程的Android ID)(日期 时间 UID PID TID 优先级 标签: 日志信息)
usec(显示精确到微秒的时间)(日期 时间 PID TID 优先级 标签: 日志信息)
UTC(显示UTC 时间)(日期 时间 UTC PID TID 优先级 标签: 日志信息)
year(将年份添加到日期前)(年份-日期 时间 UTC PID TID 优先级 标签: 日志信息)
zone(本地时区添加到显示的时间)(日期 时间 本地时区 PID TID 优先级 标签: 日志信息)
adb logcat *:E # 打印级别为Error的日志信息
adb logcat | grep "包名" # Linux抓取指定APP的日志
adb logcat | find "包名" # Windows抓取指定APP的日志
adb logcat -v time | find “包名” >.\\logcat.log # 将带时间格式日志中有关某APP的内容输出到当前路径下的log文件中
(5)adb [-s 设备] shell # 进入(指定)手机终端(可直接输入命令),相当于Linux系统
adb shell ls # 查看显示手机当前目录的所有内容
adb shell top # 查看当前手机实时进程
adb shell dumpsys [-t TIMEOUT] [--help | -l | --skip SERVICES | SERVICE [ARGS]] # 查看系统服务
adb shell pm list packages # 查看设备已经安装的APP包名
adb shell am monitor # 运行后随机启动某个应用,可以获取该应用包名
(7)adb install <应用程序(加扩展名)> # 安装应用程序
(8)adb uninstall "包名" # 卸载应用程序
(9)adb push
# 将本地文件推送到远程设备上(真机设备或模拟器) (10)adb pull
# 将远程设备上的文件拉取到本地(PC端)
愿你我都能为中华民族的伟大复兴尽一份绵薄力量,让中华文化的根扎根在中国这片绿水青山之上,让新一代中华儿女传承与发扬!!!
---无名之辈
以上内容均是本人自学,当然是有网上公布的内容,如有冒犯,请留言,立即改正,谢谢!
看完要是觉得对自己有用,动一下您那根金色的会一指禅的右手食指,按一下您的鼠标左键,在对应的那个位置点个赞,亦或者在评论区留下您的绝顶好句,亦或者收藏在您的收藏夹里,再走也不迟嘛!您说要不要得!谢谢您的阅读和赞赏!