Catch up on highlights from Firebase at Google I/O 2023. Learn more

इंस्ट्रूमेंटेशन टेस्ट के साथ शुरुआत करें

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

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

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

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

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

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

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

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

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

    buildscript {
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
      }
    
      dependencies {
        // ...
    
        // Check that you have the following line (if not, add it):
        classpath 'com.google.gms:google-services:4.3.8'  // Google Services plugin
      }
    }
    
    allprojects {
      // ...
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
        // ...
      }
    }
  2. अपने मॉड्यूल (ऐप-लेवल) ग्रैडल फ़ाइल (आमतौर पर app/build.gradle ) में, टेस्ट लैब स्क्रीनशॉट लाइब्रेरी के लिए एक डिपेंडेंसी जोड़ें।

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation 'com.google.firebase:testlab-instr-lib:0.2'
      // ...
    }
  3. अपने परीक्षण की AndroidManifest.xml फ़ाइल में, FirebaseScreenCaptureProcessor को <instrumentation> तत्व के भीतर एक मेटा-डेटा टैग में पंजीकृत करें। आप प्रोसेसर को इसके बजाय 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> टैग में निम्नलिखित पंक्तियाँ जोड़कर अपने ऐप के लिए सिस्टम अनुमतियाँ निर्दिष्ट करें। यदि आप Android 10 (API स्तर 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 और इसके बाद के वर्शन पर पूरा ScreenCapture लें:

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

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

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

  • 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. अपना ऐप बनाएं और APK का परीक्षण करें (निर्देशों के लिए अपने ऐप का परीक्षण करें देखें)।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--environment-variables clearPackageData=true

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

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

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

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

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

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

टेस्ट शार्ड्स के लिए बिलिंग

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

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