gcloud CLI-এর মাধ্যমে পরীক্ষা শুরু করা

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

Test Lab-এ আপনার Android অ্যাপের সাথে ব্যবহার করতে পারবেন এমন gcloud কমান্ডের সম্পূর্ণ তালিকা পেতে, gcloud firebase test android-এর জন্য রেফারেন্স ডকুমেন্টেশন দেখুন।

শুরু করার আগে

আপনি আগে থেকে না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।

ধাপ ১. gcloud CLI সেট-আপ করা

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

  3. আপনার ইনস্টলেশন আপ-টু-ডেট আছে কিনা তা ভালোভাবে দেখে নিন:
    gcloud components update
    
  4. আপনার Google অ্যাকাউন্ট ব্যবহার করে gcloud CLI-তে সাইন-ইন করুন:
    gcloud auth login
    
  5. gcloud-এ আপনার Firebase প্রোজেক্ট সেট করুন, যেখানে PROJECT_ID হল আপনার Firebase প্রোজেক্টের আইডি:
    gcloud config set project PROJECT_ID
    

ধাপ ২. উপলভ্য টেস্ট ডিভাইস চেক করুন

আপনার পরীক্ষার জন্য উপলভ্য টেস্ট ডিভাইস এবং লোকেল দেখতে নিম্নলিখিত gcloud কমান্ড ব্যবহার করুন।

বিকল্প হিসেবে, আপনি স্যাম্পেল Notepad অ্যাপ ডাউনলোড করে কমান্ড রান করা শুরু করতে পারেন। বাইনারি ফাইল app-debug-unaligned.apk এবং ইনস্ট্রুমেন্টেশন টেস্ট ফাইল app-debug-test-unaligned.apk ব্যবহার করুন, যা NotePad/app/build/outputs/apk/-এ রয়েছে।

  • models list: আপনার টেস্ট করার জন্য উপলভ্য Android ডিভাইসের বর্তমান তালিকা পান।

    gcloud firebase test android models list

    কমান্ড আউটপুটে:

    • MODEL_ID কলামে শনাক্তকারী আছে যা আপনি পরে ডিভাইস মডেলে টেস্ট রান করার জন্য ব্যবহার করতে পারবেন।
    • OS_VERSION_ID কলামে ডিভাইসে কাজ করে এমন অপারেটিং সিস্টেমের ভার্সন দেওয়া আছে।

    আউটপুটের উদাহরণ

    gcloud firebase test android models list output

  • models describe: নির্দিষ্ট Android MODEL_ID সম্পর্কে আরও তথ্য পান।

    gcloud firebase test android models describe MODEL_ID

    আউটপুটে ডিভাইসের মডেলের ব্র্যান্ড, প্রস্তুতকারক, OS ভার্সন, কাজ করে এমন API লেভেল, কাজ করে এমন অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI), রিলিজের তারিখ এবং ডিভাইসটি ফিজিক্যাল নাকি ভার্চুয়াল তা থাকে।

  • versions list: পরীক্ষা করার জন্য বর্তমানে উপলভ্য OS ভার্সনের তালিকা পান।

    gcloud firebase test android versions list

    Android OS ভার্সনের জন্য পরে টেস্ট রান করতে, আপনি কমান্ড আউটপুটের (OS_VERSION_ID এবং VERSION) প্রথম দুটি কলামের যেকোনও একটি থেকে শনাক্তকারী ব্যবহার করতে পারেন। আপনি যদি পরীক্ষা করার জন্য Android OS ভার্সন নির্দিষ্ট না করেন, তাহলে TAGS কলামে উল্লেখ করা ডিফল্ট ভার্সন ব্যবহার করা হয়।

    আউটপুটের উদাহরণ

    gcloud android versions list

  • locales list: পরীক্ষা করার জন্য উপলভ্য লোকেলগুলির বর্তমান তালিকা পান।

    gcloud firebase test android locales list

    কমান্ড আউটপুটের প্রথম কলাম, LOCALE-এ শনাক্তকারী থাকে যা আপনি পরে কোনও লোকেল অনুযায়ী টেস্ট রান করার জন্য ব্যবহার করতে পারবেন। আপনি যদি পরীক্ষা করার জন্য লোকেল নির্দিষ্ট না করেন, তাহলে ডিফল্ট লোকেল হিসেবে ইংরেজি ব্যবহার করা হয়।

