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 কমান্ড ব্যবহার করুন।

বিকল্প হিসেবে, আপনি কমান্ড তৎক্ষণাৎ রান করা শুরু করতে, স্যাম্পেল নোটপ্যাড অ্যাপ ডাউনলোড করতে পারেন। 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 আউটপুট

  • 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 ভার্সনের রেঞ্জ সম্পর্কে এখন আপনি জানেন। Robo বা ইন্সট্রুমেন্টেশন টেস্ট চালানোর জন্য আপনি gcloud firebase test android run কমান্ড ও --device ফ্ল্যাগ ব্যবহার করে ডিভাইস নির্দিষ্ট করতে পারবেন।

রোবো টেস্ট চালানো

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

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 ইন্সট্রুমেন্টেশন প্যারামিটারটি ইমপ্লিসিট হয় যদি --test সহ কোনও টেস্ট APK নির্দিষ্ট করা থাকে।
  • 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 বা তার পরবর্তী যেকোনও ভার্সন প্রয়োজন। এটি চালু করতে,
--use-orchestrator পতাকার সাথে gcloud firebase test android run ব্যবহার করুন। এটি বন্ধ করতে --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 বিশ্লেষণ করা দেখুন।

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

আপনি --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 রান করা সম্পর্কে আরও জানুন।

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

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

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

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

আপনি gcloud কমান্ড লাইন ব্যবহার করে যে মোবাইল অ্যাপ টেস্টিং কমান্ডগুলি অন্যথায় চালাতেন, সেগুলি অটোমেট করতে শেল স্ক্রিপ্ট বা ব্যাচ ফাইল ব্যবহার করতে পারেন। নিচে দেওয়া bash স্ক্রিপ্টের উদাহরণে দু'মিনিটের টাইমআউট সহ একটি ইন্সট্রুমেন্টেশন টেস্ট চালানো হয়েছে এবং টেস্ট রান সফলভাবে সম্পূর্ণ হলে সেই বিষয়ে রিপোর্ট করা হয়েছে:

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 টেস্ট ইনফ্রাস্ট্রাকচারে সমস্যা হয়েছে।