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

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

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

वेब कंटेनर इंस्टॉल करने से पहले

अगर आपने पहले से Firebase को नहीं जोड़ा है, तो अपने 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 टेस्ट के लिए Android मॉडल की सूची का आउटपुट

  • 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 ओएस वर्शन की जांच की जा सकती है. अगर जांच के लिए Android OS के वर्शन तय नहीं किए जाते, तो TAGS कॉलम में बताए गए डिफ़ॉल्ट वर्शन का इस्तेमाल किया जाता है.

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

    gcloud Android वर्शन की सूची

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

    gcloud firebase test android versions list
    

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

तीसरा चरण. जांच करें

अब आपको अपने ऐप्लिकेशन की जांच करने के लिए उपलब्ध डिवाइस मॉडल, स्थान-भाषा, और ओएस वर्शन के बारे में जानकारी है. इसलिए, रोबो या इंस्ट्रुमेंटेशन टेस्ट करने के लिए, 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 चलाएं.

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

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

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

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

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

Test Lab, कोड कवरेज की रिपोर्ट करने वाले टूल EMMA और JaCoCo के साथ काम करता है. अगर आपने अपने ऐप्लिकेशन के बिल्ड में कोई भी टूल इंटिग्रेट किया है, तो कुछ और आर्ग्युमेंट की मदद से 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 कंसोल लिंक खोलें जिसे gcloud टूल ने आपके टर्मिनल में जांच के नतीजों वाली टेबल के ऊपर प्रिंट किया था.
  2. एक्ज़ीक्यूशन के ज़्यादा जानकारी वाले पेज को खोलने के लिए, उस लिंक पर मौजूद सूची में से किसी टेस्ट एक्ज़ीक्यूशन पर क्लिक करें.
  3. उस एक्ज़ीक्यूशन के टेस्ट नतीजों वाले Cloud Storage बकेट पर जाने के लिए, टेस्ट के नतीजे पर क्लिक करें.
  4. अपने कोड कवरेज की रिपोर्ट देखने के लिए, artifacts/coverage.ec खोलें.

जांच के नतीजों का विश्लेषण करना

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

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

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

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

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

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

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

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

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

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

  • Android Test Orchestrator फ़्लैग: Orchestrator को चालू करने वाला फ़्लैग. इससे,अपने ऐप्लिकेशन के हर टेस्ट को उसके खुद के Instrumentation को शुरू करने की सुविधा के साथ चलाया जा सकता है. 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

स्क्रिप्ट एग्ज़िट कोड

टेस्ट लैब में आपको कई एग्ज़िट कोड मिलते हैं. इनकी मदद से, स्क्रिप्ट या बैच फ़ाइलों का इस्तेमाल करके चलाए जाने वाले टेस्ट के नतीजों को बेहतर तरीके से समझा जा सकता है.

टेस्ट लैब के लिए, एग्ज़िट कोड स्क्रिप्ट करना

कोड से बाहर निकलें ज़रूरी जानकारी
0 सभी जांच पास हो गईं.
1 कोई सामान्य गड़बड़ी हुई. इसकी ये वजहें हो सकती हैं: फ़ाइल का ऐसा नाम जो मौजूद न हो या एचटीटीपी/नेटवर्क में गड़बड़ी हो.
2 अनजान निर्देश या आर्ग्युमेंट दिए जाने की वजह से, जांच से बाहर हो गया.
10 जांच के दौरान एक या इससे ज़्यादा टेस्ट केस (टेस्ट की गई क्लास या क्लास के तरीके) पास नहीं हुए.
15 किसी अनचाही गड़बड़ी की वजह से, Firebase टेस्ट लैब यह पता नहीं लगा सका कि टेस्ट मैट्रिक्स पास हुआ या नहीं.
18 टेस्ट एनवायरमेंट मौजूद न होने की वजह से, इस टेस्ट के लिए टेस्ट एनवायरमेंट काम नहीं करता. यह गड़बड़ी तब हो सकती है, जब चुना गया Android एपीआई लेवल, चुने गए डिवाइस टाइप के साथ काम न करता हो.
19 टेस्ट मैट्रिक्स को उपयोगकर्ता ने रद्द कर दिया था.
20 परीक्षण संरचना में कोई गड़बड़ी हुई.