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

इस गाइड में, gcloud सीएलआई का इस्तेमाल करके, इंस्ट्रूमेंटेशन, रोबो या गेम लूप टेस्ट चलाने का तरीका बताया गया है.

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

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

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

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

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

  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 OS के वर्शन की जानकारी नहीं दी है, तो 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 कमांड लाइन टूल का इस्तेमाल करके, अपने चुने गए Android डिवाइस कॉन्फ़िगरेशन पर, Notepad ऐप्लिकेशन के Espresso टेस्ट चलाएं. 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. अगर आपने अपने ऐप्लिकेशन के लिए, इनमें से किसी टूल को इंटिग्रेट किया है, तो कुछ अतिरिक्त आर्ग्युमेंट के साथ 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 में अपनी कोड कवरेज रिपोर्ट देखें:

  1. 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 को कुछ खास यूज़र इंटरफ़ेस (यूआई) एलिमेंट (उदाहरण के लिए, "लॉग आउट करें" बटन). EditText फ़ील्ड इस्तेमाल किए जा सकते हैं, लेकिन WebView यूज़र इंटरफ़ेस (यूआई) एलिमेंट में टेक्स्ट फ़ील्ड का इस्तेमाल नहीं किया जा सकता.

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

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

उपलब्ध निर्देश और फ़्लैग

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

  • 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 टेस्ट इन्फ़्रास्ट्रक्चर से जुड़ी कोई गड़बड़ी हुई.