Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

बाद के चरणों में, आप अपने ऐप्लिकेशन का APK और अपने परीक्षण के APK को Firebase पर अपलोड करेंगे.

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

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

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

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

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

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

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

    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() को कॉल करते हैं, तो यह ScreenCaptureProcessor का उपयोग करके संसाधित हो जाता है जो आपके AndroidManifest.xml में पंजीकृत है। ध्यान दें कि यदि कोई प्रोसेसर पंजीकृत नहीं है तो BasicScreenCaptureProcessor का उपयोग किया जाता है। चूंकि आपने FirebaseScreenCaptureProcessor पंजीकृत किया है, इसलिए आपके स्क्रीनशॉट को FirebaseScreenCaptureProcessor के माध्यम से संसाधित किया जाएगा और जब आप Firebase परीक्षण लैब के साथ अपना परीक्षण चलाएंगे तो आपके परिणामों के साथ आपके लिए उपलब्ध होंगे।

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

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

    Screenshot.capture()
    
  • किसी भी API स्तर पर गतिविधि का 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. अपने परीक्षण स्क्रीनशॉट देखें

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

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

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

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

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

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

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

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

लाभ और कमियां

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

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

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

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

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

आप Firebase कंसोल में परीक्षण शार्डिंग सक्षम कर सकते हैं:

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

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

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

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

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