Catch up on highlights from Firebase at Google I/O 2023. Learn more

gcloud CLI के साथ परीक्षण शुरू करें

यह मार्गदर्शिका बताती है कि gcloud CLI का उपयोग करके किसी इंस्ट्रूमेंटेशन, रोबो या गेम लूप टेस्ट को कैसे चलाना है।

टेस्ट लैब में अपने एंड्रॉइड ऐप के साथ उपयोग किए जा सकने वाले gcloud कमांड की पूरी सूची के लिए, gcloud firebase test android के लिए संदर्भ दस्तावेज पर जाएं।

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

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

चरण 1. gcloud CLI सेट अप करें

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

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

चरण 2. उपलब्ध परीक्षण उपकरणों की जाँच करें

आपके परीक्षण के लिए उपलब्ध परीक्षण उपकरणों और स्थानों को देखने के लिए निम्नलिखित gcloud कमांड का उपयोग करें।

एक विकल्प के रूप में, आप कमांड को तुरंत चलाना शुरू करने के लिए नमूना नोटपैड ऐप भी डाउनलोड कर सकते हैं। बाइनरी फ़ाइल 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 : परीक्षण के लिए वर्तमान में उपलब्ध OS संस्करणों की सूची प्राप्त करें।

    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. अपना परीक्षण चलाएँ

अब जब आप अपने ऐप के परीक्षण के लिए उपलब्ध डिवाइस मॉडल, स्थान और OS संस्करणों की श्रेणी जानते हैं, तो आप रोबो या इंस्ट्रूमेंटेशन टेस्ट चलाने के लिए 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 robo पैरामीटर अंतर्निहित है यदि कोई --type मान निर्दिष्ट नहीं किया गया है।
  • फायरबेस कंसोल में अपने परीक्षण मैट्रिसेस की पहचान करने और उनका पता लगाने में आपकी मदद करने के लिए, आप अपने टेस्ट मैट्रिक्स को लेबल करने के लिए वैकल्पिक --client-details matrixLabel="Example matrix label" फ्लैग का उपयोग कर सकते हैं।
  • आप टाइप करके परीक्षण चलाने के लिए कमांड लाइन विकल्पों का पूरा सेट देख सकते हैं: gcloud help firebase test android run

कमांड लाइन पर इन तर्कों को निर्दिष्ट करने के विकल्प के रूप में, आप वैकल्पिक रूप से अपने तर्कों को YAML-स्वरूपित तर्क फ़ाइल में निर्दिष्ट कर सकते हैं। इस सुविधा का उपयोग करने का तरीका जानने के लिए gcloud topic arg-files चलाएँ।

रोबो परीक्षण से परीक्षण के परिणामों की जांच कैसे करें, यह जानने के लिए अपने परीक्षण परिणामों का विश्लेषण करें देखें।

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

अब अपने निर्दिष्ट एंड्रॉइड डिवाइस कॉन्फ़िगरेशन पर नोटपैड ऐप के एस्प्रेसो परीक्षण चलाने के लिए 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"
  • --type इंस्ट्रूमेंटेशन पैरामीटर निहित है यदि कोई परीक्षण APK --test के साथ निर्दिष्ट किया गया है।
  • फायरबेस कंसोल में अपने परीक्षण मैट्रिसेस की पहचान करने और उनका पता लगाने में आपकी मदद करने के लिए, आप अपने टेस्ट मैट्रिक्स को लेबल करने के लिए वैकल्पिक --client-details matrixLabel="Example matrix label" फ्लैग का उपयोग कर सकते हैं।
  • आप gcloud help firebase test android run लिखकर परीक्षण चलाने के लिए कमांड लाइन विकल्पों का पूरा सेट देख सकते हैं।

कमांड लाइन पर इन तर्कों को निर्दिष्ट करने के विकल्प के रूप में, आप वैकल्पिक रूप से अपने तर्कों को YAML-स्वरूपित तर्क फ़ाइल में निर्दिष्ट कर सकते हैं। इस सुविधा का उपयोग करने का तरीका जानने के लिए gcloud topic arg-files चलाएँ।

gcloud CLI Android टेस्ट ऑर्केस्ट्रेटर का समर्थन करता है। ऑर्केस्ट्रेटर को AndroidJUnitRunner v1.1 या उच्चतर की आवश्यकता है। इसे सक्षम करने के लिए, gcloud firebase test android run उपयोग करें
--use-orchestrator ध्वज। इसे अक्षम करने के लिए --no-use-orchestrator फ़्लैग का उपयोग करें।

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

उपकरण परीक्षण के लिए कोड कवरेज रिपोर्ट

