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. टेस्ट डाइमेंशन चुनें.

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

    gcloud firebase test ios dimension list

    स्क्रीन ओरिएंटेशन कुछ हद तक आसान है, क्योंकि इसके सिर्फ़ portrait और landscape विकल्प हैं.

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

  3. टेस्ट डाइमेंशन का सेट चुनने के बाद, 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 वर्शन और टेस्ट लैब में इस्तेमाल किए गए डिफ़ॉल्ट 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 फ़्लैग को सेट करें. टेस्ट लैब, खास एनटाइटलमेंट का इस्तेमाल करने के लिए, ऐप्लिकेशन को नए बंडल-आइडेंटिफ़ायर की मदद से फिर से साइन करता है. इसलिए, पक्का करें कि आपकी ज़िप फ़ाइल में कोई भी ऐसा संसाधन न हो जिसमें ऐप्लिकेशन के बंडल आइडेंटिफ़ायर के बारे में सीधे तौर पर जानकारी दी गई हो.

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

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

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

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

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

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

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

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

--app

ज़रूरी है: आपके ऐप्लिकेशन की आईपीए फ़ाइल का ऐब्सलूट पाथ (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 सीएलआई के बारे में ज़्यादा जानकारी के लिए रेफ़रंस दस्तावेज़ देखें.

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

टेस्ट लैब की मदद से, 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

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

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

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

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

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

अगला चरण

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