Google Cloud सीएलआई की मदद से टेस्ट करना

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

पहला चरण: अपने स्थानीय Google Cloud SDK एनवायरमेंट को कॉन्फ़िगर करना

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

  3. पक्का करें कि आपका इंस्टॉलेशन अप-टू-डेट हो और इसमें gcloud firebase कमांड शामिल हो:
          gcloud components update
  4. अपने Google खाते का इस्तेमाल करके, gcloud सीएलआई में लॉग इन करें:
          gcloud auth login
  5. gcloud में अपना Firebase प्रोजेक्ट सेट करें. इसमें PROJECT_ID आपके Firebase प्रोजेक्ट का आईडी है:
         gcloud config set project PROJECT_ID

दूसरा चरण: अपना टेस्ट चलाना

XCTest चलाना

  1. अपने टेस्ट की .zip फ़ाइल अपलोड करने के लिए, यह कमांड चलाएं. अगर आपने अब तक अपने ऐप्लिकेशन को पैकेज नहीं किया है, तो XCTest को पैकेज करना लेख पढ़ें:

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. अपने टेस्ट के डाइमेंशन चुनें.

    Test Lab की मदद से, iOS के अलग-अलग वर्शन, डिवाइसों, स्क्रीन ओरिएंटेशन, और स्थानीय भाषाओं के लिए टेस्ट चलाए जा सकते हैं. इन कॉन्फ़िगरेशन को टेस्ट के डाइमेंशन कहा जाता है. हर डाइमेंशन के विकल्प देखने के लिए (जैसे, डिवाइस के iOS वर्शन के लिए Xcode के काम करने वाले वर्शन), यहां दिए गए कमांड में dimension की जगह models, versions या locales डालें:

    gcloud firebase test ios dimension list

    स्क्रीन ओरिएंटेशन के लिए, सिर्फ़ दो विकल्प उपलब्ध हैं: portrait और landscape.

    टेस्ट के डाइमेंशन की सूची देखें और कुछ ऐसे कॉम्बिनेशन चुनें जिन पर आपको अपना टेस्ट चलाना है. हर दिन ज़्यादा से ज़्यादा कितने कॉम्बिनेशन पर टेस्ट चलाया जा सकता है, यह जानने के लिए, कीमत प्लान पर जाएं.

  3. टेस्ट के डाइमेंशन का सेट चुनने के बाद, Test Lab run अपने टेस्ट चलाने के लिए firebase test ios run कमांड का इस्तेमाल किया जा सकता है. टेस्ट के डाइमेंशन के हर उस कॉम्बिनेशन के लिए, जिस पर आपको टेस्ट करना है, एक अलग --device फ़्लैग शामिल करें:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    ऐसा हो सकता है कि टेस्ट बनाने के लिए इस्तेमाल किए गए Xcode वर्शन और Test Lab के डिफ़ॉल्ट Xcode वर्शन के बीच इनकंपैटिबिलिटी की वजह से, आपका टेस्ट फ़ेल हो जाए. अपने टेस्ट के लिए, Xcode का कोई ऐसा वर्शन तय करने के लिए जिस पर टेस्ट काम करता है, --xcode-version फ़्लैग का इस्तेमाल करें:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Firebase कंसोल में, अपने टेस्ट मैट्रिक्स की पहचान करने और उन्हें ढूंढने में आपकी मदद करने के लिए, यहां दिए गए उदाहरण में --client-details matrixLabel="<label>" फ़्लैग का इस्तेमाल करके, अपने टेस्ट मैट्रिक्स को लेबल किया जा सकता है:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

खास एनटाइटलमेंट की जांच करना

ऐसे एनटाइटलमेंट की जांच करने के लिए जिनके लिए साफ़ तौर पर ऐप्लिकेशन आईडी की ज़रूरत होती है, फ़्लैग सेट किया जा सकता है.--test-special-entitlements Test Lab खास एनटाइटलमेंट के लिए ऐप्लिकेशन को नए बंडल-आइडेंटिफ़ायर के साथ फिर से साइन करता है. इसलिए, पक्का करें कि आपकी zip फ़ाइल में ऐसे कोई रिसॉर्स न हों जिनमें ऐप्लिकेशन के बंडल आइडेंटिफ़ायर के सीधे रेफ़रंस हों.

काम करने वाले एनटाइटलमेंट:
  1. पुश नोटिफ़िकेशन apns-environment
  2. निजी वीपीएन com.apple.developer.networking.vpn.api
पुश नोटिफ़िकेशन

पुश नोटिफ़िकेशन के अनुरोधों को अनुमति देने के लिए, उपयोगकर्ता निजी साइनिंग कुंजी के साथ-साथ, कुंजी आईडी - C7FD9DJAA8 और टीम आईडी - 9CKCGNNUQN का इस्तेमाल करके, JSON वेब टोकन बना सकते हैं. जनरेट किए गए टोकन एक घंटे के लिए मान्य होंगे . इन्हें हर 60 मिनट में रीफ़्रेश करना होगा. APNs से टोकन-आधारित कनेक्शन बनाना के बारे में ज़्यादा पढ़ें.

