gcloud सीएलआई की मदद से जांच करना शुरू करें

इस गाइड में, gcloud CLI का इस्तेमाल करके, इंस्ट्रुमेंटेशन, Robo या गेम लूप टेस्ट चलाने का तरीका बताया गया है.

gcloud में Android ऐप्लिकेशन के साथ इस्तेमाल की जा सकने वाली gcloud कमांड की पूरी सूची देखने के लिए, gcloud firebase test android के लिए रेफ़रंस दस्तावेज़ पर जाएं.Test Lab

शुरू करने से पहले

अगर आपने पहले से ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.

पहला चरण. gcloud सीएलआई सेट अप करना

  1. Google Cloud SDK डाउनलोड करना
  2. इसमें gcloud सीएलआई टूल शामिल है.

  3. पक्का करें कि आपने अप-टू-डेट वर्शन इंस्टॉल किया हो:
    gcloud components update
    
  4. अपने Google खाते का इस्तेमाल करके, gcloud CLI में साइन इन करें:
    gcloud auth login
    
  5. gcloud में अपना Firebase प्रोजेक्ट सेट करें. यहां PROJECT_ID आपके Firebase प्रोजेक्ट का आईडी है:
    gcloud config set project PROJECT_ID
    

दूसरा चरण. टेस्ट के लिए उपलब्ध डिवाइसों की जांच करना

टेस्ट के लिए उपलब्ध टेस्ट डिवाइसों और स्थानीय भाषाओं को देखने के लिए, इन gcloud कमांड का इस्तेमाल करें.

इसके अलावा, आपके पास Notepad ऐप्लिकेशन का सैंपल डाउनलोड करने का विकल्प भी है. इससे आपको तुरंत निर्देश देने में मदद मिलेगी. बाइनरी फ़ाइल app-debug-unaligned.apk और इंस्ट्रुमेंटेशन टेस्ट फ़ाइल app-debug-test-unaligned.apk का इस्तेमाल करें. ये फ़ाइलें NotePad/app/build/outputs/apk/ में मौजूद होती हैं.

  • models list: Android डिवाइसों की मौजूदा सूची पाएं, ताकि आप उन पर टेस्ट कर सकें.

    gcloud firebase test android models list

    कमांड के आउटपुट में:

    • कॉलम MODEL_ID में वह आइडेंटिफ़ायर होता है जिसका इस्तेमाल बाद में, डिवाइस मॉडल पर टेस्ट चलाने के लिए किया जा सकता है.
    • OS_VERSION_ID कॉलम में, डिवाइस के साथ काम करने वाले ऑपरेटिंग सिस्टम के वर्शन शामिल हैं.

    आउटपुट का उदाहरण

    gcloud firebase test android models list output

  • models describe: किसी Android MODEL_ID के बारे में ज़्यादा जानकारी पाएं.

    gcloud firebase test android models describe MODEL_ID

    आउटपुट में डिवाइस मॉडल का ब्रैंड, मैन्युफ़ैक्चरर, ओएस वर्शन, साथ काम करने वाले एपीआई लेवल, साथ काम करने वाले ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई), रिलीज़ की तारीखें, और यह जानकारी शामिल होती है कि डिवाइस फ़िज़िकल है या वर्चुअल.

  • versions list: जांच करने के लिए, फ़िलहाल उपलब्ध ओएस वर्शन की सूची पाएं.

    gcloud firebase test android versions list

    कमांड के आउटपुट की पहली दो कॉलम (OS_VERSION_ID और VERSION) में से किसी एक आइडेंटिफ़ायर का इस्तेमाल किया जा सकता है. इससे बाद में, Android OS के किसी वर्शन के ख़िलाफ़ टेस्ट किए जा सकते हैं. अगर आपने Android ओएस के उन वर्शन के बारे में नहीं बताया है जिन पर आपको टेस्ट करना है, तो TAGS कॉलम में दिए गए डिफ़ॉल्ट वर्शन का इस्तेमाल किया जाता है.

    आउटपुट का उदाहरण

    gcloud android versions list

  • locales list: जांच के लिए उपलब्ध स्थानीय भाषाओं की मौजूदा सूची पाएं.

    gcloud firebase test android versions list

    कमांड के आउटपुट के पहले कॉलम, LOCALE में वह आइडेंटिफ़ायर होता है जिसका इस्तेमाल बाद में किसी स्थान-भाषा के लिए टेस्ट चलाने के लिए किया जा सकता है. अगर आपने जांच के लिए भाषाओं के बारे में नहीं बताया है, तो अंग्रेज़ी को डिफ़ॉल्ट भाषा के तौर पर इस्तेमाल किया जाएगा.

चरण 3. टेस्ट चलाना

