Menguji aksesibilitas aplikasi Anda (Tampilan)

Konsep dan penerapan Jetpack Compose

Pengujian aksesibilitas memungkinkan Anda merasakan pengalaman menggunakan aplikasi dari perspektif pengguna dan menemukan masalah kegunaan yang mungkin terlewatkan. Pengujian aksesibilitas dapat mengungkap peluang untuk membuat aplikasi Anda lebih andal dan serbaguna bagi semua pengguna, termasuk yang menyandang disabilitas.

Dokumen ini menjelaskan pendekatan berikut:

  • Menguji dengan alat analisis: gunakan alat untuk menemukan peluang untuk meningkatkan aksesibilitas aplikasi Anda.
  • Pengujian otomatis: aktifkan pengujian aksesibilitas di Espresso dan Robolectric.

Menguji menggunakan alat analisis

Alat analisis dapat membuka peluang untuk meningkatkan aksesibilitas yang mungkin Anda lewatkan dengan pengujian manual.

Accessibility Scanner

Aplikasi Accessibility Scanner memindai layar Anda dan memberikan saran untuk meningkatkan aksesibilitas aplikasi Anda. Accessibility Scanner menggunakan Framework Pengujian Aksesibilitas dan memberikan saran spesifik setelah melihat label konten, item yang dapat diklik, kontras, dan sebagainya.

Framework Pengujian Aksesibilitas Android terintegrasi di Android Studio untuk membantu Anda menemukan masalah aksesibilitas di tata letak. Untuk meluncurkan panel, klik tombol laporan error ! di Layout Editor.

Demo Accessibility Scanner Gambar 1. Demo Accessibility Scanner.

Untuk mempelajari lebih lanjut, lihat referensi berikut:

UI Automator Viewer

Alat uiautomatorviewer menyediakan GUI yang mudah digunakan untuk memindai dan menganalisis komponen UI yang sedang ditampilkan di perangkat yang didukung Android. Anda dapat menggunakan UI Automator untuk memeriksa hierarki tata letak dan menampilkan properti komponen UI yang terlihat di latar depan perangkat. Informasi ini memungkinkan Anda membuat pengujian yang lebih mendetail, misalnya dengan membuat pemilih UI yang cocok dengan properti tertentu yang dapat dilihat. Alat ini berada di direktori tools Android SDK.

Dalam pengujian aksesibilitas, alat ini berguna untuk men-debug masalah yang ditemukan melalui metode pengujian lainnya. Misalnya, jika pengujian manual mengungkapkan bahwa tampilan tidak memiliki teks lisan yang semestinya ada, atau tampilan menerima fokus padahal semestinya tidak, Anda dapat menggunakan alat ini untuk membantu menemukan sumber masalah.

Untuk mempelajari UI Automator Viewer lebih lanjut, lihat Menulis pengujian otomatis dengan UI Automator.

Lint

Android Studio menampilkan peringatan lint untuk berbagai masalah aksesibilitas dan menyediakan link ke tempat yang relevan dalam kode sumber. Dalam contoh berikut ini, gambar tidak memiliki atribut contentDescription. Deskripsi konten yang hilang akan menghasilkan pesan berikut:

[Accessibility] Missing 'contentDescription' attribute on image

Gambar 2 menunjukkan contoh tampilan pesan ini di Android Studio:

Gambar yang menunjukkan Android Studio melaporkan deskripsi konten yang tidak ada di beberapa gambar.
Gambar 2. Pesan di Android Studio yang menunjukkan atribut yang hilang contentDescription
.

Pengujian otomatis

Platform Android mendukung beberapa framework pengujian, seperti Espresso, yang memungkinkan Anda membuat dan menjalankan pengujian otomatis yang mengevaluasi aksesibilitas aplikasi Anda.

Espresso

Espresso adalah library pengujian Android yang didesain untuk menjadikan pengujian UI cepat dan mudah. Hal ini memungkinkan Anda berinteraksi dengan komponen UI yang sedang diuji di aplikasi Anda dan menegaskan bahwa perilaku tertentu terjadi atau kondisi tertentu terpenuhi.

Untuk melihat video ringkasan pengujian aksesibilitas dengan Espresso, tonton video berikut dari menit 31.54 sampai 34.19: Desain dan pengujian inklusif: Menjadikan aplikasi Anda lebih mudah diakses - Google I/O 2016.

Bagian ini akan menjelaskan cara menjalankan pemeriksaan aksesibilitas menggunakan Espresso.

Mengaktifkan pemeriksaan

Anda dapat mengaktifkan dan mengonfigurasi pengujian aksesibilitas menggunakan class 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();
    }
}

Secara default, pemeriksaan berjalan saat Anda melakukan tindakan tampilan apa pun yang ditentukan dalam ViewActions. Setiap pemeriksaan mencakup tampilan tempat tindakan dilakukan serta semua tampilan turunannya. Anda dapat mengevaluasi seluruh hierarki tampilan layar selama setiap pemeriksaan dengan meneruskan true ke setRunChecksFromRootView(), seperti ditunjukkan dalam cuplikan kode berikut:

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

Menyembunyikan subkumpulan hasil

Setelah Espresso menjalankan pemeriksaan aksesibilitas di aplikasi, Anda mungkin menemukan beberapa peluang untuk meningkatkan aksesibilitas aplikasi yang tidak dapat segera Anda tangani. Agar pengujian Espresso tidak terus-menerus gagal karena hasil ini, Anda dapat mengabaikannya untuk sementara. Framework Pengujian Aksesibilitas (ATF) menyediakan fungsionalitas ini menggunakan metode setSuppressingResultMatcher(), yang menginstruksikan Espresso untuk menahan semua hasil yang memenuhi ekspresi matcher yang diberikan.

Saat Anda melakukan perubahan pada aplikasi yang menangani satu aspek aksesibilitas, sebaiknya Espresso menampilkan hasil untuk sebanyak mungkin aspek aksesibilitas lainnya. Oleh karena itu, sebaiknya hanya sembunyikan peluang tertentu yang diketahui untuk peningkatan.

Saat Anda menyembunyikan sementara temuan pengujian aksesibilitas yang akan Anda coba nanti, penting untuk tidak menyembunyikan temuan serupa secara tidak sengaja. Oleh karena itu, gunakan matcher yang terbatas cakupannya. Untuk melakukannya, pilih matcher sehingga Espresso menyembunyikan hasil yang diberikan, hanya jika memenuhi setiap pemeriksaan aksesibilitas berikut:

  1. Pemeriksaan aksesibilitas jenis tertentu, seperti pemeriksaan ukuran target sentuh.
  2. Pemeriksaan aksesibilitas yang mengevaluasi elemen UI tertentu, seperti tombol.

ATF menentukan beberapa matcher untuk membantu Anda menentukan hasil yang akan ditampilkan dalam pengujian Espresso Anda. Contoh berikut ini akan menyembunyikan hasil pemeriksaan yang berhubungan dengan satu kontras warna elemen TextView. ID elemennya adalah 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))));