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

इस गाइड में बताया गया है कि Firebase Test Lab. इस गाइड का इस्तेमाल करने के लिए, ज़रूरी है कि इंस्ट्रुमेंटेशन टेस्ट (आपके या आपकी टीम के ज़रिए लिखा गया हो) एस्प्रेसो या यूज़र इंटरफ़ेस (यूआई) ऑटोमेशन Android टेस्ट फ़्रेमवर्क. इंस्ट्रुमेंटेशन टेस्ट 45 तक चल सकते हैं डिजिटल डिवाइसों पर 60 मिनट तक और वर्चुअल डिवाइसों पर 60 मिनट तक.

बाद के चरणों में, आप अपने ऐप्लिकेशन के APK और Firebase के लिए आपके टेस्ट का APK.

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

Firebase Test Lab में एक लाइब्रेरी (testlab-instr-lib) शामिल है जिसे आप AndroidX के स्क्रीनशॉट से लिए गए किसी भी स्क्रीनशॉट को प्रोसेस करने के लिए स्क्रीन कैप्चर इंस्ट्रुमेंटेशन टेस्ट चलाना, जैसे कि एस्प्रेसो टेस्ट फ़्रेमवर्क. इस सेक्शन में, AndroidX लाइब्रेरी की मदद से ScreenCapture ऑब्जेक्ट बनाने और testlab-instr-lib का इस्तेमाल करके उन्हें प्रोसेस करने का तरीका बताया गया है.

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

ऐप्लिकेशन का नमूना आज़माएं

Notepad सैंपल ऐप्लिकेशन डाउनलोड करें इन टूल को आज़माएं. स्क्रीनशॉट लेने की सुविधा पहले से ही नोटपैड प्रोजेक्ट में शामिल किया गया है.

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

  1. अपने टेस्ट प्रोजेक्ट की रूट-लेवल सेटिंग वाली Gradle फ़ाइल (settings.gradle.kts या settings.gradle) में, हर repositories सेक्शन में Google की Maven रिपॉज़िटरी जोड़ें:

    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. आपके मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर) में <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle), इसके लिए कोई डिपेंडेंसी जोड़ें Test Lab स्क्रीनशॉट लाइब्रेरी.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2")
      // ...
  3. अपने टेस्ट की AndroidManifest.xml फ़ाइल में, FirebaseScreenCaptureProcessor <instrumentation> एलिमेंट. आपके पास प्रोसेसर को तर्क के साथ सबमिट करें (इसे देखें 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 (एपीआई लेवल 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>

दूसरा चरण. जांच के दौरान स्क्रीनशॉट लेना

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

ScreenCapture बनाने के लिए, इस्तेमाल के उदाहरण:

  • एपीआई बिल्ड पर फ़ुल स्क्रीनकैप्चर करें.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());
    ...
    

Screenकैप्चर को प्रोसेस करने के लिए, इस्तेमाल के उदाहरण

  • 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. APK फ़ाइलों को Test Lab डैशबोर्ड पर अपलोड करें Firebase कंसोल में बदल दिया जाता है.

  3. आखिर में, अपना टेस्ट चलाएं.

चौथा चरण. टेस्ट के स्क्रीनशॉट देखना

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

  1. टेस्ट टैब में, पूरा हो चुका टेस्ट चुनें, इसके बाद, नतीजे टैब पर क्लिक करें.

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

(ज़रूरी नहीं) टेस्ट की अन्य सुविधाएं चालू करना

Test Lab के साथ चलाने से पहले, अपने टेस्ट में ये सुविधाएं चालू की जा सकती हैं:

ऑर्केस्ट्रेटर चालू करें

Android Test Orchestrator एक ऐसा टूल है जो आपके ऐप्लिकेशन के हर इंस्ट्रूमेंटेशन टेस्ट को अलग-अलग चलाता है. Test Lab, हमेशा ऑर्केस्ट्रेटर के सबसे नए वर्शन का इस्तेमाल करता है.

Test Lab के लिए Orchestrator को चालू करने के लिए, इंस्ट्रुमेंटेशन टेस्ट के सेटअप में, अतिरिक्त विकल्प > Orchestrator के साथ चलाएं पर क्लिक करें.

ऑर्केस्ट्रेटर का इस्तेमाल करने पर आपको इन सुविधाओं से फ़ायदा मिलता है:

  • शेयर की गई कोई स्थिति नहीं है. हर जांच अपने-आप होती है इंस्ट्रुमेंटेशन इंस्टेंस, इसलिए सभी परीक्षणों में एक शेयर स्थिति जमा नहीं होती है.
  • ऐप्लिकेशन के अलग-अलग बंद होने की जानकारी. अगर कोई टेस्ट क्रैश हो जाता है, तो सिर्फ़ इंस्ट्रुमेंटेशन बंद कर दिया जाता है. साथ ही, आपके सुइट में अन्य टेस्ट अब भी चल सकते हैं.

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

ऑर्केस्ट्रेटर के लिए अतिरिक्त विकल्प सेट करने के लिए, इसके ज़रिए बताएं environmentVariables फ़ील्ड. उदाहरण के लिए, clearPackageData का इस्तेमाल करने के लिए, इसका इस्तेमाल करें gcloud में विकल्प:

--environment-variables clearPackageData=true

शेयर करने की सुविधा चालू करें

परीक्षण शार्डिंग, परीक्षणों के एक सेट को ऐसे उप-समूहों (शर्ड) में विभाजित करती है जो अलग से दिखेगा. Test Lab, कई डिवाइसों का इस्तेमाल करके हर शर्ड को एक साथ अपने-आप चलाता है. साथ ही, कम समय में टेस्ट का पूरा सेट पूरा करता है.

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

Firebase कंसोल में टेस्ट शार्डिंग चालू करने के लिए, यह तरीका अपनाएं:

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

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

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

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

बिलिंग के बारे में ज़्यादा जानकार�� पाने के लिए, इस्तेमाल, कोटा, और बिलिंग लेख पढ़ें.