अपने ऐप्लिकेशन की सुलभता की जांच करना (व्यू)

सिद्धांत और Jetpack Compose में लागू करना

सुलभता की जांच करने से, आपको उपयोगकर्ता के नज़रिए से अपने ऐप्लिकेशन को आज़माने का मौका मिलता है. साथ ही, इस्तेमाल से जुड़ी उन समस्याओं का पता चलता है जिन्हें आपने शायद नज़रअंदाज़ कर दिया हो. सुलभता की जांच से, आपको अपने ऐप्लिकेशन को सभी उपयोगकर्ताओं के लिए ज़्यादा बेहतर और वर्सेटाइल बनाने के मौके मिल सकते हैं. इनमें वे लोग भी शामिल हैं जिन्हें कोई शारीरिक परेशानी या दिव्यांगता है.

इस दस्तावेज़ में, इन तरीकों के बारे में बताया गया है:

  • विश्लेषण करने वाले टूल का इस्तेमाल करके जांच करना: टूल का इस्तेमाल करके, अपने ऐप्लिकेशन की सुलभता को बेहतर बनाने के अवसरों का पता लगाएं.
  • ऑटोमेटेड टेस्टिंग: Espresso और Robolectric में सुलभता टेस्टिंग चालू करें.

विश्लेषण करने वाले टूल का इस्तेमाल करके जांच करना

विश्लेषण करने वाले टूल, सुलभता को बेहतर बनाने के ऐसे अवसर ढूंढ सकते हैं जो आपको मैन्युअल टेस्टिंग के दौरान नहीं मिलते.

सुलभता जांचने वाला ऐप

Accessibility Scanner ऐप्लिकेशन, आपकी स्क्रीन को स्कैन करता है और आपके ऐप्लिकेशन की सुलभता को बेहतर बनाने के तरीके सुझाता है. Accessibility Scanner, Accessibility Test Framework का इस्तेमाल करता है. साथ ही, कॉन्टेंट के लेबल, क्लिक किए जा सकने वाले आइटम, कंट्रास्ट वगैरह को देखने के बाद, खास सुझाव देता है.

Android Accessibility Test Framework को Android Studio में इंटिग्रेट किया गया है. इससे आपको अपने लेआउट में सुलभता से जुड़ी समस्याएं ढूंढने में मदद मिलती है. पैनल लॉन्च करने के लिए, गड़बड़ी की रिपोर्ट वाले बटन ! पर क्लिक करें में जाकर, लेआउट एडिटर में बदलाव करें.

Accessibility Scanner का डेमो पहली इमेज. Accessibility Scanner का डेमो.

ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें:

UI Automator Viewer

uiautomatorviewer टूल, Android डिवाइस पर फ़िलहाल दिख रहे यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट को स्कैन और उनका विश्लेषण करने के लिए, एक आसान जीयूआई उपलब्ध कराता है. UI Automator का इस्तेमाल करके, लेआउट हैरारकी की जांच की जा सकती है. साथ ही, डिवाइस के फ़ोरग्राउंड पर दिखने वाले यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट की प्रॉपर्टी देखी जा सकती हैं. इस जानकारी की मदद से, ज़्यादा बारीकी से टेस्ट किए जा सकते हैं. उदाहरण के लिए, यूज़र इंटरफ़ेस (यूआई) सिलेक्टर बनाकर, किसी खास दिखने वाली प्रॉपर्टी से मैच किया जा सकता है. यह टूल, Android SDK की tools डायरेक्ट्री में मौजूद है.

सुलभता की जांच करने के लिए, यह टूल उन समस्याओं को डीबग करने में मददगार होता है जिनका पता जांच के अन्य तरीकों से लगाया गया है. उदाहरण के लिए, अगर मैन्युअल टेस्टिंग से पता चलता है कि किसी व्यू में ज़रूरी टेक्स्ट नहीं है या किसी व्यू पर तब फ़ोकस किया जाता है, जब ऐसा नहीं होना चाहिए, तो इस टूल का इस्तेमाल करके समस्या के सोर्स का पता लगाया जा सकता है.

UI Automator Viewer के बारे में ज़्यादा जानने के लिए, UI Automator की मदद से ऑटोमेटेड टेस्ट लिखना लेख पढ़ें.

लिंट