अब आपको पता है कि आपके ऐप्लिकेशन की टेस्टिंग के लिए, डिवाइस के कौन-कौनसे मॉडल, स्थान-भाषाएं, और ओएस वर्शन उपलब्ध हैं. इसलिए, रोबो या इंस्ट्रुमेंटेशन टेस्ट चलाने के लिए, gcloud firebase test android run कमांड और --device फ़्लैग का इस्तेमाल करके डिवाइसों के बारे में जानकारी दी जा सकती है.

रोबो टेस्ट चलाना

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

रोबो टेस्ट चलाने के लिए, यहां दी गई कमांड का इस्तेमाल करें:

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 चलाएं.

रोबो टेस्ट के नतीजों की जांच करने का तरीका जानने के लिए, अपने टेस्ट के नतीजों का विश्लेषण करना लेख पढ़ें.

इंस्ट्रुमेंटेशन टेस्ट चलाना

अब gcloud कमांड लाइन टूल का इस्तेमाल करके, Notepad ऐप्लिकेशन के Espresso टेस्ट को अपने चुने गए Android डिवाइस कॉन्फ़िगरेशन पर चलाएं. 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 या इसके बाद का वर्शन ज़रूरी है. इसे चालू करने के लिए,
--use-orchestrator फ़्लैग के साथ gcloud firebase test android run का इस्तेमाल करें. इसे बंद करने के लिए, --no-use-orchestrator फ़्लैग का इस्तेमाल करें.

ऊपर नहीं दिखाए गए अन्य फ़्लैग का इस्तेमाल करके, यह भी कंट्रोल किया जा सकता है कि Test Lab आपके इंस्ट्रुमेंटेशन टेस्ट कैसे चलाता है. उदाहरण के लिए, --test-targets फ़्लैग का इस्तेमाल करके, किसी एक क्लास या क्लास के ऐसे तरीके की जांच की जा सकती है जिसका इस्तेमाल आपके टेस्ट APK में किया गया है. --num-flaky-test-attempts फ़्लैग का इस्तेमाल करके यह भी पता लगाया जा सकता है कि फ़ेल हुआ टेस्ट, फ़्लेकी टेस्ट था या नहीं. यह फ़्लैग, यह तय करता है कि अगर किसी वजह से एक या उससे ज़्यादा टेस्ट केस फ़ेल हो जाते हैं, तो टेस्ट को कितनी बार फिर से एक्ज़ीक्यूट किया जाना चाहिए. ज़्यादा जानने के लिए, gcloud firebase test android run देखें.

इंस्ट्रुमेंटेशन टेस्ट के लिए कोड कवरेज रिपोर्ट

Test Lab कोड कवरेज रिपोर्टिंग टूल, EMMA और JaCoCo के साथ काम करता है. अगर आपने अपने ऐप्लिकेशन के बिल्ड में इनमें से किसी टूल को इंटिग्रेट किया है, तो Test Lab टेस्ट के लिए कोड कवरेज रिपोर्ट पाई जा सकती है. इसके लिए, कुछ अतिरिक्त तर्कों के साथ gcloud firebase test android run को चलाएं. अगर 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 में जाकर कोड कवरेज रिपोर्ट देखें:

  1. Firebase कंसोल लिंक खोलें. यह लिंक, Firebase टूल ने आपके टर्मिनल में टेस्ट के नतीजे वाली टेबल के ऊपर प्रिंट किया था.gcloud
  2. उस लिंक पर मौजूद सूची में से किसी टेस्ट एक्ज़ीक्यूशन पर क्लिक करके, उस एक्ज़ीक्यूशन की ज़्यादा जानकारी वाला पेज खोलें.
  3. टेस्ट के नतीजे पर क्लिक करके, उस टेस्ट के नतीजों वाले Cloud Storage बकेट पर जाएं.
  4. कोड कवरेज रिपोर्ट देखने के लिए, artifacts/coverage.ec खोलें.

अपने टेस्ट के नतीजों का विश्लेषण करना

कुछ मिनटों के बाद, gcloud टूल आपके टेस्ट के नतीजों की बुनियादी खास जानकारी प्रिंट करता है:

कमांड की जांच के नतीजे

कमांड लाइन टेस्ट रन के आउटपुट में, टेस्ट के नतीजों को देखने का लिंक भी शामिल होता है. इन नतीजों को समझने के तरीके के बारे में ज़्यादा जानने के लिए, Android के नतीजों के लिए Firebase Test Lab का विश्लेषण करना लेख पढ़ें.

रोबो टेस्ट के साथ कस्टम लॉगिन और टेक्स्ट इनपुट

