Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. 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. अपना परीक्षण फिर से चुनें, फिर दिखाई देने वाले स्क्रीनशॉट टैब पर क्लिक करें।

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

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

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

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

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

लाभ और कमियां

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

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

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

टेस्ट शार्डिंग कैसे काम करता है

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

आप फायरबेस कंसोल में टेस्ट शार्डिंग को सक्षम कर सकते हैं:

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

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

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

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

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