Android Studio, सुलभता से जुड़ी अलग-अलग समस्याओं के लिए लिंट चेतावनियां दिखाता है. साथ ही, आपके सोर्स कोड में काम की जगहों के लिंक देता है. यहां दिए गए उदाहरण में, इमेज में contentDescription एट्रिब्यूट मौजूद नहीं है. कॉन्टेंट के ब्यौरे के मौजूद न होने पर, यह मैसेज दिखता है:

[Accessibility] Missing 'contentDescription' attribute on image

दूसरी इमेज में दिखाया गया है कि Android Studio में यह मैसेज कैसा दिखता है:

Android Studio में, कुछ इमेज के लिए कॉन्टेंट की जानकारी मौजूद न होने की सूचना देने वाली इमेज.
दूसरी इमेज. Android Studio में, contentDescription एट्रिब्यूट की वैल्यू मौजूद न होने की जानकारी देने वाला मैसेज.

ऑटोमेटेड टेस्टिंग

Android प्लैटफ़ॉर्म पर कई टेस्टिंग फ़्रेमवर्क काम करते हैं. जैसे, Espresso. इसकी मदद से, ऑटोमेटेड टेस्ट बनाए और चलाए जा सकते हैं. ये टेस्ट, आपके ऐप्लिकेशन की सुलभता का आकलन करते हैं.

एस्प्रेसो

Espresso, Android टेस्टिंग लाइब्रेरी है. इसे यूज़र इंटरफ़ेस (यूआई) की टेस्टिंग को तेज़ और आसान बनाने के लिए डिज़ाइन किया गया है. इसकी मदद से, ऐप्लिकेशन में टेस्ट किए जा रहे यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के साथ इंटरैक्ट किया जा सकता है. साथ ही, यह पुष्टि की जा सकती है कि कुछ गतिविधियां हुई हैं या कुछ खास शर्तें पूरी हुई हैं.

Espresso की मदद से ऐक्सेसिबिलिटी की जांच करने के बारे में वीडियो की खास जानकारी देखने के लिए, यहां दिया गया वीडियो 31:54 से 34:19 तक देखें: Inclusive design and testing: Making your app more accessible - Google I/O 2016.

इस सेक्शन में, 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 टेस्ट लगातार फ़ेल हो रहे हैं. इन्हें कुछ समय के लिए अनदेखा किया जा सकता है. ऐक्सेसिबिलिटी टेस्ट फ़्रेमवर्क (एटीएफ़), setSuppressingResultMatcher() तरीके का इस्तेमाल करके यह सुविधा देता है. यह तरीका, Espresso को उन सभी नतीजों को छिपाने का निर्देश देता है जो दिए गए मैच करने वाले एक्सप्रेशन को पूरा करते हैं.

जब ऐप्लिकेशन में सुलभता से जुड़े किसी एक पहलू को ध्यान में रखकर बदलाव किए जाते हैं, तो Espresso के लिए यह फ़ायदेमंद होता है कि वह सुलभता से जुड़े ज़्यादा से ज़्यादा अन्य पहलुओं के नतीजे दिखाए. इसलिए, सिर्फ़ उन अवसरों को दबाना सबसे अच्छा होता है जिनके बारे में आपको पता है कि उनसे परफ़ॉर्मेंस बेहतर हो सकती है.

अगर आपको सुलभता की जांच के नतीजों को कुछ समय के लिए छिपाना है, ताकि बाद में उन पर काम किया जा सके, तो यह ज़रूरी है कि आप गलती से मिलते-जुलते नतीजों को न छिपाएं. इस वजह से, ऐसे मैचर्स का इस्तेमाल करें जिनका स्कोप सीमित हो. इसके लिए, कोई मैचर चुनें, ताकि Espresso किसी नतीजे को सिर्फ़ तब छिपाए, जब वह सुलभता से जुड़ी इन सभी जांचों को पूरा करता हो:

  1. किसी खास तरह की सुलभता जांच, जैसे कि टच टारगेट के साइज़ की जांच करने वाली जांच.
  2. सुलभता की जांचें, जो किसी यूज़र इंटरफ़ेस (यूआई) एलिमेंट का आकलन करती हैं. जैसे, बटन.

ATF, कई मैचर तय करता है. इनकी मदद से, यह तय किया जा सकता है कि Espresso टेस्ट में कौनसे नतीजे दिखाने हैं. यहां दिए गए उदाहरण में, उन जांचों के नतीजों को छिपाया गया है जो किसी एक TextView एलिमेंट के कलर कंट्रास्ट से जुड़ी हैं. इस एलिमेंट का आईडी 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))));