首页 > 其他分享 >Android自动化 - 基础总集

Android自动化 - 基础总集

时间:2024-07-19 14:19:02浏览次数:6  
标签:框架 App 应用程序 UI 总集 测试 自动化 Android

本笔记根据微信读书的:《Android自动化测试实战》

简介

测试金字塔


金字塔模型将测试分为单元(Unit)、服务(Service)和用户界面(User Interface,UI)这3个层级;在测试发展的历程中,也出现了一些重新定义金字塔层级的测试模型,尽管对分层的具体描述各不相同(有人将这3个层级分别定义为单元、接口、集成测试,也有人将整个金字塔划分为4~5个层级),但金字塔自底向上的结构是大家公认和遵循的。

单元测试

单元测试是针对代码单元(通常是 方法 )的测试,单元测试的价值在于能提供快速的反馈,在开发过程中就可以对逻辑单元进行验证。好的单元测试可以帮助改善既有设计,在团队掌握测试驱动开发(Test Driven Development,TDD)的前提下,单元测试能辅助重构,帮助提升代码整洁度。

服务测试

针对业务接口进行的测试,主要测试内部接口功能实现是否完整,比如内部逻辑是否正常、异常处理是否正确等,比如内部逻辑是否正常、异常处理是否正确等。

UI测试

UI测试是从用户的角度验证产品功能的正确性,测试的是端到端的流程,并且加入用户场景和数据,验证整个过程是否正确、流畅。

自动化测试

单元自动化测试

单元自动化测试指对软件中最小的可测试单元进行检查和验证,调用被测服务的类或方法,根据类或方法的参数,传入相应的数据,得到返回结果。单元自动化测试是最基本的测试之一,也是测试中的最小单元,它的对象是函数,可以包含输入输出,针对的是函数功能或者函数内部的代码逻辑,并不包含业务逻辑。该类测试一般由研发人员完成,需要借助单元测试框架,如Java的JUnit、TestNG,Python的unittest、Pytest,等等。

接口自动化测试

接口自动化测试主要验证模块间的调用返回,以及不同系统、服务间的数据交换。接口自动化测试一般在业务逻辑层进行。所以,接口测试关注的是数据。常见的接口测试工具有Postman、JMeter、LoadRunner等。

UI自动化测试

UI层是用户使用产品的入口,产品的所有功能通过这一层提供给用户,目前测试工作大多集中在这一层,这种测试更贴近用户的行为。所以,UI自动化测试的关注点是用户操作行为,以及UI上各种组件是否可用。常见的UI测试工具有UFT、Selenium、Appium等。

Android

Android体系架构

应用程序层

Android会同一系列核心应用程序包一起发布,该应用程序包包括桌面、SMS短消息、日历、地图、通话、浏览器、联系人管理程序等应用程序,都是使用Java语言编写的。

应用程序框架层

开发人员可以完全调用核心应用程序所使用的应用程序框架。该应用程序的架构设计简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便地替换程序组件。

系统运行库层

Android包含一些C和C++库,这些库能被Android系统中不同的组件使用,并通过Android应用程序框架为开发者提供服务。

Linux内核层

Android运行于Linux内核(kernel)之上,但并不是GNU/Linux。因为一般GNU/Linux支持的功能,Android大多都不支持
Android的Linux kernel控制包括安全(Security)、内存管理(Memory Management)、过程管理(Process Management)、网络堆栈(Network Stack)、驱动程序模型(Driver Model)等。

Android开发四大组件

活动(Activity)

用于表现功能,Activity是所有应用程序的根本,所有应用程序的流程都运行在Activity之中,Activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。

服务(Service)

在后台运行,不提供界面呈现。Service是Android系统中的一种组件,它跟Activity的级别差不多,但是它不能自己运行,只能在后台运行,并且可以和其他组件进行交互,Service是没有界面的长生命周期组件

广播接收器(Broadcast Receiver)

用于接收广播。在Android中,Broadcast是一种广泛应用的、用于在应用程序之间传输信息的机制。而Broadcast Receiver是对发送出来的Broadcast进行过滤、接收并响应的一类组件。

内容提供商(Content Provider)

