उपकरण परीक्षण के साथ आरंभ करें

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

बाद के चरणों में, आप अपने ऐप का एपीके और अपने परीक्षण का एपीके फायरबेस पर अपलोड करेंगे।

(वैकल्पिक) अपने ऐप में स्क्रीनशॉट लाइब्रेरी जोड़ें

फायरबेस टेस्ट लैब में एक लाइब्रेरी (टेस्टलैब-इंस्ट्र-लिब) शामिल है जिसका उपयोग आप इंस्ट्रूमेंटेशन टेस्ट चलाते समय एंड्रॉइडएक्स के स्क्रीनकैप्चर के साथ लिए गए किसी भी स्क्रीनशॉट को संसाधित करने के लिए कर सकते हैं, जैसे कि एस्प्रेसो टेस्ट फ्रेमवर्क का उपयोग करके लिखे गए परीक्षण। यह अनुभाग वर्णन करता है कि एंड्रॉइडएक्स लाइब्रेरी के साथ ScreenCapture ऑब्जेक्ट कैसे बनाएं और टेस्टलैब-इंस्ट्र-लिब का उपयोग करके उन्हें कैसे संसाधित करें।

आपका इंस्ट्रुमेंटेशन परीक्षण चलने के बाद, आप कैप्चर किए गए स्क्रीनशॉट को फायरबेस कंसोल में देख सकते हैं।

एक नमूना ऐप आज़माएं

इस कार्यक्षमता को आज़माने के लिए नोटपैड नमूना ऐप डाउनलोड करें। स्क्रीनशॉट लेने की क्षमता नोटपैड प्रोजेक्ट में पहले से ही शामिल है।

चरण 1. स्क्रीनशॉट लाइब्रेरी को अपने प्रोजेक्ट में जोड़ें

  1. अपने परीक्षण प्रोजेक्ट की रूट-स्तरीय सेटिंग्स ग्रैडल फ़ाइल ( settings.gradle.kts या settings.gradle ) में, प्रत्येक repositories अनुभाग में Google की मावेन रिपॉजिटरी जोड़ें:

    pluginManagement {
        repositories {
            // Add the following line:
            google() // Google's Maven repository
            mavenCentral()
            gradlePluginPortal()
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            // Add the following line:
            google() // Google's Maven repository
            mavenCentral()
        }
    }
    // ...
    
  2. अपने मॉड्यूल (ऐप-स्तर) ग्रैडल फ़ाइल में (आमतौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle ), टेस्ट लैब के लिए एक निर्भरता जोड़ें स्क्रीनशॉट लाइब्रेरी.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2")
      // ...
    
  3. अपने परीक्षण की AndroidManifest.xml फ़ाइल में, <instrumentation> तत्व के भीतर मेटा-डेटा टैग में FirebaseScreenCaptureProcessor पंजीकृत करें। आप इसके बजाय प्रोसेसर को AndroidJUnitRunner में एक तर्क के रूप में भी निर्दिष्ट कर सकते हैं (कैसे निर्देशों के लिए AndroidJUnitRunner संदर्भ दस्तावेज़ देखें)।

    <instrumentation
      // Check that you have the following line (if not, add it):
      android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner
      android:targetPackage="com.your.package.name">
    
    // Add the following:
    <meta-data
      android:name="screenCaptureProcessors"
      android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" />
    </instrumentation>
    ...
    
  4. अपने ऐप की AndroidManifest.xml फ़ाइल में, <manifest> तत्व के भीतर निम्नलिखित पंक्तियाँ जोड़ें:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. अपनी AndroidManifest.xml फ़ाइल में, <manifest> टैग के भीतर निम्नलिखित पंक्तियाँ जोड़कर अपने ऐप के लिए सिस्टम अनुमतियाँ निर्दिष्ट करें। यदि आप एंड्रॉइड 10 (एपीआई स्तर 29) या उच्चतर पर परीक्षण कर रहे हैं, तो WRITE_EXTERNAL_STORAGE अनुमति को छोड़ दें (आपके ऐप को डिवाइस पर स्क्रीनशॉट पढ़ने और लिखने के लिए इस अनुमति की आवश्यकता नहीं है)।

    <manifest ... >
        <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        ...
    </manifest>

