इस गाइड में, Firebase Test Lab का इस्तेमाल करके, इंस्ट्रूमेंटेशन टेस्ट तैयार करने और उसे चलाने का तरीका बताया गया है. इस गाइड का इस्तेमाल करने के लिए, आपके पास ऐसा इंस्ट्रूमेंटेशन टेस्ट होना चाहिए जिसे आपने या आपकी टीम ने लिखा हो. साथ ही, उसमें Espresso या UI Automator Android टेस्ट फ़्रेमवर्क का इस्तेमाल किया गया हो. फ़िज़िकल डिवाइसों पर इंस्ट्रूमेंटेशन टेस्ट 45 मिनट तक और वर्चुअल डिवाइसों पर 60 मिनट तक चल सकते हैं.
आगे दिए गए चरणों में, आपको अपने ऐप्लिकेशन का APK और टेस्ट का APK, Firebase पर अपलोड करना होगा.
(ज़रूरी नहीं) अपने ऐप्लिकेशन में स्क्रीनशॉट लाइब्रेरी जोड़ना
Firebase Test Lab में एक लाइब्रेरी (testlab-instr-lib) शामिल है. इसका इस्तेमाल, इंस्ट्रूमेंटेशन टेस्ट चलाते समय AndroidX के
ScreenCapture से लिए गए किसी भी स्क्रीनशॉट को प्रोसेस करने के लिए किया जा सकता है. जैसे,
Espresso टेस्ट फ़्रेमवर्क का इस्तेमाल करके लिखे गए टेस्ट.
इस सेक्शन में, AndroidX लाइब्रेरी की मदद से ScreenCapture ऑब्जेक्ट बनाने और testlab-instr-lib का इस्तेमाल करके उन्हें प्रोसेस करने का तरीका बताया गया है.
इंस्ट्रूमेंटेशन टेस्ट पूरा होने के बाद, कैप्चर किए गए स्क्रीनशॉट को Firebase कंसोल में देखा जा सकता है.
सैंपल ऐप्लिकेशन आज़माना
इस सुविधा को आज़माने के लिए, NotePad सैंपल ऐप्लिकेशन डाउनलोड करें. NotePad प्रोजेक्ट में, स्क्रीनशॉट लेने की सुविधा पहले से ही शामिल है.
पहला चरण. अपने प्रोजेक्ट में स्क्रीनशॉट लाइब्रेरी जोड़ना
अपने टेस्ट प्रोजेक्ट की रूट-लेवल सेटिंग वाली 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() } } // ...
अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की 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") // ...
अपने टेस्ट की
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> ...अपने ऐप्लिकेशन की
AndroidManifest.xmlफ़ाइल में,<manifest>एलिमेंट में ये लाइनें जोड़ें:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>अपनी
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 ऑब्जेक्ट बनता है.
ScreenCapture ऑब्जेक्ट पर process() को कॉल करने पर, इसे AndroidManifest.xml में रजिस्टर किए गए ScreenCaptureProcessor का इस्तेमाल करके प्रोसेस किया जाता है. ध्यान दें कि अगर कोई प्रोसेसर रजिस्टर नहीं किया गया है, तो BasicScreenCaptureProcessor का इस्तेमाल किया जाता है.
आपने FirebaseScreenCaptureProcessor रजिस्टर किया है. इसलिए, आपके स्क्रीनशॉट को
FirebaseScreenCaptureProcessor के ज़रिए प्रोसेस किया जाएगा. साथ ही, Firebase Test Lab की मदद से टेस्ट चलाने पर, ये स्क्रीनशॉट नतीजों के साथ आपके लिए उपलब्ध होंगे.
ScreenCapture बनाने के लिए इस्तेमाल के उदाहरण:
एपीआई 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();
तीसरा चरण. टेस्ट बनाना और उसे चलाना
अपने ऐप्लिकेशन और टेस्ट के APK बनाना. इसके लिए, अपने ऐप्लिकेशन की जांच करना लेख देखें.
Firebase कंसोल में, DevOps और उपयोगकर्ता जुड़ाव > Test Lab पर जाएं. इसके बाद, APK फ़ाइलें अपलोड करें.
आखिर में, अपना टेस्ट चलाएं.
चौथा चरण. टेस्ट के स्क्रीनशॉट देखना
टेस्ट पूरा होने के बाद, लिए गए स्क्रीनशॉट देखे जा सकते हैं:
Firebase कंसोल में, DevOps और उपयोगकर्ता जुड़ाव > Test Lab पर जाएं.
टेस्ट टैब में, पूरा हो चुका टेस्ट चुनें. इसके बाद, नतीजे टैब पर क्लिक करें.
अपना टेस्ट फिर से चुनें. इसके बाद, दिखने वाले स्क्रीनशॉट टैब पर क्लिक करें.
(ज़रूरी नहीं) टेस्ट की अतिरिक्त सुविधाएं चालू करना
Test Lab की मदद से टेस्ट चलाने से पहले, उसमें ये सुविधाएं चालू की जा सकती हैं: Test Lab
Orchestrator चालू करना
Android Test Orchestrator एक ऐसा टूल है जो आपके ऐप्लिकेशन के हर इंस्ट्रूमेंटेशन टेस्ट को अलग-अलग चलाता है. Test Lab हमेशा Orchestrator के सबसे नए वर्शन का इस्तेमाल करता है.
Test Lab के लिए Orchestrator चालू करने के लिए, इंस्ट्रूमेंटेशन टेस्ट सेटअप में, ज़्यादा विकल्प > Orchestrator के साथ चलाएं पर क्लिक करें.
Orchestrator का इस्तेमाल करने पर, आपको ये फ़ायदे मिलते हैं:
- कोई शेयर की गई स्थिति नहीं. हर टेस्ट, अपने इंस्ट्रूमेंटेशन इंस्टेंस में चलता है. इसलिए, टेस्ट के दौरान शेयर की गई स्थिति इकट्ठा नहीं होती.
- आइसोलेट किए गए क्रैश. अगर कोई टेस्ट क्रैश होता है, तो सिर्फ़ वह इंस्ट्रूमेंटेशन बंद होता है. आपके सुइट में मौजूद अन्य टेस्ट अब भी चल सकते हैं.
ध्यान रखें कि Orchestrator का इस्तेमाल करने पर, हर टेस्ट अपना इंस्ट्रूमेंटेशन इंस्टेंस चलाता है. इसका मतलब है कि हर टेस्ट केस के बाद, ऐप्लिकेशन की प्रोसेस रीस्टार्ट हो जाती है. इससे रन टाइम बढ़ सकता है. साथ ही, आपके कोटा के इस्तेमाल या बिल किए गए समय पर असर पड़ सकता है. इसके अलावा, डिवाइसों के टाइम आउट की सीमाएं भी पार हो सकती हैं. अगर अपने ऐप्लिकेशन का स्टार्टअप टाइम कम किया जाता है, तो यह ओवरहेड कम हो जाएगा.
Orchestrator के लिए अतिरिक्त विकल्प सेट करने के लिए, उन्हें
environmentVariables फ़ील्ड के ज़रिए तय करें. उदाहरण के लिए, clearPackageData का इस्तेमाल करने के लिए, gcloud में इस विकल्प का इस्तेमाल करें:
--environment-variables clearPackageData=true
शार्डिंग चालू करना
टेस्ट शार्डिंग, टेस्ट के सेट को सब-ग्रुप (शार्ड) में बांटती है. ये शार्ड, आइसोलेशन में अलग-अलग चलते हैं. Test Lab एक साथ कई डिवाइसों का इस्तेमाल करके, हर शार्ड को अपने-आप पैरलल में चलाता है . इससे टेस्ट का पूरा सेट कम समय में पूरा हो जाता है.
उदाहरण के लिए, अगर N शार्ड बनाए जाते हैं, तो चुने गए हर डिवाइस के लिए, Test Lab N एक जैसे डिवाइस स्पिन अप करता है. साथ ही, हर डिवाइस पर टेस्ट का सबसेट चलाता है. इसका मतलब है कि शार्ड किए गए टेस्ट केस, हर डिवाइस पर कई बार टेस्ट किए जा सकते हैं. हालांकि, शार्ड नहीं किए गए टेस्ट केस, हर डिवाइस पर एक बार टेस्ट किए जाते हैं. Test Lab कॉन्सेप्ट के बारे में जानने के लिए, मुख्य कॉन्सेप्ट देखें.
Firebase कंसोल में टेस्ट शार्डिंग चालू करने के लिए, यह तरीका अपनाएं:
इंस्ट्रूमेंटेशन टेस्ट सेटअप में,ज़्यादा विकल्प पर क्लिक करें.
शार्डिंग सेक्शन में, वे शार्ड डालें जिन्हें आपको चलाना है.
टेस्ट शार्ड के लिए बिलिंग
Test Lab Test Lab, AndroidJUnitRunner के बिल्ट-इन शार्डिंग मैकेनिज़्म का इस्तेमाल करके, आपके शार्ड लागू करता है. खाली शार्ड (ऐसे शार्ड जिन्हें टेस्ट केस असाइन नहीं किए गए हैं) को स्पिन अप करने के लिए शुल्क से बचने के लिए, बनाए गए शार्ड की संख्या, टेस्ट केस की कुल संख्या से कम होनी चाहिए. आम तौर पर, हर शार्ड को दो से 10 टेस्ट केस असाइन करना सही होता है. हालांकि, यह इस बात पर निर्भर करता है कि हर टेस्ट केस को चलने में कितना समय लगता है.
बिलिंग के बारे में ज़्यादा जानने के लिए, इस्तेमाल, कोटा, और बिलिंग लेख पढ़ें.