支持在多个应用程序中存储和读取数据,相当于数据库。Content Provider是Android提供的第三方应用数据的访问方案。Android对数据的保护是很严密的,除了放在SD卡中的数据,一个应用程序所持有的数据库、文件等,都是不允许其他应用程序直接访问的。Android当然不会真的把每个应用程序都设计成一座孤岛,它为所有应用程序都准备了一扇窗,这就是Content Provider。

App的类型与区别

Native App:
Native APP指的是原生程序,一般依托于操作系统,有很强的交互,是一个完整的App,可拓展性强,需要用户下载安装使用。(简单来说,原生应用是特别为某种操作系统开发的,如iOS、Android等,它们是在各自的移动设备上运行的)。该模式通常是由“云服务器数据+APP应用客户端”两部份构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上。

Web App
Web App是基于Web的系统和应用程序,运行于网络和浏览器之上,目前多采用HTML5标准开发,无须下载和安装。

Hybrid App:
混合应用程序(Hybrid Application,Hybrid App)是结合了原生应用程序和Web应用程序两者的元素的软件应用。混合应用程序本质上是带有原生应用外壳的Web应用。一旦用户从应用商店下载应用并在本地安装,外壳就会通过嵌入在应用中的浏览器连接到移动平台提供的任何功能。浏览器及其插件在后端运行,对最终用户是不可见的。

测试框架

Instrumentation

Android自带的一个测试框架,是很多测试框架的基础,可以在同一个进程中加载被测组件。它有很多丰富的高层封装,你可以使用基于Instrumentation的其他框架,避免过多二次开发。但Instrumentation不支持跨App使用,基于Instrumentation开发的框架都“继承”了这个缺点。

Espresso

Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,使用者编写测试代码更简单,容易快速上手。因为它是基于Instrumentation的,所以不能跨App使用。

Robotium

是基于Instrumentation框架开发的一个更强的框架。该框架对常用的操作进行了封装。

优点:容易让使用者在短时间内编写出测试脚本,易用性高;支持自动跟随当前Activity;由于运行时会绑定到图形用户界面(Graphical User Interface,GUI)组件,所以相比Appium,它测试时执行速度更快,功能更强大;即使用户不访问代码或不了解App实现,也可以使用;支持Activity、Dialog、Toast、Menu、ContextMenu和其他Android SDK控件。

缺点:不能测试Web组件;在旧设备上测试执行速度会变得很慢;不支持iOS设备;没有内置的记录和回放功能。

UIAutomator

UIAutomator是由Google提供的测试框架,它提供了Android Native App和手游App的高级UI测试。这是一个包含API的Java库,可以用来创建功能性UI测试,还有运行测试的执行引擎。该库自带Android SDK。

优点:在访问不同的进程时,会给JUnit测试案例特权;测试库由Google社区支持和维护。

缺点:仅支持Android 4.1(API level—16)及以上版本;不支持脚本记录,不支持Web视图,仅支持使用Java,因此很难和使用Ruby的Cucumber结合,如想支持行为驱动开发(Behavior Driven Development,BDD)框架,建议使用Java自己的BDD框架,例如JBehave。

Calabash

Calabash是一个适用于iOS和Android设备的跨平台App测试框架,可用来测试屏幕截图、手势和实际功能代码。Calabash开源并支持Cucumber,Cucumber能让用户用自然的英语表述App的行为,实现BDD。Cucumber中的所有语句都是使用Ruby定义的。

优点:有大型社区支持;列表项简单,有类似英语表述的测试语句,支持在屏幕上能够实现的所有动作,如滑动、缩放、旋转、敲击等;支持跨平台开发(同样的代码在Android和iOS设备中都适用)。

缺点:某一步骤测试失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题;测试耗费时间,因为它总是默认从安装App开始;需要将Calabash框架安装在iOS的.ipa文件中,因此测试人员必须要有iOS App的源码;除了Ruby,对其他语言不友好。

Appium

Appium是一个开源、跨平台的自动化测试工具,支持iOS、Android和Firefox OS平台。通过Appium,开发者无须重新编译App或者做任何调整,就可以测试App,可以通过测试代码访问后端API和数据库等。它是通过驱动iOS的UIAutomation和Android的UIAutomator框架来实现跨平台支持的,同时绑定了Selenium WebDriver用于支持对早期Android平台的测试。开发者可以使用Selenium WebDriver兼容的任何语言编写测试脚本,如Java、Objective-C、JavaScript、PHP、Python、Ruby、C#、Clojure和Perl语言等。

