Uygulamanızın erişilebilirliğini test etme (Görünümler)

Kavramlar ve Jetpack Compose uygulaması

Erişilebilirlik testi, uygulamanızı kullanıcının bakış açısıyla deneyimlemenize ve gözden kaçırabileceğiniz kullanılabilirlik sorunlarını bulmanıza olanak tanır. Erişilebilirlik testi, engelli kullanıcılar da dahil olmak üzere tüm kullanıcılar için uygulamanızı daha güçlü ve çok yönlü hale getirme fırsatlarını ortaya çıkarabilir.

Bu belgede aşağıdaki yaklaşımlar açıklanmaktadır:

  • Analiz araçlarını kullanarak test etme: Uygulamanızın erişilebilirliğini iyileştirmeye yönelik fırsatları keşfetmek için araçları kullanın.
  • Otomatik test: Espresso ve Robolectric'te erişilebilirlik testini etkinleştirin.

Analiz araçlarını kullanarak test etme

Analiz araçları, manuel testle kaçırabileceğiniz erişilebilirliği iyileştirme fırsatlarını ortaya çıkarabilir.

Erişilebilirlik Tarayıcısı

Erişilebilirlik Tarayıcısı uygulaması, ekranınızı tarar ve uygulamanızın erişilebilirliğini iyileştirmenin yollarını önerir. Erişilebilirlik Tarayıcısı, Erişilebilirlik Testi Çerçevesi'ni kullanır ve içerik etiketlerine, tıklanabilir öğelere, kontrasta ve daha fazlasına baktıktan sonra belirli öneriler sunar.

Android Erişilebilirlik Test Çerçevesi, düzenlerinizdeki erişilebilirlik sorunlarını bulmanıza yardımcı olmak için Android Studio'ya entegre edilmiştir. Paneli başlatmak için hata raporu düğmesini tıklayın. Layout Editor'da.

Erişilebilirlik Tarayıcısı'nın demosu Şekil 1. Erişilebilirlik Tarayıcısı'nın demosu.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

UI Automator Viewer

uiautomatorviewer aracı, Android destekli bir cihazda şu anda görüntülenen kullanıcı arayüzü bileşenlerini taramak ve analiz etmek için kullanışlı bir GUI sağlar. Düzen hiyerarşisini incelemek ve cihazın ön planında görünen kullanıcı arayüzü bileşenlerinin özelliklerini görüntülemek için UI Automator'ı kullanabilirsiniz. Bu bilgiler, daha ayrıntılı testler oluşturmanıza olanak tanır. Örneğin, belirli bir görünür özellikle eşleşen bir kullanıcı arayüzü seçici oluşturabilirsiniz. Araç, Android SDK'nın tools dizininde bulunur.

Erişilebilirlik testinde bu araç, diğer test yöntemleriyle bulunan sorunlarda hata ayıklamak için kullanışlıdır. Örneğin, manuel testler bir görünümün gerekli okunabilir metne sahip olmadığını veya odaklanmaması gereken bir görünümün odaklandığını ortaya çıkarırsa sorunun kaynağını bulmak için bu aracı kullanabilirsiniz.

UI Automator Viewer hakkında daha fazla bilgi edinmek için UI Automator ile otomatik testler yazma başlıklı makaleyi inceleyin.

Tüy

Android Studio, çeşitli erişilebilirlik sorunlarıyla ilgili lint uyarıları gösterir ve kaynak kodunuzdaki ilgili yerlere bağlantılar sağlar. Aşağıdaki örnekte bir resimde contentDescription özelliği eksik. Eksik içerik açıklaması nedeniyle aşağıdaki mesaj gösterilir:

[Accessibility] Missing 'contentDescription' attribute on image

Şekil 2'de bu mesajın Android Studio'da nasıl göründüğüne dair bir örnek gösterilmektedir:

Android Studio'nun bazı resimlerde eksik içerik açıklaması olduğunu bildirdiği bir resim.
Şekil 2. Android Studio'da eksik contentDescription özelliğini gösteren mesaj.