ऐप्लिकेशन ग्रुप

ऐप्लिकेशन ग्रुप आईडी, दुनिया भर में यूनीक होते हैं. इसका मतलब है कि जब हम उपयोगकर्ताओं के ऐप्लिकेशन को फिर से साइन करते हैं, तो हम सिर्फ़ उस ऐप्लिकेशन ग्रुप आईडी का इस्तेमाल कर सकते हैं जो Test Lab डेवलपर खाते से जुड़ा है. अगर आपका टेस्ट, ऐप्लिकेशन ग्रुप पर निर्भर करता है , तो वह फ़ेल हो जाएगा.

गेम लूप टेस्ट चलाना

gcloud beta firebase test ios run कमांड चलाएं और रन को कॉन्फ़िगर करने के लिए, इन फ़्लैग का इस्तेमाल करें:

गेम लूप टेस्ट के लिए फ़्लैग
--type

ज़रूरी है: इससे, iOS के उस टेस्ट के टाइप की जानकारी मिलती है जिसे आपको चलाना है. टेस्ट के टाइप के तौर पर, टेस्ट टाइप xctest (डिफ़ॉल्ट) या game-loop डाला जा सकता है.

--app

ज़रूरी है: आपके ऐप्लिकेशन की IPA फ़ाइल का ऐब्सलूट पाथ (GCS या फ़ाइल सिस्टम). यह फ़्लैग, सिर्फ़ गेम लूप टेस्ट चलाते समय मान्य होता है.

--scenario-numbers

वे लूप (जिन्हें सिनेरियो भी कहा जाता है) जिन्हें आपको अपने ऐप्लिकेशन में चलाना है. इसमें एक लूप, लूप की सूची या लूप की रेंज डाली जा सकती है. डिफ़ॉल्ट लूप 1 होता है.

उदाहरण के लिए, --scenario-numbers=1-3,5 से लूप 1, 2, 3, और 5 चलते हैं.

--device-model

वह फ़िज़िकल डिवाइस जिस पर आपको अपना टेस्ट चलाना है यह जानने के लिए कि कौनसे उपलब्ध डिवाइसों का इस्तेमाल किया जा सकता है, यहां क्लिक करें.

--timeout

वह ज़्यादा से ज़्यादा समय जिसके लिए आपको अपना टेस्ट चलाना है. समय को सेकंड में दिखाने के लिए, कोई पूर्णांक डाला जा सकता है. इसके अलावा, समय को बड़ी यूनिट में दिखाने के लिए, कोई पूर्णांक और इन्यूमरेशन डाला जा सकता है.

उदाहरण के लिए:

  • --timeout=200 से, आपका टेस्ट 200 सेकंड तक चलने के बाद, अपने-आप बंद हो जाता है.
  • --timeout=1h से, आपका टेस्ट एक घंटे तक चलने के बाद, अपने-आप बंद हो जाता है.

उदाहरण के लिए, यहां दिया गया निर्देश, iPhone 8 Plus पर गेम लूप टेस्ट चलाता है. इसमें लूप 1, 4, 6, 7, और 8 चलते हैं:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

gcloud सीएलआई के बारे में ज़्यादा जानने के लिए, रेफ़रंस दस्तावेज़ देखें.

तीसरा चरण (ज़रूरी नहीं): आने वाले समय में बनाए जाने वाले टेस्ट को ऑटोमेट करना

Test Lab के साथ gcloud कमांड की स्क्रिप्टिंग करना Test Lab

मोबाइल ऐप्लिकेशन की टेस्टिंग के लिए, उन कमांड को ऑटोमेट करने के लिए शेल स्क्रिप्ट या बैच फ़ाइलें इस्तेमाल की जा सकती हैं जिन्हें आम तौर पर gcloud कमांड लाइन का इस्तेमाल करके चलाया जाता है. इस सैंपल बैश स्क्रिप्ट से, दो मिनट के टाइम आउट के साथ XCTest चलता है. साथ ही, यह रिपोर्ट करता है कि टेस्ट रन सफलतापूर्वक पूरा हुआ या नहीं:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

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

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

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

चौथा चरण: टेस्ट के नतीजों की जांच करना

टेस्ट शुरू होने पर, आपको टेस्ट के नतीजे पेज का लिंक मिलता है. टेस्ट को पूरा होने में कुछ मिनट लग सकते हैं. यह इस बात पर निर्भर करता है कि आपने कितने अलग-अलग कॉन्फ़िगरेशन चुने हैं और अपने टेस्ट के लिए, टेस्ट का टाइम आउट कितने समय के लिए सेट किया है. टेस्ट पूरे होने के बाद, टेस्ट के नतीजे देखे जा सकते हैं. टेस्ट के नतीजों को समझने के तरीके के बारे में ज़्यादा जानने के लिए, नतीजों का विश्लेषण करना लेख पढ़ें.Firebase Test Lab

अगला चरण

आम तौर पर उपलब्ध या बीटा वर्शन में उपलब्ध टेस्टिंग के विकल्पों के बारे में जानने के लिए, Google Cloud SDK का दस्तावेज़ पढ़ें.