चरण 2. अपने परीक्षण के दौरान स्क्रीनशॉट लें

अपने परीक्षण के किसी भी बिंदु पर जहां आप स्क्रीनशॉट लेना चाहते हैं, AndroidX लाइब्रेरी से Screenshot.capture() विधि को कॉल करें। यह एक ScreenCapture ऑब्जेक्ट उत्पन्न करता है। जब आप ScreenCapture ऑब्जेक्ट पर process() कॉल करते हैं, तो यह आपके AndroidManifest.xml में पंजीकृत ScreenCaptureProcessor का उपयोग करके संसाधित हो जाता है। ध्यान दें कि यदि कोई प्रोसेसर पंजीकृत नहीं है तो BasicScreenCaptureProcessor का उपयोग किया जाता है। चूंकि आपने FirebaseScreenCaptureProcessor पंजीकृत किया है, इसलिए आपके स्क्रीनशॉट को FirebaseScreenCaptureProcessor के माध्यम से संसाधित किया जाएगा और जब आप Firebase Test Lab के साथ अपना परीक्षण चलाएंगे तो आपके परिणाम आपके लिए उपलब्ध होंगे।

ScreenCapture बनाने के लिए उदाहरण उपयोग के मामले:

  • API Build.VERSION_CODES.JELLY_BEAN_MR2 और इससे ऊपर के संस्करण पर पूर्ण स्क्रीनकैप्चर लें:

    Screenshot.capture()
    
  • किसी भी एपीआई स्तर पर गतिविधि का ScreenCapture लें। ध्यान दें कि यह उन डिवाइसों के लिए एकमात्र विकल्प है जो Build.VERSION_CODES.JELLY_BEAN_MR2 से नीचे हैं।

    @Rule
      public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
    ...
    Screenshot.capture(activityRule.getActivity());
    ...
    

स्क्रीनकैप्चर को संसाधित करने के लिए उदाहरण उपयोग के मामले

  • FirebaseScreenCaptureProcessor के माध्यम से ScreenCapture संसाधित करें:

    Screenshot.capture().process();
    
  • एक निर्दिष्ट ScreenCaptureProcessor के माध्यम से ScreenCapture संसाधित करें (यह आपको प्रोसेसर को पंजीकृत करने से बचने की अनुमति देता है):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • ScreenCapture का नाम और प्रारूप सेट करें और पंजीकृत प्रोसेसर का उपयोग करके इसे संसाधित करें:

    Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
    

चरण 3. अपना परीक्षण बनाएं और चलाएं

  1. अपना ऐप बनाएं और एपीके का परीक्षण करें (निर्देशों के लिए अपने ऐप का परीक्षण करें देखें)।

  2. एपीके फ़ाइलों को फायरबेस कंसोल के टेस्ट लैब डैशबोर्ड पर अपलोड करें।

  3. अंत में, अपना परीक्षण चलाएँ।

चरण 4. अपने परीक्षण स्क्रीनशॉट देखें

आपका परीक्षण पूरा होने के बाद, आप फायरबेस कंसोल में लिए गए किसी भी स्क्रीनशॉट को देख सकते हैं।

  1. परीक्षण टैब में, अपना पूरा किया गया परीक्षण चुनें, फिर परिणाम टैब पर क्लिक करें।

  2. अपना परीक्षण फिर से चुनें, फिर दिखाई देने वाले स्क्रीनशॉट टैब पर क्लिक करें।

(वैकल्पिक) अतिरिक्त परीक्षण सुविधाएँ सक्षम करें

आप अपने परीक्षण को टेस्ट लैब के साथ चलाने से पहले उसमें निम्नलिखित सुविधाएं सक्षम कर सकते हैं:

ऑर्केस्ट्रेटर सक्षम करें

