測試應用程式的無障礙功能's

透過測試無障礙功能,您可以從使用者的角度體驗應用程式,並找出可能遺漏的可用性問題。這類測試可讓您發掘改進空間,提供更強大、更靈活的應用程式給所有使用者,包括身心障礙者。

為獲得最佳效果,請採用本文件所述的所有做法:

  • 手動測試:使用 Android 無障礙服務與您的應用程式互動。
  • 使用分析工具進行測試:運用相關工具,發掘應用程式無障礙功能的改進空間。
  • 自動化測試:在 Espresso 和 Robolectric 中開啟無障礙功能測試。
  • 使用者測試:向與應用程式互動的使用者收集意見。

手動測試

手動測試會將您置於使用者的視角。Android AccessibilityService 物件會變更應用程式內容向使用者顯示的方式,以及使用者與內容互動的方式。使用無障礙服務與應用程式互動,可讓您像使用者一樣體驗應用程式。

TalkBack

TalkBack 是 Android 的內建螢幕閱讀器。開啟 TalkBack 後,使用者就能與 Android 裝置互動,不必盯著螢幕。視障人士可能需要透過 TalkBack 才能使用您的應用程式。

開啟 TalkBack

  1. 開啟裝置的「設定」應用程式。
  2. 前往「無障礙設定」並選取「TalkBack」
  3. 按下 TalkBack 螢幕頂端的「開啟/關閉」以開啟 TalkBack。
  4. 在確認對話方塊中,選取「確定」確認權限。

使用 TalkBack 探索應用程式

開啟 TalkBack 後,將提供兩種常用導覽方式:

  • 線性導覽:快速向右或向左滑動,即可依序瀏覽各個畫面元素。在任意位置輕觸兩下就能選取目前的畫面元素。
  • 輕觸探索:用一隻手指在螢幕上拖曳,聽取指尖觸及的內容。在任意位置輕觸兩下就能選取目前的元素。

如要透過 TalkBack 探索應用程式,請完成下列步驟:

  1. 開啟應用程式。
  2. 依序滑動各個元素。
  3. 導覽過程中,請留意下列問題:

    • 每項元素的互動朗讀語音是否正確傳達元素的內容或用途?您可以參閱這篇文章,瞭解如何編寫有意義的標籤。*朗讀內容是否簡潔明瞭,還是過於冗長?
    • 能否輕鬆完成主要工作流程?
    • 能否透過滑動手勢觸及每項元素?
    • 如果出現快訊或其他臨時訊息,系統是否會朗讀訊息?

如需詳細資訊和提示,請參閱 TalkBack 使用者說明文件

選用:TalkBack 開發人員設定

TalkBack 開發人員設定可讓您更輕鬆地使用 TalkBack 測試應用程式。

如要查看或變更開發人員設定,請完成下列步驟:

  1. 開啟裝置的「設定」應用程式。
  2. 前往「無障礙設定」並選取「TalkBack」
  3. 依序選取「設定」>「進階設定」>「開發人員設定」

    1. 記錄輸出詳細程度:選取「VERBOSE」
    2. 顯示語音輸出內容:開啟這項設定即可在螢幕上查看 TalkBack 語音輸出內容。

切換控制功能

透過切換控制功能,使用者能夠以外接切換裝置與 Android 裝置互動,而不使用觸控螢幕。外接切換裝置分成以下幾種類型:輔助技術裝置 (例如 AbleNet、Enabling Devices、RJ Cooper 或 Tecla* 販售的裝置)、外接鍵盤按鍵,或者按鈕。對行動不便的使用者而言,這項服務相當實用。

* Google 不為這些公司或其產品背書。

開啟切換控制功能

設定切換控制功能的方法之一是使用兩個外接切換裝置。其中一個外接切換裝置當做「下一個」鍵,用於在螢幕上移動焦點;另一個外接切換裝置則做為「選取」聚焦元素的按鍵。如要採取這種做法,可以使用任意一對硬體按鍵。

