इस गाइड में, gcloud सीएलआई का इस्तेमाल करके, इंस्ट्रूमेंटेशन, Robo या Game Loop टेस्ट चलाने का तरीका बताया गया है gcloud सीएलआई.
Test Lab में अपने Android ऐप्लिकेशन के साथ इस्तेमाल किए जा सकने वाले gcloud कमांड की पूरी सूची देखने के लिए, Test Lab के रेफ़रंस दस्तावेज़ पर जाएं.gcloud firebase test android
शुरू करने से पहले
अगर आपने पहले से ही A/B टेस्टिंग नहीं बनाई है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.
पहला चरण. gcloud सीएलआई सेट अप करना
- Google Cloud SDK डाउनलोड करना
- पक्का करें कि आपका इंस्टॉलेशन अप-टू-डेट हो:
gcloud components update
- अपने Google खाते का इस्तेमाल करके, gcloud सीएलआई में साइन इन करें:
gcloud auth login
- gcloud में अपना Firebase प्रोजेक्ट सेट करें. यहां PROJECT_ID आपके Firebase प्रोजेक्ट की आईडी है:
gcloud config set project PROJECT_ID
इसमें gcloud सीएलआई टूल शामिल है.
दूसरा चरण. टेस्ट के लिए उपलब्ध डिवाइस देखना
टेस्ट के लिए उपलब्ध डिवाइस और स्थानीय भाषाएं देखने के लिए, gcloud के इन कमांड का इस्तेमाल करें.
इसके अलावा, सैंपल
Notepad ऐप्लिकेशन डाउनलोड करके भी तुरंत कमांड चलाए जा सकते हैं. NotePad/app/build/outputs/apk/ में मौजूद बाइनरी फ़ाइल app-debug-unaligned.apk और इंस्ट्रूमेंटेशन टेस्ट फ़ाइल app-debug-test-unaligned.apk का इस्तेमाल करें.
models list: Android डिवाइसों की मौजूदा सूची पाएं, जिनका इस्तेमाल आपके ऐप्लिकेशन को टेस्ट करने के लिए किया जा सकता है.gcloud firebase test android models listकमांड के आउटपुट में:
MODEL_IDकॉलम में, वह आइडेंटिफ़ायर होता है जिसका इस्तेमाल बाद में डिवाइस मॉडल पर टेस्ट चलाने के लिए किया जा सकता है.OS_VERSION_IDकॉलम में, डिवाइस के साथ काम करने वाले ऑपरेटिंग सिस्टम के वर्शन होते हैं.
आउटपुट का उदाहरण

models describe: किसी खास AndroidMODEL_IDके बारे में ज़्यादा जानकारी पाएं.gcloud firebase test android models describe MODEL_IDआउटपुट में, डिवाइस मॉडल का ब्रैंड, मैन्युफ़ैक्चरर, ओएस वर्शन, काम करने वाले एपीआई लेवल, काम करने वाले ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई), रिलीज़ की तारीखें, और यह जानकारी शामिल होती है कि डिवाइस फ़िज़िकल है या वर्चुअल.
versions list: फ़िलहाल, टेस्ट के लिए उपलब्ध ओएस वर्शन की सूची पाएं.gcloud firebase test android versions listAndroid ओएस के किसी वर्शन पर बाद में टेस्ट चलाने के लिए, कमांड आउटपुट (
OS_VERSION_IDऔरVERSION) के पहले दो कॉलम में से किसी एक आइडेंटिफ़ायर का इस्तेमाल किया जा सकता है. अगर टेस्ट के लिए Android ओएस के वर्शन नहीं बताए जाते हैं, तोTAGSकॉलम में नोट की गई डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.आउटपुट का उदाहरण

