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.
Ş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:
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:
- Belirli bir türdeki erişilebilirlik kontrolleri (ör. dokunma hedefi boyutunu kontrol edenler).
- 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))));