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

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

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

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

手動測試

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

TalkBack

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

開啟 TalkBack

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

使用 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. 前往「Accessibility」並選取「Switch Access」,然後選取「Settings」
  4. 在「切換控制功能偏好設定」畫面中,確認「自動掃描」已關閉。
  5. 使用調低音量按鈕做為「下一個」鍵:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Voice Access

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

使用分析工具進行測試

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

無障礙功能檢查工具

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

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(
                    matchesCheckNames(`is`("TextContrastViewCheck")),
                    matchesViews(withId(R.id.countTV))
                )
        )
}

Java

AccessibilityValidator myChecksValidator = AccessibilityChecks.enable();
Matcher<? super AccessibilityViewCheckResult> myChecksMatcher =
        Matchers.allOf(matchesCheckNames(is("TextContrastViewCheck")),
                       matchesViews(withId(R.id.countTV)));
myChecksValidator.setSuppressingResultMatcher(myChecksMatcher);

使用者測試

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

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

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

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