如要設定切換控制功能,使用調低音量按鈕當做「下一個」鍵,並使用調高音量按鈕做為「選取」鍵,請完成下列步驟:

  1. 確認 TalkBack 已關閉。
  2. 開啟裝置的「設定」應用程式。
  3. 前往「無障礙設定」並選取「切換控制功能」,然後選取「設定」
  4. 在「切換控制功能偏好設定」畫面中,確認「自動掃描」已關閉。
  5. 使用調低音量按鈕做為「下一個」鍵:

    1. 依序輕觸「指定掃描按鍵」>「下一個」
    2. 開啟對話方塊後,按下調低音量按鈕。對話方塊會顯示 KEYCODE_VOLUME_DOWN。
    3. 輕觸「確定」即可確認這項設定,並關閉對話方塊。
  6. 使用調高音量鍵做為「選取」切換鈕:

    1. 輕觸「選取」。
    2. 開啟對話方塊後,按下調高音量按鈕。對話方塊會顯示 KEYCODE_VOLUME_UP。
    3. 輕觸「確定」即可確認這項設定,並關閉對話方塊。
  7. 輕觸返回按鈕,回到「切換控制功能偏好設定」畫面。

  8. 選用:如果使用 TalkBack 5.1 以上版本,可以選取「互動朗讀」開啟互動朗讀功能。

  9. 輕觸返回按鈕,回到主要的「切換控制功能」畫面。

  10. 按下「切換控制功能」畫面頂端的切換鈕,開啟切換控制功能。

  11. 在確認對話方塊中,選取「確定」確認權限。

使用切換控制功能探索應用程式

如要透過切換控制功能探索應用程式,請完成下列步驟:

  1. 開啟應用程式。
  2. 按下「下一個」鍵 (調低音量按鈕),即可開始掃描。
  3. 連按「下一個」鍵,直到移至想選取的項目。
  4. 按下「選取」鍵 (調高音量按鈕),即可選取醒目顯示的項目。
  5. 導覽過程中,請留意下列問題:

    • 能否輕鬆完成主要工作流程?
    • 如果有文字或其他輸入內容,能否輕鬆新增與編輯內容?
    • 是否僅當對項目執行動作時,系統才會醒目顯示這些項目?
    • 每個項目是否只會醒目顯示一次?
    • 能否藉由切換控制功能的控制選項或自訂動作,使用可透過觸控螢幕手勢執行的所有功能?
    • 如果使用 TalkBack 5.1 以上版本,且已開啟互動朗讀功能,每項元素的互動朗讀語音是否正確傳達元素的內容或用途?您可以參閱這篇文章,瞭解如何編寫有意義的標籤。

選用:使用群組選取功能查看所有可掃描項目

群組選取功能是切換控制功能的一種導覽方法,可讓您一次查看所有可掃描項目。這個選項可讓您快速檢查螢幕上是否醒目顯示了正確的元素。

如要開啟群組選取功能,請完成下列步驟:

  1. 開啟裝置的「設定」應用程式。
  2. 前往「無障礙設定」並選取「切換控制功能」,然後選取「設定」
  3. 在「切換控制功能偏好設定」畫面中,確認「自動掃描」已關閉。
  4. 依序選取「掃描方法」>「群組選取」
  5. 輕觸「指定掃描用切換按鍵/裝置」
  6. 查看「群組選取切換按鍵/裝置 1」和「群組選取切換按鍵/裝置 2」下顯示的文字,確認每項設定都有指定的切換按鍵/裝置。如果您按照本文件中的步驟開啟切換控制功能,就已經指定音量按鈕做為切換按鍵。

如要透過切換控制功能的群組選取功能探索應用程式,請完成下列步驟:

  1. 按下「選取」鍵 (調高音量按鈕),即可醒目顯示當前畫面上的所有可操作項目。請留意下列問題:

    • 是否只醒目顯示了可操作項目?
    • 所有可操作項目都醒目顯示了嗎?
    • 醒目顯示項目的密度是否合理?
  2. 前往其他畫面即可停止醒目顯示原本的項目。

如要進一步瞭解使用者如何透過群組選取功能進行瀏覽,請參閱「切換控制功能的使用訣竅」。

Voice Access

Voice Access 讓使用者能透過語音指令控制 Android 裝置。Voice Access 適用於搭載 Android 5.0 (API 級別 21) 以上版本的裝置。如要使用 Voice Access 測試應用程式,請參閱 Voice Access 入門指南瞭解詳情。

使用分析工具進行測試

透過分析工具,您可以發掘手動測試時可能遺漏的改進空間,讓無障礙功能更臻完善。

