写点什么

软件测试 | App 结构概述

  • 2023-02-15
    北京
  • 本文字数:2152 字

    阅读完需:约 7 分钟

1、App 结构简介

App 的结构包含了 APK 结构和 App 页面结构两个部分。

2、APK 结构

APK 是 Android Package 的缩写,其实就是 Android 的安装包。通过将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。


APK 文件其实是 zip 格式,但后缀名被修改为 apk,通过 UnZip 解压后,可以看到 Dex 文件,Dex 是 Dalvik VM executes 的全称,即 Android Dalvik 执行程序,并非 Java ME 的字节码而是 Dalvik 字节码。


下面拿雪球 APK 来举例,反编译好了其实就会生成一个目录,压缩包里的内容都在这个目录里。我们可以通过 Android Studio 打开这个目录看看里面重要的目录或者文件的作用。


lib/ 目录


存放的是一些 so 文件。so 文件可以简单理解为去兼容各种类型的 CPU 的二进制文件。


Android 开发中,在打包发布应用时会选择应用适配的 CPU 架构平台,在引用第三方库时也遇到根据不同 CPU 架构引入相应的 so 包。Android 主要包括这几种 CPU 架构:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips,大多数情况下只需要支持 armabi 与 x86 的架构即可。


不同的 CPU 架构决定了 app 可以运行在哪些设备上。比如我们的手机设备一般来说用的是 arm 架构,而我们的模拟器一般来说是 x86 架构。如果 app 只支持 arm 架构的话,那么就只能安装在真机上,模拟器上安装就会不成功。如果是两种架构都支持的话,那么就是真机和模拟器都可以安装了。


res/ 目录


res 目录是工程资源目录,存放的的这个应用会被编译器处理的资源文件,一般包括界面布局,图片,字符串等。可以被编译成很多种类型的资源的 XML 文件。


assets/ 目录


assets 目录可以存放一些配置文件,不会被编译器处理。


classes(n).dex 文件


classes 文件是 Java Class,被 DEX 编译后可供 Dalvik/ART 虚拟机所理解的文件格式。


resources.arsc 文件


resources.arsc 文件是编译后的二进制资源文件。


AndroidManifest.xml 文件


AndroidManifest.xml 文件 是 Android 的清单文件,是每个应用都必须定义和包含的。它描述了应用的名字、版本、权限、引用的库文件等等信息。

3、App 分类

(1)原生应用(Native App):使用原生的语言开发的手机应用,如系统自带的计算器、闹铃就是原生应用。


(2)混合应用(Hybrid App):混合应用是原生应用里面嵌入了 HTML5 页面的应用,现在手机中大部分的应用都是混合应用,典型的有微信、支付宝等。


(3)网页应用(Web App):完全使用 HTML5 页面加 JavaScript 开发的手机应用,如在浏览器中打开的美团应用,这个页面应用程序就是网页应用。

4、原生应用面介绍

原生应用的一个页面上有图 4-3 所示的类型对象。


Activity


Activity 是 Android 四大组件之一,用于展示一个与用户交互的界面。Activity 是存放 View 对象的容器,也是界面的载体,可以用来展示一个界面。


Window


Window 是 Android 中的窗口,表示顶级窗口,也就是主窗口。它提供标准的用户界面策略,如背景、标题、区域,默认按键处理等。


View


View 就是一个个视图的对象。视图,是用户接口组件的基本构建块,它在屏幕中占用一个矩形区域,它是所有 UI 控件的基类,如一个按钮或文本框。View 负责图形界面渲染及事件处理。


ViewGroup


ViewGroup 是 Android 中的视图组。包含多个 View,也可以包含 ViewGroup。

5、查看页面元素

基于 Android 系统开发的 App,要查看 App 界面的元素需要用到定位工具,常用的定位工具有 UI Automator Viewer,这是 Android SDK 自带的工具,使用起来非常简单。我们用它可以获取到整个 App 界面的布局,通过它就可以很容易地查看 App 界面当中的元素和元素的属性,如图


左侧显示的就是用这个工具同步过来的 App 界面,我们可以在 App 界面上直接选择元素;右侧展示的 App 界面布局和对应元素的属性。

6、布局

测试人员了解 App 的界面布局后,做自动化测试的时候更容易定位 App 上的元素。这里的布局就是指 App 界面元素排布的方式。App 界面上的布局方式主要由以下形式


  • 线性布局:LinearLayout:所有子视图(元素)在单个方向(垂直或水平)保持对齐。

  • 相对布局:RelativeLayout:每个视图的位置可以被指定为相对于同级元素的位置(例如,在一个视图的左侧或下方)或相对于父级区域的位置(例如,在底部、左侧或中心对齐)。

  • 帧布局:FrameLayout:就是直接在屏幕上开辟出一块空白的区域,当在这块区域里添加控件时,会默认房子啊这块区域的左上角;当在这块区域指定的地方添加控件时,只需要为控件指定坐标即可。

  • 绝对布局:AbsoluteLayout:指定子视图的确切位置。

  • 表格布局:TableLayout:通过表格的方式来实现视图布局,这时整个页面就相对于一张大的表格,视图就被放在每个单元格中。

7、元素常见属性

  • index:元素索引

  • text:显示文本

  • resource-id:元素 id

  • class:类名

  • package:包名

  • content-desc:描述文案

  • checkable:是否可以选择

  • checked:是否已经选择

  • clickable:是否可以点击

  • enabled:是否可用

  • focusable:是否可以聚焦

  • fucused:是否已经聚焦

  • scrollable:是否可以滚动

  • long-clickable:是否可以长选择

  • password:是否为密码输入框

  • selected:是否已选择

  • bounds:元素位置坐标


在这些属性当中,测试人员需要关注的是几个属性有 text、resource-id、class 和 content-desc,其余的暂时不用太关注。这几个属性在后面讲解自动化测试的时候,我们讲解定位元素的时候会介绍到。


搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | App结构概述_测试_测吧(北京)科技有限公司_InfoQ写作社区