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

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

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

অ্যাপ গ্রুপ

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

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

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

Game Loop পরীক্ষার জন্য ফ্ল্যাগ
--type

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

--app

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

--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 কমান্ড লাইন ব্যবহার করে যে মোবাইল অ্যাপ টেস্টিং কমান্ডগুলি অন্যথায় চালাতেন, সেগুলি অটোমেট করতে শেল স্ক্রিপ্ট বা ব্যাচ ফাইল ব্যবহার করতে পারেন। এই স্যাম্পেল bash স্ক্রিপ্টটি দুই মিনিটের টাইমআউট সহ একটি 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 ডকুমেন্টেশন পড়ে দেখুন, এর মধ্যে টেস্টিং বিকল্পগুলি সাধারণত উপলভ্য অথবা বিটা ভার্সনে আছে।