Compose UI 檢查

在 Compose 預覽上啟用 Compose UI 檢查模式 ,讓 Android Studio 自動稽核 Compose UI 是否有無障礙功能問題。Android Studio 會醒目顯示問題,例如大型螢幕上的文字延伸或顏色對比度過低的問題,藉此檢查 UI 是否能在不同大小的螢幕上運作。

按一下「Compose UI Check mode」按鈕可啟用檢查。
已啟用 Compose UI 檢查模式,並顯示問題面板中的詳細資料。
Compose UI 檢查會顯示不同色彩視覺障礙類型的 UI 外觀。

無障礙功能檢查工具

無障礙功能檢查工具應用程式會掃描畫面,並提供改善應用程式無障礙功能的建議。無障礙功能檢查工具會使用無障礙功能測試架構,並在檢查內容標籤、可點擊項目、對比度等事項後,給出具體建議。

Android 無障礙功能測試架構已整合至 Android Studio,有助於找出版面配置中的無障礙功能問題。如要開啟面板,請點選版面配置編輯器中的錯誤報表按鈕 !

示範無障礙功能檢查工具的使用方式 圖 1. 示範無障礙功能檢查工具的使用方式。

詳情請參閱下列資源:

Google Play 正式發布前測試報告

如果您在 Google Play 上發布應用程式,即可存取有關應用程式的正式發布前測試報告。在您使用 Google Play 管理中心將應用程式上傳至發布版本後,Google Play 很快就會產生這份報告。Google Play 管理中心也會提供正式發布前測試報告,列出 Google Play 對應用程式執行測試的結果。

具體而言,Google Play 會採用無障礙功能測試架構,執行無障礙功能的測試。測試結果會顯示在應用程式正式發布前測試報告「無障礙功能」分頁的表格中。

表格會將改進機會分入以下類別:

觸控目標大小
應用程式中互動元素的可聚焦區域大小 (即觸控目標大小) 低於建議值。
低對比
文字元素與後方背景的色彩對比率低於建議值。
內容標籤
UI 元素不含說明元素用途的標籤
導入作業
指派給 UI 元素的屬性導致系統的無障礙服務更難正確解讀元素,例如定義可編輯 View 標籤的說明,以及使用不符合元素邏輯排列方式的元素周遊順序

在表格之後,正式發布前測試報告會提供應用程式的數據匯報,這些匯報會依各類別顯示應用程式無障礙功能的重要改進空間。選取螢幕截圖即可查看詳細資料,包括建議的改進措施,以及一份更完整的清單,當中列出應用程式內適用相同改進措施的部分。

圖 2 為 Google Play 正式發布前測試報告「無障礙功能」分頁的表格示例。這張圖片還包含應用程式的一份數據匯報,顯示「下一個」按鈕的觸控目標大小低於建議值。

顯示正式發布前測試報告「無障礙功能」分頁的圖片
圖 2. 正式發布前測試報告「無障礙功能」分頁的摘要表格示例 (左側) 和螢幕截圖 (右側)。

UI Automator Viewer

uiautomatorviewer 工具提供便利的 GUI,用於掃描及分析 Android 裝置上當前顯示的 UI 元件。您可以使用 UI Automator 檢查版面配置階層,以及查看裝置前景所顯示 UI 元件的屬性。相關資訊可讓您建立更精細的測試,例如建立符合特定可見屬性的 UI 選取器。這項工具位於 Android SDK 的 tools 目錄中。

在無障礙功能測試中,此工具很適合用來找出並修正以其他測試方法發現的問題。舉例來說,如果手動測試結果顯示檢視區塊沒有可朗讀的必要文字,或是焦點移至不應聚焦的檢視區塊,您就能使用這項工具找出問題來源。

如要進一步瞭解 UI Automator Viewer,請參閱「使用 UI Automator 編寫自動化測試」。

Lint

Android Studio 會顯示各種無障礙功能問題的 Lint 警告,並提供原始碼中相關位置的連結。在下方示例中,圖片缺少 contentDescription 屬性,因此系統顯示以下訊息:

[Accessibility] Missing 'contentDescription' attribute on image

圖 3 為 Android Studio 中顯示這則訊息的例子。