टेस्ट लैब कोड कवरेज रिपोर्टिंग टूल EMMA और JaCoCo को सपोर्ट करता है। यदि आपके पास अपने ऐप के निर्माण में कोई भी उपकरण एकीकृत है, तो आप कुछ अतिरिक्त तर्कों के साथ 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

यदि आप एंड्रॉइड टेस्ट ऑर्केस्ट्रेटर का उपयोग करते समय कोड कवरेज रिपोर्ट तैयार कर रहे हैं, तो अपने पर्यावरण चर को निम्नानुसार संशोधित करें:

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

जब टेस्ट लैब आपके परीक्षण चलाना समाप्त कर ले, तो Google क्लाउड स्टोरेज में अपनी कोड कवरेज रिपोर्ट खोजें:

  1. वह Firebase कंसोल लिंक खोलें जिसे gcloud टूल आपके टर्मिनल में परीक्षण परिणाम तालिका के ऊपर प्रिंट करता है.
  2. उस निष्पादन के विवरण पृष्ठ को खोलने के लिए उस लिंक पर सूची से एक परीक्षण निष्पादन पर क्लिक करें।
  3. निष्पादन के परीक्षण परिणामों के साथ क्लाउड स्टोरेज बकेट में जाने के लिए परीक्षण के परिणाम पर क्लिक करें।
  4. अपनी कोड कवरेज रिपोर्ट देखने के लिए artifacts/coverage.ec खोलें।

अपने परीक्षा परिणामों का विश्लेषण करें

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

Command test results

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

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

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

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

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

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

उपलब्ध आदेश और झंडे

टेस्ट लैब gcloud CLI में कई आदेश और फ़्लैग उपलब्ध हैं जो आपको अलग-अलग विशिष्टताओं के साथ परीक्षण चलाने देते हैं:

  • एंड्रॉइड टेस्ट ऑर्केस्ट्रेटर फ्लैग : ऑर्केस्ट्रेटर को सक्षम करने के लिए एक फ्लैग, एक टूल जो आपको अपने प्रत्येक ऐप के टेस्ट को Instrumentation के अपने आह्वान में चलाने की अनुमति देता है। टेस्ट लैब हमेशा ऑर्केस्ट्रेटर का नवीनतम संस्करण चलाता है।

  • गेम लूप टेस्ट फ़्लैग : कॉन्फिग फ़्लैग का एक सेट जो गेम ऐप्स में खिलाड़ी की क्रियाओं को सिम्युलेट करने के लिए "डेमो मोड" को सक्षम और नियंत्रित करता है। टेस्ट लैब के साथ गेम लूप टेस्ट चलाने के बारे में और जानें।

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

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

  • नेटवर्क ट्रैफ़िक प्रोफ़ाइल फ़्लैग (बीटा में) : एक फ़्लैग जो निर्दिष्ट करता है कि आपके परीक्षण भौतिक उपकरणों के साथ किस नेटवर्क प्रोफ़ाइल का उपयोग करते हैं। नेटवर्क प्रोफ़ाइल विभिन्न प्रकार की नेटवर्क स्थितियों का अनुकरण करती है, जिससे आप अविश्वसनीय या अप्रत्याशित नेटवर्क पर अपने ऐप के प्रदर्शन का परीक्षण कर सकते हैं।

टेस्ट लैब के साथ स्क्रिप्टिंग 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 एक सामान्य विफलता हुई। संभावित कारणों में शामिल हैं: एक फ़ाइल नाम जो मौजूद नहीं है या एक HTTP/नेटवर्क त्रुटि।
2 परीक्षण समाप्त हो गया क्योंकि अज्ञात आदेश या तर्क प्रदान किए गए थे।
10 परीक्षण निष्पादन के भीतर एक या अधिक परीक्षण मामले (परीक्षण वर्ग या वर्ग विधियाँ) पास नहीं हुए।
15 फायरबेस टेस्ट लैब एक अनपेक्षित त्रुटि के कारण यह निर्धारित नहीं कर सका कि परीक्षण मैट्रिक्स पास हुआ या असफल रहा।
18 असंगत परीक्षण आयामों के कारण इस परीक्षण निष्पादन के लिए परीक्षण वातावरण समर्थित नहीं है। यह त्रुटि तब हो सकती है यदि चयनित Android API स्तर चयनित डिवाइस प्रकार द्वारा समर्थित नहीं है।
19 परीक्षण मैट्रिक्स को उपयोगकर्ता द्वारा रद्द कर दिया गया था।
20 एक परीक्षण अवसंरचना त्रुटि हुई।