Gcloud CLI के साथ परीक्षण प्रारंभ करें

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

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

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

यदि आपने पहले से नहीं किया है, तो अपने एंड्रॉइड प्रोजेक्ट में फायरबेस जोड़ें

चरण 1. जीक्लाउड सीएलआई सेट करें

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

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

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

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

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

  • models list : आपके परीक्षण के लिए उपलब्ध एंड्रॉइड डिवाइसों की एक वर्तमान सूची प्राप्त करें।

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

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

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

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

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

टेस्ट लैब कोड कवरेज रिपोर्टिंग टूल ईएमएमए और जैकोको का समर्थन करता है। यदि आपके ऐप के निर्माण में कोई भी टूल एकीकृत है, तो आप कुछ अतिरिक्त तर्कों के साथ gcloud firebase test android run चलाकर टेस्ट लैब परीक्षणों के लिए एक कोड कवरेज रिपोर्ट प्राप्त कर सकते हैं। यदि एंड्रॉइड टेस्ट ऑर्केस्ट्रेटर सक्षम नहीं है, तो निम्नलिखित का उपयोग करें:

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. फायरबेस कंसोल लिंक खोलें जिसे gcloud टूल आपके टर्मिनल में परीक्षण परिणाम तालिका के ऊपर मुद्रित करता है।
  2. उस निष्पादन के विवरण पृष्ठ को खोलने के लिए उस लिंक पर सूची से एक परीक्षण निष्पादन पर क्लिक करें।
  3. उस निष्पादन के परीक्षण परिणामों के साथ क्लाउड स्टोरेज बकेट पर जाने के लिए परीक्षण परिणाम पर क्लिक करें।
  4. अपनी कोड कवरेज रिपोर्ट देखने के लिए artifacts/coverage.ec खोलें।

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

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

Command test results

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

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

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

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

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

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

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

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

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

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

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

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

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

टेस्ट लैब के साथ जीक्लाउड कमांड की स्क्रिप्टिंग

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