एंड्रॉइड टेस्ट ऑर्केस्ट्रेटर एक उपकरण है जो आपके ऐप के प्रत्येक उपकरण परीक्षण को स्वतंत्र रूप से चलाता है। टेस्ट लैब हमेशा ऑर्केस्ट्रेटर के नवीनतम संस्करण का उपयोग करता है।

टेस्ट लैब के लिए ऑर्केस्ट्रेटर को सक्षम करने के लिए, इंस्ट्रूमेंटेशन टेस्ट सेटअप में, अतिरिक्त विकल्प > ऑर्केस्ट्रेटर के साथ चलाएँ पर क्लिक करें।

जब आप ऑर्केस्ट्रेटर का उपयोग करते हैं, तो आपको निम्नलिखित से लाभ होता है:

  • कोई साझा स्थिति नहीं. प्रत्येक परीक्षण अपने स्वयं के उपकरण उदाहरण में चलता है, इसलिए एक साझा स्थिति परीक्षणों में जमा नहीं होती है।
  • पृथक दुर्घटनाएँ. यदि कोई परीक्षण क्रैश हो जाता है, तो केवल वह उपकरण समाप्त हो जाता है, और आपके सुइट में अन्य परीक्षण अभी भी चल सकते हैं।

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

ऑर्केस्ट्रेटर के लिए अतिरिक्त विकल्प सेट करने के लिए, उन्हें environmentVariables फ़ील्ड के माध्यम से निर्दिष्ट करें। उदाहरण के लिए, clearPackageData उपयोग करने के लिए, gcloud में इस विकल्प का उपयोग करें:

--environment-variables clearPackageData=true

शार्डिंग सक्षम करें

टेस्ट शार्डिंग परीक्षणों के एक सेट को उप-समूहों (शार्क) में विभाजित करता है जो अलग-अलग अलगाव में चलते हैं। टेस्ट लैब स्वचालित रूप से कई उपकरणों का उपयोग करके प्रत्येक शार्ड को समानांतर में चलाती है, और परीक्षणों के पूरे सेट को कम समय में पूरा करती है।

उदाहरण के लिए, यदि आप एन शार्ड बनाते हैं, तो आपके द्वारा चुने गए प्रत्येक डिवाइस के लिए, टेस्ट लैब एन समान डिवाइस को स्पिन करता है और प्रत्येक डिवाइस पर परीक्षणों का एक सबसेट चलाता है। इसका मतलब यह है कि शार्प किए गए परीक्षण मामलों के परिणामस्वरूप प्रति डिवाइस कई परीक्षण निष्पादन हो सकते हैं। हालाँकि, गैर-शार्ड परीक्षण मामलों में प्रति डिवाइस एक परीक्षण निष्पादन होता है। टेस्ट लैब अवधारणाओं को सीखने के लिए, मुख्य अवधारणाएँ देखें।

फायरबेस कंसोल में टेस्ट शार्डिंग सक्षम करने के लिए, इन चरणों का पालन करें:

  1. इंस्ट्रुमेंटेशन टेस्ट सेटअप में, अतिरिक्त विकल्प पर क्लिक करें।

  2. शेयरिंग अनुभाग में, उन शार्डों की संख्या दर्ज करें जिन्हें आप चलाना चाहते हैं।

परीक्षण टुकड़ों के लिए बिलिंग

टेस्ट लैब AndroidJUnitRunner के अंतर्निहित शार्डिंग तंत्र का लाभ उठाकर आपके शार्ड को कार्यान्वित करता है। खाली टुकड़ों (बिना निर्धारित परीक्षण मामलों के टुकड़े) को स्पिन करने के लिए शुल्क लेने से बचने के लिए, आपके द्वारा बनाए गए टुकड़ों की संख्या परीक्षण मामलों की कुल संख्या से कम होनी चाहिए। प्रत्येक टेस्ट केस को चलने में कितना समय लगता है, इस पर निर्भर करते हुए, आम तौर पर प्रति शार्ड 2-10 टेस्ट केस असाइन करना एक अच्छा विचार है।

बिलिंग के बारे में अधिक जानकारी के लिए, उपयोग, कोटा और बिलिंग पढ़ें।