ধাপ ৩. আপনার টেস্ট রান করুন

আপনার অ্যাপ পরীক্ষা করার জন্য উপলভ্য ডিভাইস মডেল, লোকেল এবং OS ভার্সনের রেঞ্জ সম্পর্কে এখন আপনি জানেন, তাই আপনি gcloud firebase test android run কমান্ড এবং --device ফ্ল্যাগ ব্যবহার করে ডিভাইস নির্দিষ্ট করতে পারবেন যাতে Robo বা ইন্সট্রুমেন্টেশন পরীক্ষা রান করা যায়।

রোবো টেস্ট রান করা

আপনার কোনও ইন্সট্রুমেন্টেশন টেস্ট না থাকলেও, আপনি অ্যাপে বাগ খুঁজতে পারেন। অ্যাপের ইউজার ইন্টারফেসের অটোমেটিক রিভিউ করতে রোবো টেস্ট ব্যবহার করুন। রোবো টেস্ট অ্যাপের ইউজার ইন্টারফেসের মাধ্যমে বিভিন্ন পাথের স্ট্যাটিক বিশ্লেষণ করে অ্যাপটি পরীক্ষা করে এবং তারপরে ক্র্যাশ এবং অন্যান্য সম্ভাব্য সমস্যাগুলি খুঁজে পেতে অ্যাপটি ক্রল করে।

রোবো টেস্ট রান করতে, নিম্নলিখিত উদাহরণ কমান্ড রান করুন:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s \
  --client-details matrixLabel="Example matrix label"
  • --type ভ্যালু নির্দিষ্ট করা না থাকলে --type robo প্যারামিটারটি অন্তর্নিহিত থাকে।
  • Firebase কনসোলে আপনার টেস্ট ম্যাট্রিক্স শনাক্ত করতে ও খুঁজে পেতে সাহায্য করার জন্য, আপনি ঐচ্ছিক --client-details matrixLabel="Example matrix label" ফ্ল্যাগ ব্যবহার করে আপনার টেস্ট ম্যাট্রিক্স লেবেল করতে পারেন।
  • আপনি gcloud help firebase test android run টাইপ করে টেস্ট চালানোর জন্য কমান্ড লাইন বিকল্পের সম্পূর্ণ সেট দেখতে পাবেন।

কমান্ড লাইনে এইসব আর্গুমেন্ট উল্লেখ করার বিকল্প হিসেবে, আপনি YAML-ফর্ম্যাট করা আর্গুমেন্ট ফাইলে আপনার আর্গুমেন্ট উল্লেখ করতে পারেন। এই ফিচার কীভাবে ব্যবহার করতে হয় তা জানতে gcloud topic arg-files রান করুন।

রোবো টেস্ট থেকে টেস্টের ফলাফল কীভাবে খতিয়ে দেখতে হয় তা জানতে, আপনার টেস্টের ফলাফল বিশ্লেষণ করুন দেখুন।

ইন্সট্রুমেন্টেশন টেস্ট রান করুন

এখন আপনার নির্দিষ্ট করা Android ডিভাইস কনফিগারেশনে Notepad অ্যাপের Espresso টেস্ট রান করতে gcloud কমান্ড লাইন টুল ব্যবহার করুন। app-debug-test-unaligned.apk-এ টেস্ট রান করতে instrumentation টেস্টের ধরন ব্যবহার করুন নিম্নলিখিতভাবে:

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape
  --client-details matrixLabel="Example matrix label"
  • --type ইন্সট্রুমেন্টেশন প্যারামিটারটি অন্তর্নিহিত যদি একটি টেস্ট APK --test-এর সাথে নির্দিষ্ট করা হয়।
  • Firebase কনসোলে আপনার টেস্ট ম্যাট্রিক্স শনাক্ত করতে ও খুঁজে পেতে সাহায্য করার জন্য, আপনি ঐচ্ছিক --client-details matrixLabel="Example matrix label" ফ্ল্যাগ ব্যবহার করে আপনার টেস্ট ম্যাট্রিক্স লেবেল করতে পারেন।
  • gcloud help firebase test android run টাইপ করে আপনি টেস্ট চালানোর জন্য কমান্ড লাইন বিকল্পের সম্পূর্ণ সেট দেখতে পারবেন।

