測試無障礙程度可讓您從使用者的角度體驗應用程式,並找出您可能錯過的可用性問題。無障礙程度測試可協助您發掘更多機會,讓包括身心障礙者在內的所有使用者都能享有更強大、更靈活的應用程式。
為獲得最佳效果,請使用本文件所述的所有方法:
- 手動測試:使用 Android 無障礙服務與您的應用程式互動。
- 使用分析工具進行測試:利用相關工具探索可改善應用程式無障礙功能的機會。
- 自動化測試:在 Espresso 和 Robolectric 中開啟無障礙程度測試。
- 使用者測試:要求與應用程式互動的真實使用者提供意見回饋。
手動測試
手動測試會將您置於使用者的視角。Android AccessibilityService
物件會變更應用程式內容向使用者顯示的方式,以及使用者與內容互動的方式。使用無障礙服務與應用程式互動,可讓您像使用者一樣體驗應用程式。
TalkBack
TalkBack 是 Android 的內建螢幕閱讀器。開啟 TalkBack 後,使用者就能直接與 Android 裝置互動,而不必查看螢幕。視障使用者可能需要藉助 TalkBack 才能使用您的應用程式。
開啟 TalkBack
- 開啟裝置的「設定」應用程式。
- 前往「無障礙功能」並選取「TalkBack」。
- 按下 TalkBack 螢幕頂端的「開啟/關閉」以開啟 TalkBack。
- 在確認對話方塊中,選取「確定」確認權限。
使用 TalkBack 探索應用程式
開啟 TalkBack 後,將提供兩種常用導覽方式:
- 線性導覽:快速向右或向左滑動,即可瀏覽序列中的各個螢幕元素。輕觸兩下任意位置即可選取。
- 輕觸探索:用一根手指在螢幕上拖曳,聽取指尖觸及的內容。輕觸兩下任意位置即可選取。
如要透過 TalkBack 探索應用程式,請完成下列步驟:
- 開啟應用程式。
- 依序滑動各個元素。
導覽過程中,請留意下列問題:
- 每個元素的互動朗讀是否正確傳達了其內容或用途?(瞭解如何編寫有意義的標籤)。
- 公告內容是簡潔明瞭,還是過於冗長?
- 您能否輕鬆完成主要工作流程?
- 您可以透過滑動手勢觸及每個元素嗎?
- 如果出現快訊或其他臨時訊息,訊息會大聲讀出嗎?
如需詳細資訊和提示,請參閱 TalkBack 使用者說明文件。
選用:TalkBack 開發人員設定
TalkBack 開發人員設定讓您能夠更輕鬆地使用 TalkBack 測試應用程式。
如要查看或變更開發人員設定,請完成下列步驟:
- 開啟裝置的「設定」應用程式。
- 前往「無障礙功能」並選取「TalkBack」。
依序選取「設定」>「進階設定」>「開發人員設定」:
- 記錄輸出等級:選取「詳細」。
- 顯示語音輸出:開啟這項設定即可在螢幕上查看 TalkBack 語音輸出。
切換控制功能
「切換控制功能」可讓使用者使用切換裝置與 Android 裝置互動,而不使用觸控螢幕。切換裝置分為以下幾種:輔助技術裝置 (例如 AbleNet 販售的裝置、Enable Devices、RJ Cooper 或 Tecla*);外接鍵盤按鍵;或按鈕。這項服務對於動作功能受損的使用者非常實用。
* Google 不為這些公司或其產品背書。
開啟切換控制功能
一種簡單的切換控制功能設定方法是使用兩個切換裝置。其中一個切換裝置設計為「下一個」切換開關,用於在螢幕上移動焦點,第二個為「選取」切換開關,用於選取聚焦的元素。如要使用這種雙切換裝置的方法,則可使用任意硬體索引鍵配對。
注意:視乎使用的工具和軟體,切換控制功能的使用體驗會有所不同:
- 如果使用外接切換裝置 (例如鍵盤),則需要額外的設定步驟。例如,您需要重新啟用螢幕鍵盤。詳情請參閱切換控制功能使用者說明文件。
- 如果使用 TalkBack 5.1 或以上版本,則可使用設定精靈設定切換控制功能。如要使用此設定精靈,而非執行下方步驟,請前往「設定」>「無障礙功能」>「切換控制功能」>「設定」>「開啟切換控制功能設定」。
如要將切換控制功能設定為使用調低音量做為「下一個」切換開關,並使用調高音量鍵作為「選取」切換開關,請完成下列步驟:
- 確認 TalkBack 已關閉。
- 開啟裝置的「設定」應用程式。
- 前往「無障礙功能」並選取「切換控制功能」,然後選取「設定」。
- 在「切換控制功能偏好設定」螢幕中,確認「自動掃描」為關閉。
使用調低音量鍵做為「下一個」切換開關:
- 依序輕觸「指定掃描按鍵」>「下一個」。
- 當對話方塊開啟時,按下調低音量鍵。對話方塊會顯示 KEYCODE_VOLUME_DOWN。
- 輕觸「確定」即可確認並關閉對話方塊。
使用調高音量鍵做為「選取」切換開關:
- 輕觸「選取」。
- 當對話方塊開啟時,按下調高音量鍵。對話方塊會顯示 KEYCODE_VOLUME_UP。
- 輕觸「確定」即可確認並關閉對話方塊。
如要返回切換控制功能偏好設定,請按下返回按鈕。
選用:如果您使用 TalkBack 5.1 或以上版本,可以選取「互動朗讀」來開啟互動朗讀功能。
如要返回切換控制功能主畫面,請按下返回按鈕。
按一下「切換控制功能」螢幕頂端的「開啟/關閉」即可開啟切換控制功能。
在確認對話方塊中,選取「確定」確認權限。
使用切換控制功能探索應用程式
如要透過切換控制功能探索應用程式,請完成下列步驟:
- 開啟應用程式。
- 按一下「下一個」切換開關 (調低音量) 即可開始掃描。
- 持續按「下一個」,直到移到您想選取的項目。
- 按下「選取」切換開關 (調高音量) 即可選取醒目顯示的項目。
導覽過程中,請留意下列問題:
- 您能否輕鬆完成主要工作流程?
- 如果有文字或其他輸入內容,能否輕鬆新增和編輯內容?
- 是否僅當對項目執行動作時,系統才會醒目顯示這些項目?
- 每個項目是否只會醒目顯示一次?
- 可透過觸控螢幕手勢執行的所有功能,都會在切換控制功能中做為可選控制項或自訂動作提供嗎?
- 如果使用 TalkBack 5.1 或以上版本,且已開啟互動朗讀功能,每個元素的互動朗讀是否正確傳達了其內容或用途?(瞭解如何編寫有意義的標籤)。
選用:使用群組選取功能查看所有可掃描項目
群組選取功能是切換控制功能的一種導覽方法,可讓您一次查看所有可掃描項目。這個選項可讓您快速檢查螢幕上是否醒目顯示了正確的元素。
如要開啟群組選取功能,請完成下列步驟:
- 開啟裝置的「設定」應用程式。
- 前往「無障礙功能」並選取「切換控制功能」,然後選取「設定」。
- 在「切換控制功能偏好設定」螢幕中,確認「自動掃描」為關閉。
- 依序選取「掃描方法」>「群組選取」。
- 輕觸「為掃描指派切換裝置」。
- 查看「群組選取切換開關 1」和「群組選取切換開關 2」下顯示的文字,確認已向每個切換開關指派切換裝置。如果您已執行開啟切換控制功能的相關操作,則應當已指派音量按鈕。
如要透過切換控制功能的群組選取功能探索應用程式,請完成下列步驟:
按下「選取」鍵 (調高音量) 即可醒目顯示目前螢幕上所有可操作項目。留意下列問題:
- 是否只醒目顯示了可操作項目?
- 所有可操作項目都醒目顯示了嗎?
- 醒目顯示項目的密度是否合理?
導覽至其他畫面即可清除醒目顯示。
如要進一步瞭解使用者如何透過群組選取進行導覽,請參閱切換控制功能的使用秘訣。
其他服務
Android 提供了數種其他工具,協助您測試應用程式的無障礙程度。
BrailleBack
Google BrailleBack 應用程式可讓使用者透過藍牙將可更新的點字顯示器連線至 Android 裝置。BrailleBack 可與 TalkBack 搭配使用,提供結合語音和點字的使用體驗。
如要使用點字顯示器測試應用程式,請參閱安裝和開啟 BrailleBack瞭解操作方式。
如要查看 BrailleBack 顯示的點字 (和 ASCII 翻譯),但不連線點字顯示器,則可使用 BraaBack 設定中的重疊選項:
- 開啟裝置的「設定」應用程式。
- 前往「無障礙功能」並選取「BrailleBack」。
- 依序選取「設定」>「開發人員選項」>「在螢幕上顯示點字輸出」。
Voice Access
Voice Access 讓使用者能透過語音指令控制 Android 裝置。Voice Access 適用於搭載 Android 5.0 (API 級別 21) 及以上版本的裝置。如要使用 Voice Access 測試應用程式,請參閱 Voice Access 入門指南瞭解詳情。
分析工具
使用分析工具進行測試,有助於發現使用手動測試可能錯失的無障礙功能改善機會。
無障礙功能掃描工具
無障礙功能檢查工具會掃描螢幕並提供建議,協助改善應用程式的無障礙設計。無障礙功能掃描工具會使用無障礙功能測試架構,並在檢查內容標籤、可點擊項目、對比等內容後,給出具體建議。
我們已將 Android 無障礙功能測試架構整合至 Android Studio,協助您找出版面配置中的無障礙功能問題。如要啟動面板,請按一下版面配置編輯器中的錯誤報告按鈕 。
瞭解詳情:
Google Play 正式發布前測試報告
如果您在 Google Play 上發布應用程式,即可存取有關應用程式的正式發布前測試報告。在您使用 Google Play 管理中心將應用程式上傳至發布版本後,Google Play 很快就會產生這份報告。Google Play 管理中心內也會提供正式發布前測試報告,其中顯示 Google Play 對應用程式的測試結果。
需要特別注意的是,Google Play 會使用無障礙功能測試架構執行無障礙程度測試。測試結果會顯示在應用程式正式發布前測試報告「無障礙功能」分頁的表格中。
表格會將改進機會分入以下類別:
- 觸控目標大小
- 應用程式內具有可聚焦區域 (或觸控目標大小) 的互動元素,且該元素的大小低於建議值。
- 低對比
- 文字元素和元素後方背景的色彩對比度低於建議值。
- 內容標籤
- UI 元素不包含用於說明給定元素用途的標籤。
- 實作
- 系統指派給 UI 元素的屬性,讓系統的無障礙服務更難以正確解讀元素。例如定義可編輯
View
標籤的說明,以及使用不符合元素邏輯排列方式的元素週遊順序。
在表格之後,正式發布前測試報告會顯示應用程式的數據匯報。這些數據匯報代表各個類別中改善應用程式無障礙功能的機會。選取螢幕截圖即可查看詳細資料,包括建議的改善項目,以及應用程式中可執行相同改進的完整位置清單。
圖 1 為 Google Play 正式發布前測試報告的「無障礙功能」分頁中顯示的資料表範例。此圖還包含應用程式的一個數據匯報,顯示「下一個」按鈕的觸控目標大小低於建議值。
UI Automator Viewer
uiautomatorviewer
工具提供便利的 GUI,用以掃描和分析 Android 裝置上當前顯示的 UI 元件。您可以使用 UI Automator 檢查版面配置階層,以及查看裝置前景可見的 UI 元件之屬性。此資訊可讓您建立更精細的測試,例如建立符合特定可見屬性的 UI 選取器。該工具位於 Android SDK 的 tools
目錄中。
在無障礙程度測試中,這款工具非常適合用來解除使用其他測試方法發現的問題。舉例來說,如果手動測試產生的檢視畫面本應具有朗讀文字但沒有,或本不應收到聚焦卻實際收到了聚焦,則可使用此工具找出錯誤來源。
如要進一步瞭解 UI Automator Viewer,請參閱測試多個應用程式的 UI。
Lint
Android Studio 會針對多種無障礙問題顯示 Lint 警告,並提供包含這些問題的原始碼位置連結。在以下範例中,圖片缺少 contentDescription
屬性。缺少內容說明會產生下列訊息:
[Accessibility] Missing 'contentDescription' attribute on image
圖 2 為 Android Studio 中此訊息顯示方式範例:
contentDescription
屬性如果無障礙服務 (如螢幕閱讀器) 的使用者在應用程式中遇到這張圖片,就無法理解圖片的含義。
自動化測試
Android 平台支援多種測試架構,包括 Espresso 和 Robolectric,使用每種架構都可建立並執行自動化測試,評估應用程式的無障礙程度。
如要瞭解如何使用 Espresso 和 Robolectric 進行無障礙程度測試,請觀看下列影片中從 31:54 到 34:19 分的片段:多元包容設計和測試:讓您的應用程式更容易使用 - 2016 年 Google I/O 大會。
Espresso
Espresso 是專用於加速並簡化 UI 測試的 Android 測試程式庫。使用該程式庫,您可與應用程式中正在進行測試的 UI 元件互動,並斷言會發生特定行為或符合特定條件。
本節說明如何使用 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 僅略過符合以下所有無障礙功能檢查條件的特定結果:
- 特定類型的無障礙功能檢查,例如檢查觸控目標大小。
- 用於評估特定 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);
Robolectric
Robolectric 是開放原始碼的 Android 測試程式庫,可讓您在 JVM 上測試真實的 Android 程式碼,而無需啟動模擬器。請參閱 Robolectric 入門瞭解詳情。
略過已知問題
首次啟用 Robolectric 檢查時,可能會遇到無法立即處理的問題。可以為想要略過的結果設定一個比對器,從而略過這些錯誤。詳情請參閱 AccessibilityUtil
類別的 setSuppressingResultMatcher()
方法說明文件 (該類別可在 Robolectric 中使用)。
使用者測試
除了本指南中提供的測試方法外,使用者測試也可以提供有關應用程式可用性的寶貴深入分析資訊。
如要尋找可測試應用程式的使用者,可使用下列方法:
- 聯絡為身心障礙者提供訓練的當地機構、學院或大學。
- 詢問社交圈。有些身心障礙者可能會樂意提供協助。
- 詢問使用者測試服務 (例如 usertesting.com) 是否能聯繫身心障礙使用者來測試您的應用程式。
- 加入無障礙工具論壇 (例如 Accessibility 或 Eyes-free),詢問是否有志工願意試用您的應用程式。
如需更多秘訣,請觀看本影片中的「使用者測試」部分,時間為 31:10 到 44:51 分:幕後花絮:Android 無障礙功能的新進展 - 2016 年 Google I/O 大會。