欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

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

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

परीक्षण लैब में अपने Android ऐप के साथ उपयोग किए जा सकने वाले 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
    

    आउटपुट में डिवाइस मॉडल का ब्रांड, निर्माता, OS संस्करण, समर्थित API स्तर, समर्थित एप्लिकेशन बाइनरी इंटरफ़ेस (ABI), रिलीज़ दिनांक और डिवाइस भौतिक या आभासी है या नहीं।

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

चल रहे परीक्षण

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

--type robo पैरामीटर निहित है यदि कोई --type मान निर्दिष्ट नहीं है। आप टाइप करके परीक्षण चलाने के लिए कमांड लाइन विकल्पों का पूरा सेट देख सकते हैं: 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

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

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

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

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

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