locales list: फ़िलहाल, टेस्ट के लिए उपलब्ध स्थानीय भाषाओं की सूची पाएं.gcloud firebase test android locales listकमांड के आउटपुट के पहले कॉलम,
LOCALEमें वह आइडेंटिफ़ायर होता है जिसका इस्तेमाल बाद में किसी स्थानीय भाषा पर टेस्ट चलाने के लिए किया जा सकता है. अगर टेस्ट के लिए स्थानीय भाषाएं नहीं बताई जाती हैं, तो अंग्रेज़ी को डिफ़ॉल्ट स्थानीय भाषा के तौर पर इस्तेमाल किया जाता है.
तीसरा चरण. टेस्ट चलाना
अब आपको अपने ऐप्लिकेशन को टेस्ट करने के लिए उपलब्ध डिवाइस मॉडल, स्थानीय भाषाओं, और ओएस वर्शन की जानकारी मिल गई है. Robo या इंस्ट्रूमेंटेशन टेस्ट चलाने के लिए, gcloud firebase test android run कमांड और --device फ़्लैग का इस्तेमाल करके डिवाइसों के बारे में जानकारी दी जा सकती है.
Robo टेस्ट चलाना
अगर आपके पास इंस्ट्रूमेंटेशन टेस्ट नहीं हैं, तब भी अपने ऐप्लिकेशन में गड़बड़ियां खोजी जा सकती हैं. अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) की समीक्षा अपने-आप करने के लिए, Robo टेस्ट का इस्तेमाल करें. Robo टेस्ट, ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के अलग-अलग पाथ का स्टैटिक विश्लेषण करके, ऐप्लिकेशन को चलाता है. इसके बाद, क्रैश और अन्य संभावित समस्याओं का पता लगाने के लिए, ऐप्लिकेशन को क्रॉल करता है.
Robo टेस्ट चलाने के लिए, यहां दिया गया उदाहरण कमांड चलाएं:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- अगर
--typeकी कोई वैल्यू नहीं दी जाती है, तो--type roboपैरामीटर अपने-आप लागू हो जाता है. - Firebase कंसोल में अपने टेस्ट मैट्रिक्स की पहचान करने और उन्हें ढूंढने के लिए,
आप अपने टेस्ट मैट्रिक्स को लेबल करने के लिए ज़रूरी नहीं
--client-details matrixLabel="Example matrix label"फ़्लैग का इस्तेमाल कर सकते हैं. - टेस्ट चलाने के लिए, कमांड लाइन के सभी विकल्पों को देखने के लिए,
gcloud help firebase test android runटाइप करें.
कमांड लाइन पर इन आर्ग्युमेंट के बारे में जानकारी देने के बजाय, YAML फ़ॉर्मैट वाली आर्ग्युमेंट फ़ाइल में भी आर्ग्युमेंट के बारे में जानकारी दी जा सकती है. यह ज़रूरी नहीं है. इस सुविधा का इस्तेमाल करने का तरीका जानने के लिए, gcloud topic arg-files चलाएं.
Robo टेस्ट के नतीजों की जांच करने का तरीका जानने के लिए, अपने टेस्ट के नतीजों का विश्लेषण करना लेख पढ़ें.
इंस्ट्रूमेंटेशन टेस्ट चलाना
अब, Notepad ऐप्लिकेशन के
Espresso
टेस्ट को, आपके बताए गए Android डिवाइस कॉन्फ़िगरेशन पर चलाने के लिए, gcloud कमांड लाइन टूल का इस्तेमाल करें. app-debug-test-unaligned.apk में मौजूद टेस्ट चलाने के लिए, instrumentation टेस्ट टाइप का इस्तेमाल इस तरह करें:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- अगर
--testके साथ कोई टेस्ट APK बताया जाता है, तो--typeइंस्ट्रूमेंटेशन पैरामीटर अपने-आप लागू हो जाता है. - Firebase कंसोल में अपने टेस्ट मैट्रिक्स की पहचान करने और उन्हें ढूंढने के लिए,
फ़्लैग का इस्तेमाल किया जा सकता है. यह फ़्लैग ज़रूरी नहीं है. इससे आपके टेस्ट मैट्रिक्स को लेबल किया जा सकता है.
--client-details matrixLabel="Example matrix label" - टेस्ट चलाने के लिए, कमांड लाइन के सभी विकल्पों को देखने के लिए,
gcloud help firebase test android runटाइप करें.
कमांड लाइन पर इन आर्ग्युमेंट के बारे में जानकारी देने के बजाय, YAML फ़ॉर्मैट वाली आर्ग्युमेंट फ़ाइल में भी आर्ग्युमेंट के बारे में जानकारी दी जा सकती है. यह ज़रूरी नहीं है. इस सुविधा का इस्तेमाल करने का तरीका जानने के लिए, gcloud topic arg-files चलाएं.
gcloud सीएलआई, Android Test Orchestrator के साथ काम करता है.
Orchestrator के लिए, AndroidJUnitRunner v1.1 या इसके बाद का वर्शन ज़रूरी है. इसे चालू करने के लिए, gcloud firebase test android run का इस्तेमाल करें. --use-orchestrator
फ़्लैग के साथ. इसे बंद करने के लिए, --no-use-orchestrator फ़्लैग का इस्तेमाल करें.
Test Lab आपके इंस्ट्रूमेंटेशन टेस्ट को कैसे चलाता है, इसे कंट्रोल करने के लिए, ऊपर नहीं दिखाए गए अन्य फ़्लैग का भी इस्तेमाल किया जा सकता है. उदाहरण के लिए, --test-targets फ़्लैग का इस्तेमाल करके, किसी एक क्लास या आपके टेस्ट APK में इस्तेमाल होने वाले क्लास के तरीके को टेस्ट किया जा सकता है. यह भी पता लगाया जा सकता है कि फ़ेल हुआ आपका टेस्ट, असल में फ़्लेकी था या नहीं. इसके लिए, --num-flaky-test-attempts फ़्लैग का इस्तेमाल करें. इससे यह तय होता है कि अगर किसी वजह से, टेस्ट के एक या उससे ज़्यादा टेस्ट केस फ़ेल हो जाते हैं, तो टेस्ट को कितनी बार फिर से चलाया जाना चाहिए. ज़्यादा जानने के लिए, gcloud firebase test android run देखें.
इंस्ट्रूमेंटेशन टेस्ट के लिए, कोड कवरेज रिपोर्ट
Test Lab कोड कवरेज रिपोर्टिंग टूल
EMMA और
JaCoCo के साथ काम करता है. अगर आपके ऐप्लिकेशन के बिल्ड में इनमें से कोई टूल
इंटिग्रेट किया गया है, तो कुछ अतिरिक्त
आर्ग्युमेंट के साथ gcloud firebase test android run चलाकर,
Test Lab टेस्ट के लिए कोड कवरेज रिपोर्ट पाई जा सकती है. अगर Android Test Orchestrator चालू नहीं है, तो इसका इस्तेमाल करें:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
अगर Android Test Orchestrator का इस्तेमाल करने के साथ-साथ, कोड कवरेज रिपोर्ट जनरेट की जा रही हैं, तो अपने एनवायरमेंट वैरिएबल में इस तरह बदलाव करें:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
जब Test Lab आपके टेस्ट चलाना पूरा कर लेता है, तो अपनी कोड कवरेज रिपोर्ट Google Cloud Storage में ढूंढें:
- अपने टर्मिनल में, टेस्ट के नतीजों की टेबल के ऊपर,
gcloudटूल से प्रिंट किए गए Firebase कंसोल के लिंक को खोलें. - उस लिंक पर मौजूद सूची में से, किसी टेस्ट के एक्ज़ीक्यूशन पर क्लिक करके, उस एक्ज़ीक्यूशन की जानकारी वाला पेज खोलें.
- उस एक्ज़ीक्यूशन के टेस्ट के नतीजों वाले Cloud Storage बकेट पर जाने के लिए, टेस्ट के नतीजे पर क्लिक करें.
- अपनी कोड कवरेज रिपोर्ट देखने के लिए,
artifacts/coverage.ecखोलें.
अपने टेस्ट के नतीजों का विश्लेषण करना
कुछ मिनटों बाद, gcloud टूल, आपके टेस्ट के नतीजों की खास जानकारी प्रिंट करता है:

