1. 程式人生 > 其它 >技術分享 | 想做App測試就一定要了解的App結構

技術分享 | 想做App測試就一定要了解的App結構

本文節選自霍格沃茲測試開發學社內部教材

app 的結構包含了 APK 結構和 app 頁面結構兩個部分

APK結構

APK 是 Android Package 的縮寫,其實就是 Android 的安裝包。通過將 APK 檔案直接傳到 Android 模擬器或 Android 手機中執行即可安裝。

APK 檔案其實是 zip 格式,但字尾名被修改為 apk,通過 Android Studio 可以看到 APK 內部的檔案。

下面拿雪球 APK 來舉例,APK 內部結構如圖所示:

lib/ 目錄

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 目錄是工程資源目錄,存放的是各種資原始檔,包括介面佈局,圖片,字串等。

assets/ 目錄

assets 目錄用來存放配置檔案。

classes(n).dex 檔案

DEX 編譯 Java 的 Class 檔案,生成 classes.dex 檔案。

resources.arsc 檔案

resources.arsc 檔案是編譯後的二進位制資原始檔。

AndroidManifest.xml 檔案

AndroidManifest.xml 檔案是 Android 的清單檔案,是每個應用都必須定義和包含的。它描述了應用的名字、版本、許可權、引用的庫檔案等等資訊。

app頁面結構

移動端 app 分類

app 可以分為下面這些型別

  1. Native App:原生 app 手機應用程式,使用原生的語言開發的手機應用。比如系統自帶的計算器、鬧鐘就是原生 app。
  2. Hybrid App:混合型 app 手機應用程式,混合使用原生的程式和 HTML5 頁面開發的手機應用。現在大部分的 app 都是這種混合型的,比如微信,支付寶等等。
  3. Web App:基於 Web 的 app 手機應用程式,完全使用 HTML5 頁面加前端 JS 框架開發的手機應用。比如在瀏覽器中開啟美團,這個頁面就是網頁 Web App。

Native App

對於 Native APP 來說,一個頁面上有下面這些型別的物件。

ACTIVITY

Activity 是 Android 四大元件之一,用於展示一個與使用者互動的介面。Activity 是存放 View 物件的容器,也是介面的載體,可以用來展示一個介面。

WINDOW

Window 是 Android 中的視窗,表示頂級視窗,也就是主視窗。它提供標準的使用者介面策略,如背景、標題、區域、預設按鍵處理等。

VIEW

View 就是一個個檢視的物件。檢視,是使用者介面元件的基本構建塊,它在螢幕中佔用一個矩形區域,它是所有 UI 控制元件的基類,如一個按鈕或文字框。View 負責圖形介面渲染及事件處理。

VIEWGROUP

ViewGroup 是 Android 中的檢視組。包含多個 View,也可以包含 ViewGroup。

檢視介面元素

對於 Android 來說,要檢視 app 介面的元素需要用到定位工具,常用的工具有 uiautomatorviewer。這是 Android SDK 自帶的工具,使用起來非常簡單。它可以獲取到整個介面的佈局,通過它就可以很容易的檢視介面當中的元素和元素的屬性了。

左側就是同步過來的介面,可以在介面上直接選擇元素,然後右面就會展示介面佈局和對應元素的屬性。

元素屬性

佈局

瞭解 app 的介面佈局,做自動化測試的時候更容易去定位頁面上的元素。

這裡的佈局就是指介面元素排布的方式。介面上的佈局方式都有以下這些方式:

  • 線性佈局(LinearLayout):所有子檢視在單個方向(垂直或水平)保持對齊
  • 相對佈局(RelativeLayout):每個檢視的位置可以指定為相對於同級元素的位置。例如在另一個檢視的左側或下方,或相對於父級區域的位置,例如在底部、左側或中心對齊
  • 幀佈局(FrameLayout):座標原點是螢幕的左上角,位置固定,只需為控制元件指定大小即可,用來顯示一個單一的檢視
  • 絕對佈局(AbsoluteLayout):能夠指定其子檢視的確切位置
  • 表格佈局(TableLayout):通過畫表表格的方式來實現佈局,整個頁面就相當於一張大的表格,控制元件就放在每個 Cell 中
常見屬性
  • 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,其餘的暫時不用太關注。這幾個屬性在後面做自動化的時候,可以用來定位元素。

⬇️ 你好呀,喜歡這篇文章的話煩請點個“贊”哦!萬分感謝~() PS:有問題可以聯絡我們哦~v ceshiren001

>>更多技術文章分享和免費資料領取