কমান্ড লাইনে এইসব আর্গুমেন্ট উল্লেখ করার বিকল্প হিসেবে, আপনি YAML-ফর্ম্যাট করা আর্গুমেন্ট ফাইলে আপনার আর্গুমেন্ট উল্লেখ করতে পারেন। এই ফিচার কীভাবে ব্যবহার করতে হয় তা জানতে gcloud topic arg-files রান করুন।

gcloud CLI-তে Android Test Orchestrator কাজ করে। Orchestrator-এর জন্য AndroidJUnitRunner v1.1 বা তার পরবর্তী যেকোনও ভার্সন প্রয়োজন। এটি চালু করতে, gcloud firebase test android run-এর সাথে
--use-orchestrator ফ্ল্যাগ ব্যবহার করুন। এটি বন্ধ করতে --no-use-orchestrator ফ্ল্যাগ ব্যবহার করুন।

এছাড়াও, উপরে দেখানো হয়নি এমন অতিরিক্ত ফ্ল্যাগ ব্যবহার করে Test Lab কীভাবে আপনার ইন্সট্রুমেন্টেশন টেস্ট রান করবে তা আপনি নিয়ন্ত্রণ করতে পারবেন। যেমন, আপনার টেস্ট APK-এর মাধ্যমে ব্যবহৃত কোনও ক্লাস বা ক্লাস পদ্ধতি টেস্ট করতে আপনি --test-targets ফ্ল্যাগ ব্যবহার করতে পারেন। এছাড়াও, আপনার যে টেস্টটি ব্যর্থ হয়েছে সেটি আসলে ফ্লেকি ছিল কিনা তা আপনি --num-flaky-test-attempts ফ্ল্যাগ ব্যবহার করে খুঁজে বের করতে পারেন, যা টেস্ট এক্সিকিউশন কতবার আবার চেষ্টা করা উচিত তা নির্দিষ্ট করে, যদি এর এক বা একাধিক টেস্ট কেস কোনও কারণে ব্যর্থ হয়। আরও জানতে, gcloud firebase test android run দেখুন।

ইন্সট্রুমেন্টেশন টেস্টের জন্য কোড কভারেজ রিপোর্ট

Test Lab-এ কোড কভারেজ রিপোর্টিং টুল EMMA এবং JaCoCo কাজ করে। আপনার অ্যাপের বিল্ডে এই দুটি টুলের মধ্যে যেকোনও একটি ইন্টিগ্রেট করা থাকলে, আপনি কিছু অতিরিক্ত আর্গুমেন্ট সহ gcloud firebase test android run রান করে Test Lab টেস্টের জন্য কোড কভারেজ রিপোর্ট পেতে পারেন। Android Test Orchestrator চালু করা না থাকলে, নিম্নলিখিতগুলি ব্যবহার করুন:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \
  --directories-to-pull /sdcard/Download

আপনি যদি Android Test Orchestrator ব্যবহার করার পাশাপাশি কোড কভারেজ রিপোর্ট তৈরি করেন, তাহলে আপনার এনভায়রনমেন্ট ভেরিয়েবল এইভাবে পরিবর্তন করুন:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \
  --directories-to-pull /sdcard/Download

Test Lab আপনার টেস্ট রান করা শেষ করলে, Google Cloud Storage-এ আপনার কোড কভারেজ রিপোর্ট খুঁজুন:

  1. আপনার টার্মিনালে টেস্ট ফলাফলের টেবিলের উপরে gcloud টুল যে Firebase কনসোল লিঙ্ক প্রিন্ট করেছে, সেটি খুলুন।
  2. সেই লিঙ্কে দেখানো তালিকা থেকে কোনও টেস্ট এক্সিকিউশনে ক্লিক করে সেই এক্সিকিউশনের বিবরণ পৃষ্ঠা খুলুন।
  3. পরীক্ষার ফলাফল বিকল্পে ক্লিক করে সেই এক্সিকিউশনের পরীক্ষার ফলাফল সহ Cloud Storage বাকেটে যান।
  4. আপনার কোড কভারেজ রিপোর্ট দেখতে artifacts/coverage.ec খুলুন।

