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

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

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

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

  3. पक्का करें कि आपका इंस्टॉलेशन अप-टू-डेट हो और उसमें gcloud firebase कमांड शामिल हो:
          gcloud components update
  4. अपने Google खाते का इस्तेमाल करके, gcloud CLI में लॉग इन करें:
          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. टेस्ट के लिए डाइमेंशन का सेट चुनने के बाद, firebase test ios run कमांड का इस्तेमाल करके, Test Lab को टेस्ट चलाने के लिए कहा जा सकता है. आपको टेस्ट डाइमेंशन के जिस कॉम्बिनेशन पर टेस्ट करना है उसके लिए, अलग --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
पुश नोटिफ़िकेशन

पुश नोटिफ़िकेशन के अनुरोधों को अनुमति देने के लिए, उपयोगकर्ता JSON वेब टोकन बना सकते हैं. इसके लिए, उन्हें निजी हस्ताक्षर कुंजी के साथ-साथ कुंजी आईडी - C7FD9DJAA8 और टीम आईडी - 9CKCGNNUQN का इस्तेमाल करना होगा. जनरेट किए गए टोकन एक घंटे के लिए मान्य होंगे. इन्हें हर 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 CLI के बारे में ज़्यादा जानने के लिए, रेफ़रंस दस्तावेज़ देखें.

तीसरा चरण (ज़रूरी नहीं): बनाए गए टेस्ट को अपने-आप चालू होने के लिए सेट अप करना

Test Lab की मदद से gcloud कमांड की स्क्रिप्ट लिखना

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 का दस्तावेज़ पढ़ें. इसमें टेस्टिंग के उन विकल्पों के बारे में बताया गया है जो आम तौर पर उपलब्ध हैं या बीटा वर्शन में हैं.