标签:框架,App,应用程序,UI,总集,测试,自动化,Android
From: https://www.cnblogs.com/yigehulu/p/18296189

相关文章

  • Android 小白菜鸟从入门到精通教程
    前言Android一词最早出现于法国作家利尔亚当(AugusteVilliersdel'Isle-Adam)在1886年发表的科幻小说《未来的夏娃》(L'èvefuture)中。他将外表像人的机器起名为Android。从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了Android应用程序开发应该掌握的各方面......
  • 【蓝牙】Android 13 蓝牙源码分析
    Android13在蓝牙模块中进行了多项改进和优化。本文将详细分析其核心组件及其工作原理,包括BluetoothManagerService、AdapterService、AdapterProperties、蓝牙连接管理和JNI接口。1.BluetoothManagerServiceBluetoothManagerService是蓝牙管理的核心类,负责启动和停止蓝......
  • 论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(中)
    前言数据库并发,数据审计和软删除一直是数据持久化方面的经典问题。早些时候,这些工作需要手写复杂的SQL或者通过存储过程和触发器实现。手写复杂SQL对软件可维护性构成了相当大的挑战,随着SQL字数的变多,用到的嵌套和复杂语法增加,可读性和可维护性的难度是几何级暴涨。因此如何在实......
  • 让接口自动化测试~更有效的统计方法!
    01覆盖率概念接口自动化测试是现代软件开发中不可或缺的一环,它能够帮助开发团队自动化执行测试用例,以快速而准确地发现并修复软件缺陷。而覆盖率统计则是在测试执行完成后,帮助测试团队了解哪些代码路径被覆盖了,哪些未被覆盖的技术手段,下面我将介绍一下接口自动化测试覆盖......
  • Python web自动化爬虫-selenium/处理验证码/Xpath
    #coding:utf-8importtimeimportrandomfromtimeimportsleepfromcsvimportwriterfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromchaojiyingimportChaojiying_Clientfromselenium.webdriverimportActionChainsdriver......
  • 2024北京国际智能工厂及自动化展览会亮点前瞻
    随着“工业创新,智造未来”的浪潮席卷而来,2024年度北京国际智能工厂及自动化与工业装配展览会定于8月1日至3日在中国国际展览中心(顺义新馆)盛大开幕。本次展会汇聚了智能制造与自动化技术的最新成果,通过三展联动的创新模式,搭建了一个集展示、交流、合作于一体的国际化平台。在“......
  • Android开发 - xml规则
    基本规则所有元素都必须有关闭标签:省略关闭标签是非法的。所有元素都必须有关闭标签,例如:<p>Thisisaparagraph是非法的,正确语法为<p>Thisisaparagraph</p>标签对大小写敏感:必须使用相同的大小写来编写打开标签和关闭标签,例如:<P>Thisisaparagraph</p>是非法的,正确语......
  • 论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(上)
    前言数据库并发,数据审计和软删除一直是数据持久化方面的经典问题。早些时候,这些工作需要手写复杂的SQL或者通过存储过程和触发器实现。手写复杂SQL对软件可维护性构成了相当大的挑战,随着SQL字数的变多,用到的嵌套和复杂语法增加,可读性和可维护性的难度是几何级暴涨。因此如何在实......
  • Android JIT
    AndroidJIT(Just-In-Time)编译是一种动态编译技术,在运行时将字节码转换为机器码,以提高应用程序的执行效率。与静态编译不同,JIT编译是在应用程序运行时进行的,因此可以在程序执行期间进行优化。JIT编译的工作原理启动时解释执行:应用程序启动时,字节码通过解释器逐行执行,确保启动速......
  • Android 11 NavigationBar && Status Bar 如果改变背景颜色
    SystemUI的导航栏和状态栏的背景是大部分是根据当前应用的主题显示的,状态有黑,白,透明,半透明等.需求:要求背景不跟随栈顶应用主题变化,始终固定成一个颜色!/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java//NavigationBarView初始化pub......