Google Cloud CLI-এর মাধ্যমে পরীক্ষা করা

gcloud CLI ব্যবহার করে কীভাবে XCTest বা গেম লুপ টেস্ট রান করতে হয় তা এই নির্দেশিকায় বর্ণনা করা হয়েছে।

ধাপ ১: আপনার লোকাল Google Cloud SDK এনভায়রনমেন্ট কনফিগার করুন

  1. Google Cloud SDK ডাউনলোড করুন
  2. এর মধ্যে gcloud CLI টুল অন্তর্ভুক্ত।

  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 বিশেষ এনটাইটেলমেন্টের জন্য নতুন বান্ডিল শনাক্তকারী সহ অ্যাপ্লিকেশনটি আবার সাইন করে, তাই আপনার জিপ ফাইলে এমন কোনও রিসোর্স নেই তা নিশ্চিত করুন যেখানে অ্যাপের বান্ডিল শনাক্তকারীর সরাসরি রেফারেন্স আছে।

এইসব এনটাইটেলমেন্ট কাজ করে:
  1. পুশ বিজ্ঞপ্তি apns-environment
  2. ব্যক্তিগত VPN com.apple.developer.networking.vpn.api
পুশ বিজ্ঞপ্তি

পুশ বিজ্ঞপ্তির অনুরোধ অনুমোদন করার জন্য, ব্যবহারকারীরা ব্যক্তিগত স্বাক্ষর করার কী ব্যবহার করে JSON ওয়েব টোকেন তৈরি করতে পারবেন, এর সাথে কী আইডি - C7FD9DJAA8 এবং টিম আইডি - 9CKCGNNUQN ব্যবহার করতে হবে। জেনারেট করা টোকেন এক ঘণ্টার জন্য বৈধ থাকবে এবং প্রতি ৬০ মিনিট অন্তর রিফ্রেশ করতে হবে। আরও পড়ুন APNs-এ টোকেন-ভিত্তিক কানেকশন তৈরি করা।

অ্যাপ গ্রুপ

অ্যাপ গ্রুপ আইডি বিশ্বব্যাপী অনন্য। এর অর্থ হল, আমরা যখন ব্যবহারকারীর অ্যাপে আবার সাইন-ইন করি, তখন আমরা শুধুমাত্র অ্যাপ গ্রুপ আইডি ব্যবহার করতে পারি যা Test Lab ডেভেলপার অ্যাকাউন্টের সাথে যুক্ত। আপনার টেস্ট অ্যাপ গ্রুপের উপর নির্ভর করলে, আপনার টেস্ট ব্যর্থ হবে।

গেম লুপ টেস্ট রান করা

gcloud beta firebase test ios run কমান্ড রান করুন এবং রান কনফিগার করতে নিম্নলিখিত ফ্ল্যাগ ব্যবহার করুন:

গেম লুপ টেস্টের জন্য ফ্ল্যাগ
--type

প্রয়োজনীয়: আপনি যে ধরনের iOS টেস্ট চালাতে চান তা নির্দিষ্ট করে। আপনি পরীক্ষার ধরন xctest (ডিফল্ট) বা game-loop লিখতে পারেন।

--app

প্রয়োজনীয়: আপনার অ্যাপের IPA ফাইলের অ্যাবসোলিউট পাথ (GCS বা ফাইলসিস্টেম)। গেম লুপ টেস্ট রান করার সময় শুধুমাত্র এই ফ্ল্যাগটি বৈধ।

--scenario-numbers

আপনার অ্যাপে যে লুপ (ওরফে সিনারিও) চালাতে চান। আপনি একটি লুপ, তালিকা বা লুপ বা লুপের রেঞ্জ লিখতে পারেন। ডিফল্ট লুপ হল ১।

যেমন, --scenario-numbers=1-3,5 লুপ ১, ২, ৩ ও ৫ রান করে।

--device-model

আপনি যে ফিজিক্যাল ডিভাইসে টেস্ট রান করতে চান (কোন উপলভ্য ডিভাইস আপনি ব্যবহার করতে পারবেন তা খুঁজে দেখুন)।

--timeout

আপনি সর্বাধিক কত সময় ধরে পরীক্ষা চালাতে চান। সেকেন্ডে সময়সীমা দেখানোর জন্য আপনি একটি পূর্ণসংখ্যা লিখতে পারেন অথবা সময়ের আরও বড় ইউনিট হিসেবে সময়সীমা দেখানোর জন্য একটি পূর্ণসংখ্যা ও এনিউমারেশন লিখতে পারেন।

যেমন:

  • --timeout=200 আপনার টেস্ট ২০০ সেকেন্ড পর্যন্ত চললে, সেটি বন্ধ করতে বাধ্য করে।
  • --timeout=1h আপনার টেস্ট এক ঘণ্টা পর্যন্ত চললে সেটি বন্ধ করতে বাধ্য করে।

যেমন, নিম্নলিখিত কমান্ডটি একটি গেম লুপ টেস্ট রান করে যা iPhone 8 Plus-এ ১, ৪, ৬, ৭ এবং ৮ লুপ এক্সিকিউট করে:

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 সাধারণ কোনও সমস্যা হয়েছে। সম্ভাব্য কারণের মধ্যে অন্তর্ভুক্ত হল: ফাইলের নাম যা নেই বা HTTP/নেটওয়ার্কের সমস্যা।
2 অজানা কমান্ড বা আর্গুমেন্ট প্রদান করার কারণে টেস্টিং বন্ধ হয়ে গেছে।
10 টেস্ট এক্সিকিউশনের মধ্যে এক বা একাধিক টেস্ট কেস (টেস্ট করা ক্লাস বা ক্লাস পদ্ধতি) পাস করেনি।
15 অপ্রত্যাশিত সমস্যার কারণে, টেস্ট ম্যাট্রিক্স পাস করেছে নাকি ফেল করেছে তা Firebase Test Lab নির্ধারণ করতে পারেনি।
19 ব্যবহারকারী টেস্ট ম্যাট্রিক্স বাতিল করেছেন।
20 টেস্ট ইনফ্রাস্ট্রাকচার সংক্রান্ত সমস্যা হয়েছে।

ধাপ ৪: পরীক্ষার ফলাফল খতিয়ে দেখা

পরীক্ষা শুরু হলে, আপনি পরীক্ষার ফলাফল পৃষ্ঠার একটি লিঙ্ক পাবেন। আপনার বেছে নেওয়া বিভিন্ন কনফিগারেশনের সংখ্যা এবং আপনার টেস্টের জন্য সেট করা টেস্ট টাইমআউট সময়সীমার উপর নির্ভর করে টেস্ট রান করতে কয়েক মিনিট সময় লাগতে পারে। আপনার টেস্ট রান করার পরে, আপনি টেস্টের ফলাফল পর্যালোচনা করতে পারবেন। আপনার পরীক্ষার ফলাফল কীভাবে ব্যাখ্যা করবেন সেই সম্পর্কে আরও জানতে Firebase Test Lab ফলাফল বিশ্লেষণ করা দেখুন।

পরবর্তী ধাপ

সাধারণত উপলভ্য বা বিটা ভার্সনে থাকা টেস্টিং বিকল্প এক্সপ্লোর করতে Google Cloud SDK ডকুমেন্টেশন পড়ুন।