自学移动端(APP)自动化测试

        当你还在学习的时候,请继续努力,因为只有努力才会有收获,躺平是没有任何好结果的,唯一的结果就是越来越拉,加油,我们一起努力学习。

        这次总结的是(二)移动端(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系统结构

自学移动端(APP)自动化测试_第1张图片

        (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)

 自学移动端(APP)自动化测试_第2张图片


        二、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

自学移动端(APP)自动化测试_第3张图片


         三、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)特别注意

        广播发送者和广播接收者的执行是异步的,即广播发送者不会关心有无接收者接收&也不确定接收者何时才能接收到。

自学移动端(APP)自动化测试_第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)功能测试可在模拟器测试

 自学移动端(APP)自动化测试_第5张图片

        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日志信息

自学移动端(APP)自动化测试_第6张图片

        V-Verbose (default for )  # 详细(最低优先级)

        D-Debug (default for '*')  # 调试

        I-Info  # 信息

        W-Warn  # 警告

        E-Error  # 错误

        F-Fatal  # 严重错误

        S-Silent (suppress all output)  # 静默(最高优先级,绝不会输出任何内容)

自学移动端(APP)自动化测试_第7张图片

        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 优先级 标签: 日志信息)

自学移动端(APP)自动化测试_第8张图片

自学移动端(APP)自动化测试_第9张图片

自学移动端(APP)自动化测试_第10张图片

        adb logcat *:E  # 打印级别为Error的日志信息

        adb logcat | grep "包名" # Linux抓取指定APP的日志

        adb logcat | find "包名" # Windows抓取指定APP的日志

        adb logcat -v time | find 包名 >.\\logcat.log  # 将带时间格式日志中有关某APP的内容输出到当前路径下的log文件中

自学移动端(APP)自动化测试_第11张图片

        (5)adb [-s 设备] shell  # 进入(指定)手机终端(可直接输入命令),相当于Linux系统

自学移动端(APP)自动化测试_第12张图片

        adb shell ls  # 查看显示手机当前目录的所有内容

        adb shell top  # 查看当前手机实时进程

        adb shell dumpsys [-t TIMEOUT] [--help | -l | --skip SERVICES | SERVICE [ARGS]]  # 查看系统服务

自学移动端(APP)自动化测试_第13张图片

        adb shell pm list packages  # 查看设备已经安装的APP包名

        adb shell am monitor  # 运行后随机启动某个应用,可以获取该应用包名

        (7)adb install <应用程序(加扩展名)>  # 安装应用程序

        (8)adb uninstall "包名"  # 卸载应用程序

        (9)adb push  # 将本地文件推送到远程设备上(真机设备或模拟器)

        (10)adb pull  # 将远程设备上的文件拉取到本地(PC端)


         愿你我都能为中华民族的伟大复兴尽一份绵薄力量,让中华文化的根扎根在中国这片绿水青山之上,让新一代中华儿女传承与发扬!!!

---无名之辈


以上内容均是本人自学,当然是有网上公布的内容,如有冒犯,请留言,立即改正,谢谢!


        看完要是觉得对自己有用,动一下您那根金色的会一指禅的右手食指,按一下您的鼠标左键,在对应的那个位置点个赞,亦或者在评论区留下您的绝顶好句,亦或者收藏在您的收藏夹里,再走也不迟嘛!您说要不要得!谢谢您的阅读和赞赏!

你可能感兴趣的:(#,移动端(APP)自动化测试,android,ios,web,app,自动化,intellij-idea)