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

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

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

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

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

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

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

  3. पक्का करें कि आपका इंस्टॉलेशन अप-टू-डेट हो:
    gcloud components update
    
  4. अपने Google खाते का इस्तेमाल करके, gcloud सीएलआई में साइन इन करें:
    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 locales 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 के जांच करने वाले टूल के साथ काम करता है. 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 का जांच करने वाला टूल चालू नहीं है, तो इसका इस्तेमाल करें:

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 का जांच करने वाला टूल इस्तेमाल करते समय, कोड कवरेज रिपोर्ट जनरेट की जा रही हैं, तो अपने एनवायरमेंट वैरिएबल में इस तरह बदलाव करें:

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 सीएलआई में कई कमांड और फ़्लैग उपलब्ध हैं. इनकी मदद से, अलग-अलग खास जानकारी के साथ टेस्ट चलाए जा सकते हैं:

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