আপনার টেস্টের ফলাফল বিশ্লেষণ করুন

কয়েক মিনিট পরে, আপনার টেস্ট ফলাফলের একটি প্রাথমিক সারসংক্ষেপ gcloud টুলের মাধ্যমে প্রিন্ট করা হয়:

কমান্ড টেস্টের ফলাফল

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

রোবো টেস্টের মাধ্যমে কাস্টম লগ-ইন ও টেক্সট ইনপুট

আপনি --no-auto-google-login প্যারামিটার ব্যবহার না করলে, রোবো টেস্ট অটোমেটিক সাইন-ইন স্ক্রিন সম্পূর্ণ করে যা যাচাইকরণের জন্য Google অ্যাকাউন্ট ব্যবহার করে। আপনার দেওয়া টেস্ট অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে এটি কাস্টম লগ-ইন স্ক্রিনও সম্পূর্ণ করতে পারে। এছাড়াও, আপনার অ্যাপের ব্যবহার করা অন্যান্য টেক্সট ফিল্ডের জন্য কাস্টম ইনপুট টেক্সট প্রদান করতে আপনি এই প্যারামিটার ব্যবহার করতে পারবেন।

আপনার অ্যাপে টেক্সট ফিল্ড সম্পূর্ণ করতে, --robo-directives প্যারামিটার ব্যবহার করুন এবং কমা দিয়ে আলাদা করা key-value জোড়ার তালিকা প্রদান করুন, যেখানে key হল টার্গেট UI এলিমেন্টের Android রিসোর্স নাম এবং value হল টেক্সট স্ট্রিং। এছাড়াও, আপনি এই ফ্ল্যাগ ব্যবহার করে Robo-কে নির্দিষ্ট UI এলিমেন্ট (যেমন, "লগ-আউট" বোতাম) এড়িয়ে যেতে বলতে পারেন। EditText ফিল্ড কাজ করে কিন্তু WebView UI এলিমেন্টে টেক্সট ফিল্ড কাজ করে না।

যেমন, কাস্টম লগ-ইনের জন্য আপনি নিম্নলিখিত প্যারামিটার ব্যবহার করতে পারেন:

--robo-directives username_resource=username,password_resource=password

উপলভ্য কমান্ড ও ফ্ল্যাগ