Android Studio 回報部分圖片缺少內容說明的示例圖。
圖 3. Android Studio 中的訊息指出圖片缺少 contentDescription 屬性。

自動化測試

Android 平台支援多種測試架構,例如 Espresso,此架構可讓您建立並執行自動化測試,評估應用程式的無障礙功能。

Espresso

Espresso 是用來加速及簡化 UI 測試的 Android 測試程式庫。透過此程式庫,您可以與應用程式中接受測試的 UI 元件互動,並斷言會發生特定行為或滿足特定條件。

如果想概略瞭解如何使用 Espresso 測試無障礙功能,請觀看以下影片中 31 分 54 秒至 34 分 19 秒的片段:考量多元包容的設計與測試:打造更符合無障礙設計的應用程式 - 2016 年 Google I/O 大會

本節說明如何使用 Espresso 執行無障礙功能檢查。

啟用檢查功能

您可以使用 AccessibilityChecks 類別啟用及設定無障礙程度測試作業:

Kotlin

import androidx.test.espresso.accessibility.AccessibilityChecks

@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
    init {
        AccessibilityChecks.enable()
    }
}

Java

import androidx.test.espresso.accessibility.AccessibilityChecks;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
    @BeforeClass
    public void enableAccessibilityChecks() {
        AccessibilityChecks.enable();
    }
}

根據預設,當您執行 ViewActions 中定義的任何查看動作時,會執行檢查。每個檢查都包含在其上執行動作的檢視區塊,以及所有子系檢視區塊。在每項檢查期間,您可以將 true 傳遞至 setRunChecksFromRootView(),以評估螢幕的整個檢視區塊階層,如下方程式碼片段所示:

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

略過部分結果

Espresso 對應用程式執行無障礙功能檢查後,應用程式無障礙功能的一些改進機會可能無法立即解決。為避免 Espresso 測試因這些結果而持續失敗,您可以暫時予以忽略。無障礙功能測試架構 (ATF) 會使用 setSuppressingResultMatcher() 方法提供這項功能,指示 Espresso 略過所有符合指定比對器運算式的結果。

如果您對應用程式的變更可解決一個方面的無障礙問題,Espresso 會盡可能顯示更多其他方面的無障礙設計結果。因此,建議僅略過特定的已知改進機會。

當您暫時略過計劃稍後處理的無障礙功能測試發現結果時,請務必小心操作,不要意外略過相似的發現結果。出於此原因,建議使用限定範圍的比對器。如要這麼做,請選擇一個比對器,讓 Espresso 僅略過符合以下所有無障礙功能檢查條件的特定結果:

  1. 特定類型的無障礙功能檢查,例如檢查觸控目標大小。
  2. 用於評估特定 UI 元素 (例如按鈕) 的無障礙功能檢查。

ATF 定義了多個比對器,協助您定義要在 Espresso 測試中顯示的結果。下列範例會略過與單一 TextView 元素色彩對比相關的檢查結果。這個元素的 ID 是 countTV

Kotlin

AccessibilityChecks.enable().apply {
        setSuppressingResultMatcher(
                allOf(
                    matchesCheck(TextContrastCheck::class.java),
                    matchesViews(withId(R.id.countTV))
                )
        )
}

Java

AccessibilityValidator myChecksValidator =
    AccessibilityChecks.enable()
        .setSuppressingResultMatcher(
            allOf(
                matchesCheck(TextContrastCheck.class),
                matchesViews(withId(R.id.countTV))));

使用者測試

除了本指南中的其他測試方法外,使用者測試也可提供寶貴的具體深入分析資訊,方便您瞭解應用程式的可用性。

如要尋找可測試應用程式的使用者,可使用下列方法:

  1. 聯絡為身心障礙者提供訓練的當地機構、學院或大學。
  2. 詢問社交圈。有些身心障礙者可能會樂意提供協助。
  3. 洽詢 usertesting.com 等使用者測試服務機構,看看這類機構能否聯繫身心障礙者測試您的應用程式。
  4. 加入 Accessible 等無障礙工具論壇,招募志願者試用您的應用程式。

如需更多秘訣,請觀看以下影片中的「使用者測試」部分 (31 分 10 秒至 44 分 51 秒):幕後揭密:Android 無障礙功能的新進展 - 2016 年 Google I/O 大會