? ? ? ? 当你还在学习的时候,请继续努力,因为只有努力才会有收获,躺平是没有任何好结果的,唯一的结果就是越来越拉,加油,我们一起努力学习。
? ? ? ? 这次总结的是(二)移动端(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常用命令
????????一、Android操作系统简介
????????1、Android操作系统诞生
????????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系统最早的版本。
????????2、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)
????????3、国内Android发行版
????????MIUI、smartisan、Flyme、EMUI
????????4、Android系统结构

????????(1)Linux内核
????????基于Linux2.6内核(进程管理、内存管理、设备驱动、文件系统、网络协议),为Android设备各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、WIFI驱动、电源管理
????????(2)系统运行库层(函数库)
????????程序库:C/C++库(底层为运行提供服务)
????????Android运行库:核心库(提供Java编程语言核心库的大多数功能)
????????(3)应用程序框架层
????????提供构建应用程序可能用的各种API
????????活动管理者(Activity Manager):控制应用程序生命周期和活动栈的所有方面。
????????内容提供器(Content Providers):允许程序之间发布和分享数据。
????????资源管理器(Resource Manager):提供对非代码嵌入资源的访问,如字符串、颜色设置和用户界面布局。
????????通知管理器(Notification Manager):允许应用程序显示对话框或者通知给用户。
????????视图系统(View System):一个可扩展的视图集合,用于创建应用程序用户界面。
????????(4)应用程序层
????????顶层中有所有的Android应用程序,包括通讯录、浏览器等,所有的应用程序都是使用Java语言编写的。
????????5、Android运行虚拟机
虚拟机类型 | DVM(Dalvik VM) | JVM(Java VM) | 首要差别 | 基于寄存器、编译和运行更快 | 基于栈,编译和运行慢 | 字节码区别 | 执行.dex格式字节码(.class文件的再编译、小) | 执行.class格式字节码 | 运行环境区别 | 一个应用启动都运行一个单独的虚拟机,运行在一个单独的进程中 | 只能运行一个实例(所有应用运行在同一个JVM) |
?
????????二、Android测试常用术语
????????1、系统碎片化
????????安卓平台差异化
????????2、屏幕尺寸
????????屏幕对角线的长度(英寸:1英寸=2.54厘米)
????????3、分辨率
????????屏幕分辨率,屏幕图像的精密度
????????4、像素
????????px(pixels)像素
????????dip/dp(device independent pixels)设备独立像素
????????sp(scaled pixels - best for text size)比例像素
????????5、网络制式
????????GSM、CDMA、3G、4G、5G

?????????三、Android应用的构成
????????1、活动(Activity)
????????(1)与用户交互的界面
????????(2)生命周期:产生、运行、销毁
????????调用方法:onCreate(创建)、onStart(激活)、onResume(恢复)、onPause(暂停)、onStop(停止)、onDestroy(销毁)、onRestart(重启)
????????2、服务(Service)
????????(1)无界面,启动后在后台运行,直到手机关机为止,但是可以点击停止或强制。
????????(2)承担大部分的数据处理工作。
????????3、广播接收器(Broadcast Receiver)
????????(1)用于接收系统或者APP发送的广播事件。
????????(2)广播:发送消息和接收消息。
????????(3)原理
????????广播接收者通过Binder机制在AMS注册;
????????广播发送者通过Binder机制向AMS发送广播;
????????AMS根据广播发送者要求,在已注册列表中,寻找合适的广播接收者;
????????AMS将广播发送到合适的广播接收者相应的消息循环队列中;
????????广播接收者通过消息循环拿到此广播,并回调onReceive()
????????(4)特别注意
????????广播发送者和广播接收者的执行是异步的,即广播发送者不会关心有无接收者接收&也不确定接收者何时才能接收到。

????????4、内容提供者(Content Provider)
????????(1)类似于“数据库”,用于存取数据,使一个程序的指定数据集提供给其他应用程序。
????????(2)只是中间者角色(搬运工),真正存储&操作数据的数据源仍是数据库、文件、xml或网络。
????????四、Android测试环境搭建
????????1、真机环境测试(adt-bundle)
????????(1)Android手机用USB数据线连接到PC的USB口上。
????????(2)打开手机的开发者模式(默认未打开),设置->关于手机->版本号->连续点击五次以上会提示已经打开开发者模式。
????????(3)设置->系统和更新->开发人员选项->打开USB调试,点击确认;打开“仅充电”模式下允许ADB调试,点击确认。
????????(4)屏幕左边下拉通知栏,点击USB连接通知,选择传输文件MTP。
????????(5)打开cmd,输入adb devices,若显示设备序列号,则连接成功。
????????2、第三方模拟器测试
????????(1)夜神、腾讯手游、iTools、海马、逍遥
????????(2)功能测试可在模拟器测试
?
????????3、Android自带的模拟器测试
????????(1)需要搭建Android开发环境
????????4、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;
????????五、ADB简介及常用命令
????????1、ADB简介
????????(1)ADB-Android Debug Brige,起到调试桥作用,让用户在电脑上对手机进行全面的操作。
????????(2)APK-Android Package,Android安装包,类似于SymbianSis或Sisx文件格式。
????????2、ADB常用命令
????????(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 <tag>) ?# 详细(最低优先级)
????????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 <local> <remote> ?# 将本地文件推送到远程设备上(真机设备或模拟器)
????????(10)adb pull <remote> <local> ?# 将远程设备上的文件拉取到本地(PC端)
? ? ? ? ?愿你我都能为中华民族的伟大复兴尽一份绵薄力量,让中华文化的根扎根在中国这片绿水青山之上,让新一代中华儿女传承与发扬!!!
---无名之辈
以上内容均是本人自学,当然是有网上公布的内容,如有冒犯,请留言,立即改正,谢谢!
? ? ? ? 看完要是觉得对自己有用,动一下您那根金色的会一指禅的右手食指,按一下您的鼠标左键,在对应的那个位置点个赞,亦或者在评论区留下您的绝顶好句,亦或者收藏在您的收藏夹里,再走也不迟嘛!您说要不要得!谢谢您的阅读和赞赏!
|