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. टेस्ट डाइमेंशन का सेट चुनने के बाद, 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 सीएलआई के बारे में ज़्यादा जानने के लिए, रेफ़रंस दस्तावेज़ देखें.

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

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