स्क्रीन और विंडो के अलग-अलग साइज़ आज़माएं

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

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

क्या जांचना है

अलग-अलग स्क्रीन और विंडो साइज़ के लिए यूज़र इंटरफ़ेस (यूआई) बनाते समय, इन दो बातों पर खास ध्यान दें:

  1. अलग-अलग साइज़ की विंडो पर, कॉम्पोनेंट और लेआउट के विज़ुअल एट्रिब्यूट अलग-अलग कैसे होते हैं
  2. कॉन्फ़िगरेशन में बदलाव होने पर, स्टेटस को कैसे सुरक्षित रखा जाता है

विज़ुअल एट्रिब्यूट

अलग-अलग विंडो साइज़ के लिए यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाया जाए या नहीं, आपको यह पक्का करना चाहिए कि यूआई सही तरीके से दिख रहे हों. कॉम्पैक्ट, मीडियम, और एक्सटेंडेड चौड़ाई और ऊंचाई का ध्यान रखें. सुझाए गए ब्रेकपॉइंट के लिए, विंडो साइज़ क्लास देखें.

पहला डायग्राम. Android पर 'अभी' में "आपके लिए" स्क्रीन, अलग-अलग विंडो साइज़ में

साथ ही, हो सकता है कि आपका ऐप्लिकेशन आपके डिज़ाइन सिस्टम में मौजूद कुछ कॉम्पोनेंट को उम्मीद के मुताबिक रेंडर न कर पाए, जब उनके साइज़ की सीमाएं बढ़ाई जाएं.

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

स्टेटस वापस लाना

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

दूसरी इमेज. फ़ोल्ड किए जा सकने वाले डिवाइस को फ़ोल्ड किया गया, फ़्लैट किया गया, फ़्लैट करके लैंडस्केप मोड में घुमाया गया, और आधा खोला गया (टेबलटॉप).

सबसे पहले, यह जांच लें कि कॉन्फ़िगरेशन में बदलाव होने पर, आपका ऐप्लिकेशन क्रैश न हो. पक्का करें कि आपके ऐप्लिकेशन का हर यूज़र इंटरफ़ेस (यूआई), घुमाने, साइज़ बदलने या फ़ोल्ड करने के किसी भी कॉम्बिनेशन को हैंडल कर सकता हो. कॉन्फ़िगरेशन में बदलाव करने पर, गतिविधि डिफ़ॉल्ट रूप से फिर से बन जाती है. इसलिए, गतिविधि के बने रहने की गलत धारणाओं की वजह से कुछ क्रैश होते हैं.

कॉन्फ़िगरेशन में किए गए बदलावों की जांच करने के कई तरीके हैं. हालांकि, ज़्यादातर मामलों में, जांच करने के दो तरीके होते हैं:

  • Compose में, StateRestorationTester का इस्तेमाल करके, गतिविधि को फिर से शुरू किए बिना कॉन्फ़िगरेशन में बदलाव का अनुकरण करें. ज़्यादा जानकारी के लिए, यहां दिए गए सेक्शन देखें.
  • Espresso या Compose जैसे किसी भी यूज़र इंटरफ़ेस (यूआई) टेस्ट में, Activity.recreate() को कॉल करके कॉन्फ़िगरेशन में बदलाव का अनुकरण करें.

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

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

एक डिसप्ले से दूसरे डिसप्ले पर जाने या मल्टी-विंडो मोड में जाने पर, डिवाइसों पर होने वाले कॉन्फ़िगरेशन में बदलावों की जांच करने के लिए, आपके पास कई विकल्प हैं:

  • किसी भी डिवाइस का इस्तेमाल करके, टेस्ट के दौरान स्क्रीन का साइज़ बदलें. ज़्यादातर मामलों में, इससे स्थिति को पहले जैसा करने के सभी तरीके ट्रिगर हो जाते हैं. आपको इनकी पुष्टि करनी होगी. हालांकि, यह जांच उस लॉजिक के लिए काम नहीं करेगी जो फ़ोल्ड किए जा सकने वाले डिवाइसों के खास पोज़िशन का पता लगाता है. इसकी वजह यह है कि पोज़िशन में बदलाव होने पर, कॉन्फ़िगरेशन में बदलाव नहीं होता.
  • आपको जिन सुविधाओं की जांच करनी है उनके साथ काम करने वाले डिवाइस या एम्युलेटर का इस्तेमाल करके, उनसे जुड़े कॉन्फ़िगरेशन में बदलाव ट्रिगर करें. उदाहरण के लिए, फ़ोल्ड किए जा सकने वाले डिवाइस या टैबलेट को Espresso Device का इस्तेमाल करके कंट्रोल किया जा सकता है. इससे, डिवाइस को फ़ोल्ड किए गए मोड से लैंडस्केप मोड में खोला जा सकता है. उदाहरणों के लिए, अलग-अलग स्क्रीन साइज़ की जांच करने के लिए लाइब्रेरी और टूल के Espresso डिवाइस सेक्शन देखें.
तीसरी इमेज. डिवाइस को फ़ोल्ड और अनफ़ोल्ड किया जा रहा है.

अलग-अलग स्क्रीन और विंडो साइज़ के लिए टेस्ट के टाइप

हर इस्तेमाल के उदाहरण के लिए, सही तरह के टेस्ट का इस्तेमाल करें. इससे यह पुष्टि की जा सकेगी कि टेस्ट, अलग-अलग फ़ॉर्म फ़ैक्टर में सही तरीके से काम कर रहा है या नहीं:

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

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

  • स्क्रीनशॉट टेस्ट, किसी यूज़र इंटरफ़ेस (यूआई) या कॉम्पोनेंट का स्क्रीनशॉट लेते हैं और इमेज की तुलना, पहले से मंज़ूरी पा चुके स्क्रीनशॉट से करते हैं. यह, रिग्रेशन से बचाव करने का एक बहुत ही असरदार तरीका है. इसकी वजह यह है कि एक स्क्रीनशॉट में, कई एलिमेंट और उनकी विज़ुअल प्रॉपर्टी शामिल की जा सकती हैं. स्क्रीनशॉट की जांच, JVM या डिवाइसों पर की जा सकती है. स्क्रीनशॉट टेस्ट के लिए कई फ़्रेमवर्क उपलब्ध हैं. ज़्यादा जानकारी के लिए, स्क्रीनशॉट टेस्ट देखें.

आखिर में, आपको लॉजिक की यूनिट की फ़ंक्शनैलिटी की जांच करने के लिए, यूनिट टेस्ट की ज़रूरत पड़ सकती है. ये यूनिट, डिवाइस के टाइप या विंडो के साइज़ के हिसाब से अलग-अलग तरीके से काम करती हैं. हालांकि, इस क्षेत्र में यूनिट टेस्ट का इस्तेमाल कम किया जाता है.

अगले चरण

इस दस्तावेज़ में दी गई जांच को लागू करने के तरीके के बारे में ज़्यादा जानने के लिए, लाइब्रेरी और टूल देखें.