Test Lab gcloud CLI-তে বিভিন্ন কমান্ড ও ফ্ল্যাগ উপলভ্য আছে যা আপনাকে বিভিন্ন স্পেসিফিকেশন সহ টেস্ট চালাতে দেয়:

  • Android Test Orchestrator ফ্ল্যাগ: Orchestrator চালু করার ফ্ল্যাগ,এটি এমন একটি টুল যা আপনাকে Instrumentation-এর নিজস্ব ইনভোকেশনে আপনার প্রতিটি অ্যাপের টেস্ট রান করার অনুমতি দেয়। Test Lab সবসময় Orchestrator-এর লেটেস্ট ভার্সন রান করে।

  • গেম লুপ টেস্ট ফ্ল্যাগ: কনফিগারেশন ফ্ল্যাগের একটি সেট যা গেম অ্যাপে প্লেয়ারের অ্যাকশন সিমুলেট করার জন্য "ডেমো মোড" চালু এবং নিয়ন্ত্রণ করে। Test Lab-এর সাথে গেম লুপ টেস্ট রান করা সম্পর্কে আরও জানুন।

  • ইউনিফর্ম শার্ডিং ফ্ল্যাগ (বিটাতে): একটি ফ্ল্যাগ যা শার্ডের সংখ্যা নির্দিষ্ট করে যেখানে আপনি সমানভাবে টেস্ট কেস বিতরণ করতে চান। শার্ডগুলি আলাদা ডিভাইসে সমান্তরালভাবে চালানো হয়।

  • ম্যানুয়াল শার্ডিং ফ্ল্যাগ (বিটাতে): একটি ফ্ল্যাগ যা শার্ডে (টেস্ট কেসের একটি গ্রুপ) চালানোর জন্য প্যাকেজ, ক্লাস এবং/অথবা টেস্ট কেসের একটি গ্রুপ নির্দিষ্ট করে। শার্ডগুলি আলাদা ডিভাইসে সমান্তরালভাবে চালানো হয়।

  • নেটওয়ার্ক ট্রাফিক প্রোফাইল ফ্ল্যাগ (বিটাতে): একটি ফ্ল্যাগ যা নির্দিষ্ট করে যে আপনার টেস্ট ফিজিক্যাল ডিভাইসের সাথে কোন নেটওয়ার্ক প্রোফাইল ব্যবহার করে। নেটওয়ার্ক প্রোফাইল বিভিন্ন ধরনের নেটওয়ার্ক পরিস্থিতি অনুকরণ করে, যার ফলে আপনি নিজের অ্যাপের পারফর্ম্যান্স নির্ভরযোগ্য নয় বা অনুমান করা যায় না এমন নেটওয়ার্কে পরীক্ষা করতে পারেন।

Test Lab-এর সাথে gcloud কমান্ড স্ক্রিপ্ট করা

আপনি gcloud কমান্ড লাইন ব্যবহার করে মোবাইল অ্যাপ টেস্টিং কমান্ড অটোমেট করতে শেল স্ক্রিপ্ট বা ব্যাচ ফাইল ব্যবহার করতে পারেন। নিম্নলিখিত উদাহরণ ব্যাশ স্ক্রিপ্ট দুই মিনিটের টাইমআউট সহ একটি ইন্সট্রুমেন্টেশন টেস্ট চালায় এবং টেস্ট রান সফলভাবে সম্পন্ন হলে রিপোর্ট করে:

if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

স্ক্রিপ্ট এক্সিট কোড

Test Lab বেশ কয়েকটি এক্সিট কোড প্রদান করে যা আপনি স্ক্রিপ্ট বা ব্যাচ ফাইল ব্যবহার করে রান করা টেস্টের ফলাফল আরও ভালোভাবে বুঝতে ব্যবহার করতে পারবেন।

Test Lab-এর জন্য স্ক্রিপ্টিং এক্সিট কোড

কোড থেকে বেরিয়ে আসুন নোট
0 সব টেস্ট এক্সিকিউশন পাস করেছে।
1 সাধারণ কোনও সমস্যা হয়েছে। সম্ভাব্য কারণের মধ্যে অন্তর্ভুক্ত হল: ফাইলের নাম যা নেই বা HTTP/নেটওয়ার্কের সমস্যা।
2 অজানা কমান্ড বা আর্গুমেন্ট প্রদান করার কারণে টেস্টিং বন্ধ হয়ে গেছে।
10 টেস্ট এক্সিকিউশনের মধ্যে এক বা একাধিক টেস্ট কেস (টেস্ট করা ক্লাস বা ক্লাস পদ্ধতি) পাস করেনি।
15 অপ্রত্যাশিত সমস্যার কারণে, টেস্ট ম্যাট্রিক্স পাস করেছে নাকি ফেল করেছে তা Firebase Test Lab নির্ধারণ করতে পারেনি।
১৮ এই টেস্ট এক্সিকিউশনের জন্য টেস্ট এনভায়রনমেন্ট কাজ করে না কারণ টেস্ট ডাইমেনশন মানানসই নয়। বেছে নেওয়া Android API লেভেল বেছে নেওয়া ডিভাইসের ধরনের সাথে মানানসই না হলে এই সমস্যা হতে পারে।
19 ব্যবহারকারী টেস্ট ম্যাট্রিক্স বাতিল করেছেন।
20 টেস্ট ইনফ্রাস্ট্রাকচার সংক্রান্ত সমস্যা হয়েছে।