कमांड लाइन से टेस्ट चलाने के आउटपुट में, टेस्ट के नतीजे देखने का लिंक भी शामिल होता है. इन नतीजों को समझने के तरीके के बारे में ज़्यादा जानने के लिए, Android के लिए Firebase Test Lab के नतीजों का विश्लेषण करना लेख पढ़ें.
Robo टेस्ट के साथ, पसंद के मुताबिक लॉगिन और टेक्स्ट इनपुट की सुविधा
Robo टेस्ट, साइन-इन स्क्रीन को अपने-आप पूरा करता है. हालांकि, ऐसा सिर्फ़ तब होता है, जब पुष्टि के लिए Google खाते का इस्तेमाल किया जाता है.
अगर
--no-auto-google-login
पैरामीटर का इस्तेमाल किया जाता है, तो Robo टेस्ट, साइन-इन स्क्रीन को अपने-आप पूरा नहीं करता. यह, आपके दिए गए टेस्ट खाते के क्रेडेंशियल का इस्तेमाल करके, पसंद के मुताबिक लॉगिन स्क्रीन को भी पूरा कर सकता है. इस पैरामीटर का इस्तेमाल करके, आपके ऐप्लिकेशन में इस्तेमाल होने वाले अन्य टेक्स्ट फ़ील्ड के लिए, पसंद के मुताबिक इनपुट टेक्स्ट भी दिया जा सकता है.
अपने ऐप्लिकेशन में टेक्स्ट फ़ील्ड को पूरा करने के लिए,
--robo-directives
पैरामीटर का इस्तेमाल करें. इसके बाद, key-value पेयर की कॉमा से अलग की गई सूची दें. इसमें
key टारगेट यूज़र इंटरफ़ेस (यूआई) एलिमेंट का Android रिसॉर्स नाम होता है और value
टेक्स्ट स्ट्रिंग होती है. इस फ़्लैग का इस्तेमाल करके, Robo को यह भी बताया जा सकता है कि उसे कुछ खास यूज़र इंटरफ़ेस (यूआई) एलिमेंट (जैसे, "लॉग आउट" बटन) को अनदेखा करना है.
EditText
फ़ील्ड काम करते हैं. हालांकि, WebView यूज़र इंटरफ़ेस (यूआई) एलिमेंट में मौजूद टेक्स्ट फ़ील्ड काम नहीं करते.
उदाहरण के लिए, पसंद के मुताबिक लॉगिन के लिए, इस पैरामीटर का इस्तेमाल किया जा सकता है:
--robo-directives username_resource=username,password_resource=password
उपलब्ध कमांड और फ़्लैग
Test Lab gcloud सीएलआई में कई कमांड और फ़्लैग उपलब्ध हैं. इनकी मदद से, अलग-अलग स्पेसिफ़िकेशन के साथ टेस्ट चलाए जा सकते हैं:
Android Test Orchestrator फ़्लैग: यह Orchestrator को चालू करने का फ़्लैग है. Orchestrator एक ऐसा टूल है जिसकी मदद से,आपके ऐप्लिकेशन के हर टेस्ट को उसके अपने इनवोकेशन में चलाया जा सकता है
Instrumentation. Test Lab हमेशा Orchestrator के सबसे नए वर्शन का इस्तेमाल करता है.गेम लूप टेस्ट के फ़्लैग: कॉन्फ़िगरेशन फ़्लैग का एक सेट. इसकी मदद से, गेम ऐप्लिकेशन में प्लेयर की कार्रवाइयों को सिम्युलेट करने के लिए, "डेमो मोड" को चालू और कंट्रोल किया जा सकता है. Test Lab के साथ Game Loop टेस्ट चलाने के बारे में Test Labज़्यादा जानें.
यूनिफ़ॉर्म शार्डिंग फ़्लैग (बीटा में): यह एक ऐसा फ़्लैग है जिससे यह तय किया जाता है कि टेस्ट केस को कितने शार्ड में बराबर-बराबर बांटना है. शार्ड, अलग-अलग डिवाइसों पर एक साथ चलाए जाते हैं.
मैन्युअल शार्डिंग फ़्लैग (बीटा में): यह एक ऐसा फ़्लैग है जिससे पैकेज, क्लास, और/या टेस्ट केस के किसी ग्रुप को शार्ड (टेस्ट केस का एक ग्रुप) में चलाने के बारे में जानकारी दी जाती है. शार्ड, अलग-अलग डिवाइसों पर एक साथ चलाए जाते हैं.
नेटवर्क ट्रैफ़िक प्रोफ़ाइल फ़्लैग (बीटा में): यह एक ऐसा फ़्लैग है जिससे यह तय किया जाता है कि आपके टेस्ट, फ़िज़िकल डिवाइसों के साथ किस नेटवर्क प्रोफ़ाइल का इस्तेमाल करते हैं. नेटवर्क प्रोफ़ाइल, अलग-अलग तरह की नेटवर्क स्थितियों को एम्युलेट करती हैं. इससे, आपके ऐप्लिकेशन की परफ़ॉर्मेंस को ऐसे नेटवर्क पर टेस्ट किया जा सकता है जो भरोसेमंद नहीं हैं या जिनकी परफ़ॉर्मेंस का अनुमान नहीं लगाया जा सकता.
Test Lab के साथ gcloud कमांड की स्क्रिप्ट बनाना Test Lab
मोबाइल ऐप्लिकेशन की टेस्टिंग के लिए, gcloud कमांड लाइन का इस्तेमाल करके चलाए जाने वाले कमांड को ऑटोमेट करने के लिए, शेल स्क्रिप्ट या बैच फ़ाइल का इस्तेमाल किया जा सकता है. यहां bash स्क्रिप्ट का एक उदाहरण दिया गया है. इससे दो मिनट के टाइम आउट के साथ इंस्ट्रूमेंटेशन टेस्ट चलाया जाता है. साथ ही, यह भी रिपोर्ट की जाती है कि टेस्ट का रन सफलतापूर्वक पूरा हुआ या नहीं:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
echo "Test matrix successfully finished"
else
echo "Test matrix exited abnormally with non-zero exit code: " $?
fi
स्क्रिप्ट के एग्ज़िट कोड
Test Lab कई एग्ज़िट कोड उपलब्ध कराता है. इनका इस्तेमाल करके, स्क्रिप्ट या बैच फ़ाइल का इस्तेमाल करके चलाए जाने वाले टेस्ट के नतीजों को बेहतर तरीके से समझा जा सकता है.
के लिए स्क्रिप्टिंग एग्ज़िट कोड Test Lab
| एग्ज़िट कोड | नोट |
|---|---|
| 0 | टेस्ट के सभी एक्ज़ीक्यूशन पास हो गए. |
| 1 | कोई सामान्य गड़बड़ी हुई. इसकी ये वजहें हो सकती हैं: कोई ऐसी फ़ाइल का नाम जो मौजूद नहीं है या एचटीटीपी/नेटवर्क में गड़बड़ी. |
| 2 | टेस्टिंग बंद हो गई, क्योंकि ऐसे कमांड या आर्ग्युमेंट दिए गए थे जिनके बारे में जानकारी नहीं है. |
| 10 | टेस्ट के किसी एक्ज़ीक्यूशन में, एक या उससे ज़्यादा टेस्ट केस (टेस्ट की गई क्लास या क्लास के तरीके) पास नहीं हुए. |
| 15 | Firebase Test Lab यह तय नहीं कर सका कि टेस्ट मैट्रिक्स पास हुआ या फ़ेल, क्योंकि कोई गड़बड़ी हुई. |
| 18 | टेस्ट के इस एक्ज़ीक्यूशन के लिए, टेस्ट एनवायरमेंट काम नहीं करता, क्योंकि टेस्ट डाइमेंशन काम नहीं करते. यह गड़बड़ी तब हो सकती है, जब चुने गए Android एपीआई लेवल के साथ, चुने गए डिवाइस टाइप काम न करे. |
| 19 | उपयोगकर्ता ने टेस्ट मैट्रिक्स रद्द कर दिया. |
| 20 | टेस्ट के इन्फ़्रास्ट्रक्चर में कोई गड़बड़ी हुई. |