Otomatik test

Android platformu, uygulamanızın erişilebilirliğini değerlendiren otomatik testler oluşturup çalıştırmanıza olanak tanıyan Espresso gibi çeşitli test çerçevelerini destekler.

Espresso

Espresso, kullanıcı arayüzü testini hızlı ve kolay hale getirmek için tasarlanmış bir Android test kitaplığıdır. Uygulamanızda test edilen kullanıcı arayüzü bileşenleriyle etkileşim kurmanıza ve belirli davranışların gerçekleştiğini ya da belirli koşulların karşılandığını onaylamanıza olanak tanır.

Espresso ile erişilebilirlik testine dair video özetini izlemek için aşağıdaki videoyu 31:54 ile 34:19 arasındaki bölümden itibaren izleyin: Inclusive design and testing: Making your app more accessible - Google I/O 2016 (Kapsayıcı tasarım ve test: Uygulamanızı daha erişilebilir hale getirme - Google I/O 2016).

Bu bölümde, Espresso'yu kullanarak erişilebilirlik kontrollerinin nasıl çalıştırılacağı açıklanmaktadır.

Kontrolleri etkinleştirme

Erişilebilirlik testini AccessibilityChecks sınıfını kullanarak etkinleştirebilir ve yapılandırabilirsiniz:

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();
    }
}

Varsayılan olarak, kontroller ViewActions içinde tanımlanan herhangi bir görüntüleme işlemini gerçekleştirdiğinizde çalışır. Her bir kontrol, işlemin yapıldığı görünümün yanı sıra tüm alt görünümleri de içerir. Aşağıdaki kod snippet'inde gösterildiği gibi true öğesini setRunChecksFromRootView() içine ileterek her kontrol sırasında bir ekranın görünüm hiyerarşisinin tamamını değerlendirebilirsiniz:

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

Sonuçların alt kümelerini gizleme

Espresso, uygulamanızda erişilebilirlik kontrolleri yaptıktan sonra uygulamanızın erişilebilirliğini iyileştirmek için hemen ele alamayacağınız çeşitli fırsatlar bulabilirsiniz. Espresso testlerinin bu sonuçlar nedeniyle sürekli olarak başarısız olmasını önlemek için bu sonuçları geçici olarak yoksayabilirsiniz. Erişilebilirlik Testi Çerçevesi (ATF), Espresso'ya verilen eşleştirici ifadesini karşılayan tüm sonuçları bastırmasını söyleyen setSuppressingResultMatcher() yöntemini kullanarak bu işlevi sağlar.

Uygulamanızda erişilebilirliğin bir yönünü ele alan değişiklikler yaptığınızda Espresso'nun, erişilebilirliğin mümkün olduğunca çok yönüyle ilgili sonuçlar göstermesi faydalıdır. Bu nedenle, yalnızca bilinen belirli iyileştirme fırsatlarını bastırmak en iyisidir.

Daha sonra ele almayı planladığınız erişilebilirlik testi bulgularını geçici olarak bastırdığınızda benzer bulguları yanlışlıkla bastırmadığınızdan emin olmanız önemlidir. Bu nedenle, kapsamı dar olan eşleştiriciler kullanın. Bunu yapmak için bir eşleştirici seçin. Böylece Espresso, yalnızca aşağıdaki erişilebilirlik kontrollerinin her birini karşılıyorsa belirli bir sonucu bastırır:

  1. Belirli bir türdeki erişilebilirlik kontrolleri (ör. dokunma hedefi boyutunu kontrol edenler).
  2. Bir düğme gibi belirli bir kullanıcı arayüzü öğesini değerlendiren erişilebilirlik kontrolleri.

ATF, Espresso testlerinizde hangi sonuçların gösterileceğini tanımlamanıza yardımcı olmak için çeşitli eşleştiriciler tanımlar. Aşağıdaki örnek, tek bir TextView öğesinin renk kontrastıyla ilgili kontrollerin sonuçlarını bastırır. Öğenin kimliği 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))));