रोबो टेस्ट, Google खाते का इस्तेमाल करके पुष्टि करने वाली साइन-इन स्क्रीन को अपने-आप पूरा कर देता है. ऐसा तब तक होता है, जब तक कि --no-auto-google-login पैरामीटर का इस्तेमाल न किया जाए. यह आपके दिए गए टेस्ट खाते के क्रेडेंशियल का इस्तेमाल करके, कस्टम लॉगिन स्क्रीन भी पूरी कर सकता है. इस पैरामीटर का इस्तेमाल, ऐप्लिकेशन में इस्तेमाल किए गए अन्य टेक्स्ट फ़ील्ड के लिए कस्टम इनपुट टेक्स्ट देने के लिए भी किया जा सकता है.

अपने ऐप्लिकेशन में टेक्स्ट फ़ील्ड भरने के लिए, --robo-directives पैरामीटर का इस्तेमाल करें. साथ ही, कॉमा लगाकर अलग की गई key-value जोड़े की सूची दें. इसमें key, टारगेट किए गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट का Android रिसॉर्स नेम है और value, टेक्स्ट स्ट्रिंग है. इस फ़्लैग का इस्तेमाल करके, Robo को यह भी बताया जा सकता है कि उसे कुछ खास यूज़र इंटरफ़ेस (यूआई) एलिमेंट (जैसे, "logout" बटन). EditText फ़ील्ड इस्तेमाल किए जा सकते हैं. हालांकि, WebView यूज़र इंटरफ़ेस (यूआई) एलिमेंट में टेक्स्ट फ़ील्ड इस्तेमाल नहीं किए जा सकते.

उदाहरण के लिए, कस्टम लॉगिन के लिए इस पैरामीटर का इस्तेमाल किया जा सकता है:

--robo-directives username_resource=username,password_resource=password

उपलब्ध कमांड और फ़्लैग

Test Lab gcloud सीएलआई में कई कमांड और फ़्लैग उपलब्ध हैं. इनकी मदद से, अलग-अलग स्पेसिफ़िकेशन के साथ टेस्ट चलाए जा सकते हैं:

  • Android Test Orchestrator फ़्लैग: यह Orchestrator को चालू करने वाला फ़्लैग है. यह एक ऐसा टूल है जिसकी मदद से,अपने ऐप्लिकेशन के हर टेस्ट को Instrumentation के अपने इनवोकेशन में चलाया जा सकता है. Test Lab हमेशा Orchestrator के नए वर्शन पर काम करता है.

  • गेम लूप टेस्ट फ़्लैग: कॉन्फ़िगरेशन फ़्लैग का एक सेट. यह "डेमो मोड" को चालू और कंट्रोल करता है, ताकि गेम ऐप्लिकेशन में खिलाड़ी की कार्रवाइयों को सिम्युलेट किया जा सके. Test Lab की मदद से गेम लूप टेस्ट चलाने के बारे में ज़्यादा जानें.

  • यूनिफ़ॉर्म शार्डिंग फ़्लैग (बीटा वर्शन में उपलब्ध): यह एक ऐसा फ़्लैग है जो उन शार्ड की संख्या तय करता है जिनमें आपको टेस्ट केस को बराबर बांटना है. शार्ड को अलग-अलग डिवाइसों पर एक साथ चलाया जाता है.

  • मैन्युअल शार्डिंग फ़्लैग (बीटा वर्शन में उपलब्ध): यह एक ऐसा फ़्लैग होता है जो पैकेज, क्लास, और/या टेस्ट केस के किसी ग्रुप को शार्ड (टेस्ट केस का ग्रुप) में चलाने के लिए तय करता है. शार्ड को अलग-अलग डिवाइसों पर एक साथ चलाया जाता है.

  • नेटवर्क ट्रैफ़िक प्रोफ़ाइल फ़्लैग (बीटा वर्शन में उपलब्ध): यह एक फ़्लैग है. इससे पता चलता है कि आपके टेस्ट, फ़िज़िकल डिवाइसों के साथ किस नेटवर्क प्रोफ़ाइल का इस्तेमाल करते हैं. नेटवर्क प्रोफ़ाइलें, अलग-अलग तरह के नेटवर्क की स्थितियों को दिखाती हैं. इससे आपको ऐसे नेटवर्क पर अपने ऐप्लिकेशन की परफ़ॉर्मेंस को टेस्ट करने में मदद मिलती है जो भरोसेमंद नहीं हैं या जिनके बारे में अनुमान नहीं लगाया जा सकता.

Test Lab की मदद से gcloud कमांड की स्क्रिप्ट लिखना

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

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 API का चुना गया लेवल काम न करने पर यह गड़बड़ी हो सकती है.
19 उपयोगकर्ता ने टेस्ट मैट्रिक्स को रद्द कर दिया है.
20 टेस्ट के इन्फ़्रास्ट्रक्चर में कोई गड़बड़ी हुई.