এই নির্দেশিকায় gcloud CLI ব্যবহার করে কীভাবে ইন্সট্রুমেন্টেশন, রোবো বা গেম লুপ টেস্ট চালাতে হয় তা বর্ণনা করা হয়েছে।
Test Lab আপনার অ্যান্ড্রয়েড অ্যাপের সাথে ব্যবহারযোগ্য gcloud কমান্ডগুলোর সম্পূর্ণ তালিকার জন্য, gcloud firebase test android এর রেফারেন্স ডকুমেন্টেশন দেখুন।
শুরু করার আগে
যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন ।
ধাপ ১. gcloud CLI সেট আপ করুন।
- গুগল ক্লাউড এসডিকে ডাউনলোড করুন
- আপনার ইনস্টলেশনটি হালনাগাদ আছে কিনা তা নিশ্চিত করুন:
gcloud components update
- আপনার গুগল অ্যাকাউন্ট ব্যবহার করে gcloud CLI-তে সাইন ইন করুন:
gcloud auth login
- gcloud-এ আপনার Firebase প্রজেক্টটি সেট করুন, যেখানে PROJECT_ID হলো আপনার Firebase প্রজেক্টের আইডি:
gcloud config set project PROJECT_ID
এর মধ্যে gcloud CLI টুলটিও অন্তর্ভুক্ত।
ধাপ ২. উপলব্ধ পরীক্ষার ডিভাইসগুলি যাচাই করুন।
আপনার পরীক্ষার জন্য উপলব্ধ টেস্ট ডিভাইস এবং লোকেলগুলো দেখতে নিম্নলিখিত gcloud কমান্ডগুলো ব্যবহার করুন।
বিকল্প হিসেবে, আপনি নমুনা নোটপ্যাড অ্যাপটি ডাউনলোড করে সাথে সাথেই কমান্ডগুলো চালানো শুরু করতে পারেন। এর জন্য app-debug-unaligned.apk বাইনারি ফাইল এবং app-debug-test-unaligned.apk ইন্সট্রুমেন্টেশন টেস্ট ফাইলটি ব্যবহার করুন, যেগুলো NotePad/app/build/outputs/apk/ ফোল্ডারে অবস্থিত।
models list: পরীক্ষার জন্য উপলব্ধ অ্যান্ড্রয়েড ডিভাইসগুলির একটি বর্তমান তালিকা পান।gcloud firebase test android models listকমান্ড আউটপুটে:
-
MODEL_IDকলামটিতে এমন একটি শনাক্তকারী রয়েছে যা আপনি পরবর্তীতে ডিভাইস মডেলটির উপর পরীক্ষা চালানোর জন্য ব্যবহার করতে পারবেন। -
OS_VERSION_IDকলামটিতে ডিভাইসটি দ্বারা সমর্থিত অপারেটিং সিস্টেমের সংস্করণগুলো থাকে।
উদাহরণ আউটপুট

-
models describe: একটি নির্দিষ্ট অ্যান্ড্রয়েডMODEL_IDসম্পর্কে আরও তথ্য জানুন।gcloud firebase test android models describe MODEL_IDআউটপুটে ডিভাইস মডেলের ব্র্যান্ড, প্রস্তুতকারক, ওএস সংস্করণ, সমর্থিত এপিআই লেভেল, সমর্থিত অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (এবিআই), প্রকাশের তারিখ এবং ডিভাইসটি ভৌত নাকি ভার্চুয়াল, সেই তথ্যগুলো থাকে।
versions list: পরীক্ষার জন্য বর্তমানে উপলব্ধ OS সংস্করণগুলির একটি তালিকা পান।gcloud firebase test android versions listপরবর্তীতে কোনো অ্যান্ড্রয়েড ওএস সংস্করণের বিপরীতে পরীক্ষা চালানোর জন্য, আপনি কমান্ড আউটপুটের প্রথম দুটি কলামের (
OS_VERSION_IDএবংVERSION) যেকোনো একটি আইডেন্টিফায়ার ব্যবহার করতে পারেন। আপনি যদি পরীক্ষার জন্য অ্যান্ড্রয়েড ওএস সংস্করণগুলো নির্দিষ্ট না করেন, তাহলেTAGSকলামের অধীনে উল্লিখিত ডিফল্ট সংস্করণটি ব্যবহৃত হবে।উদাহরণ আউটপুট

locales list: পরীক্ষার জন্য উপলব্ধ লোকেলগুলির বর্তমান তালিকা পান।gcloud firebase test android locales listকমান্ড আউটপুটের প্রথম কলাম,
LOCALE, একটি আইডেন্টিফায়ার ধারণ করে যা আপনি পরবর্তীতে কোনো লোকালের বিপরীতে পরীক্ষা চালানোর জন্য ব্যবহার করতে পারেন। আপনি যদি পরীক্ষার জন্য লোকালগুলো নির্দিষ্ট না করেন, তাহলে ডিফল্ট লোকাল হিসেবে ইংরেজি ব্যবহৃত হয়।
ধাপ ৩. আপনার পরীক্ষাটি চালান।
এখন যেহেতু আপনি আপনার অ্যাপ পরীক্ষা করার জন্য উপলব্ধ বিভিন্ন ডিভাইস মডেল, লোকেল এবং ওএস সংস্করণ সম্পর্কে জানেন, তাই রোবো বা ইন্সট্রুমেন্টেশন টেস্ট চালানোর জন্য আপনি ` gcloud firebase test android run কমান্ড এবং --device ফ্ল্যাগ ব্যবহার করে ডিভাইস নির্দিষ্ট করতে পারেন।
একটি রোবো পরীক্ষা চালান
আপনার কোনো ইন্সট্রুমেন্টেশন টেস্ট না থাকলেও, আপনি আপনার অ্যাপে বাগ খুঁজে বের করতে পারেন। আপনার অ্যাপের ইউজার ইন্টারফেসের একটি স্বয়ংক্রিয় পর্যালোচনার জন্য রোবো টেস্ট ব্যবহার করুন। রোবো টেস্ট অ্যাপের ইউজার ইন্টারফেসের বিভিন্ন পথের একটি স্ট্যাটিক বিশ্লেষণ করে অ্যাপটিকে পরীক্ষা করে, এবং তারপর ক্র্যাশ ও অন্যান্য সম্ভাব্য সমস্যা খুঁজে বের করার জন্য পুরো অ্যাপটি ক্রল করে।
রোবো টেস্ট চালানোর জন্য, নিচের উদাহরণ কমান্ডটি চালান:
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 চালান।
রোবো পরীক্ষার ফলাফল কীভাবে খতিয়ে দেখতে হয় তা জানতে, ‘আপনার পরীক্ষার ফলাফল বিশ্লেষণ করুন ’ দেখুন।
একটি ইন্সট্রুমেন্টেশন পরীক্ষা চালান
এখন আপনার নির্দিষ্ট অ্যান্ড্রয়েড ডিভাইস কনফিগারেশনে নোটপ্যাড অ্যাপের এসপ্রেসো টেস্টগুলো চালানোর জন্য 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"
- যদি
--testদিয়ে একটি টেস্ট APK নির্দিষ্ট করা হয়, তাহলে--typeইন্সট্রুমেন্টেশন প্যারামিটারটি অন্তর্নিহিত থাকে। - 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
আপনি যদি কোড কভারেজ রিপোর্ট তৈরি করার পাশাপাশি অ্যান্ড্রয়েড টেস্ট অর্কেস্ট্রেটরও ব্যবহার করেন, তাহলে আপনার এনভায়রনমেন্ট ভেরিয়েবলগুলো নিম্নরূপভাবে পরিবর্তন করুন:
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 খুঁজে নিন:
- আপনার টার্মিনালে পরীক্ষার ফলাফল টেবিলের উপরে
gcloudটুলটি দ্বারা প্রিন্ট করা Firebase কনসোল লিঙ্কটি খুলুন। - সেই লিঙ্কের তালিকা থেকে একটি টেস্ট এক্সিকিউশনে ক্লিক করলে সেটির বিস্তারিত পৃষ্ঠাটি খুলবে।
- সেই এক্সিকিউশনের পরীক্ষার ফলাফলসহ Cloud Storage বাকেটে যেতে 'টেস্ট রেজাল্টস'-এ ক্লিক করুন।
- আপনার কোড কভারেজ রিপোর্ট দেখতে
artifacts/coverage.ecখুলুন।
আপনার পরীক্ষার ফলাফল বিশ্লেষণ করুন
কয়েক মিনিট পর, gcloud টুলটি আপনার পরীক্ষার ফলাফলের একটি প্রাথমিক সারসংক্ষেপ প্রিন্ট করে:

আপনার কমান্ড লাইন টেস্ট রানের আউটপুটে পরীক্ষার ফলাফল দেখার জন্য একটি লিঙ্কও অন্তর্ভুক্ত থাকে। এই ফলাফলগুলি কীভাবে ব্যাখ্যা করতে হয় সে সম্পর্কে আরও জানতে, "অ্যান্ড্রয়েডের জন্য Firebase Test Lab ফলাফল বিশ্লেষণ" দেখুন।
রোবো টেস্টের মাধ্যমে কাস্টম লগইন এবং টেক্সট ইনপুট
রোবো টেস্ট স্বয়ংক্রিয়ভাবে সেইসব সাইন-ইন স্ক্রিন সম্পন্ন করে যেগুলো প্রমাণীকরণের জন্য গুগল অ্যাকাউন্ট ব্যবহার করে, যদি না আপনি --no-auto-google-login প্যারামিটারটি ব্যবহার করেন। এটি আপনার দেওয়া টেস্ট অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে কাস্টম লগইন স্ক্রিনও সম্পন্ন করতে পারে। আপনার অ্যাপে ব্যবহৃত অন্যান্য টেক্সট ফিল্ডের জন্য কাস্টম ইনপুট টেক্সট দেওয়ার জন্যও আপনি এই প্যারামিটারটি ব্যবহার করতে পারেন।
আপনার অ্যাপের টেক্সট ফিল্ডগুলি সম্পূর্ণ করতে, --robo-directives প্যারামিটারটি ব্যবহার করুন এবং কমা দ্বারা পৃথক করা key-value পেয়ারের একটি তালিকা প্রদান করুন, যেখানে key হবে টার্গেট UI এলিমেন্টের অ্যান্ড্রয়েড রিসোর্স নেম এবং value হবে টেক্সট স্ট্রিং। আপনি এই ফ্ল্যাগটি ব্যবহার করে রোবোকে নির্দিষ্ট UI এলিমেন্ট (যেমন, "লগআউট" বাটন) উপেক্ষা করতেও বলতে পারেন। EditText ফিল্ডগুলি সমর্থিত, কিন্তু WebView UI এলিমেন্টের টেক্সট ফিল্ডগুলি সমর্থিত নয়।
উদাহরণস্বরূপ, কাস্টম লগইনের জন্য আপনি নিম্নলিখিত প্যারামিটারটি ব্যবহার করতে পারেন:
--robo-directives username_resource=username,password_resource=password
উপলব্ধ কমান্ড এবং ফ্ল্যাগ
Test Lab gcloud CLI-তে বেশ কিছু কমান্ড এবং ফ্ল্যাগ রয়েছে যা আপনাকে বিভিন্ন স্পেসিফিকেশন অনুযায়ী টেস্ট চালাতে দেয়:
অ্যান্ড্রয়েড টেস্ট অর্কেস্ট্রেটর ফ্ল্যাগ : অর্কেস্ট্রেটর সক্রিয় করার জন্য একটি ফ্ল্যাগ। এটি এমন একটি টুল যা আপনাকে আপনার অ্যাপের প্রতিটি টেস্টকে
Instrumentationনিজস্ব আবাহনে চালানোর সুযোগ দেয়। Test Lab সর্বদা অর্কেস্ট্রেটরের সর্বশেষ সংস্করণটি চালায়।গেম লুপ টেস্ট ফ্ল্যাগ : একগুচ্ছ কনফিগারেশন ফ্ল্যাগ যা গেম অ্যাপে প্লেয়ারের কার্যকলাপ অনুকরণ করার জন্য একটি 'ডেমো মোড' চালু ও নিয়ন্ত্রণ করে। 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 জন্য এক্সিট কোড স্ক্রিপ্টিং
| প্রস্থান কোড | নোট |
|---|---|
| ০ | সকল পরীক্ষা সফলভাবে সম্পন্ন হয়েছে। |
| ১ | একটি সাধারণ ব্যর্থতা ঘটেছে। সম্ভাব্য কারণগুলোর মধ্যে রয়েছে: ফাইলের নামটির অস্তিত্ব না থাকা অথবা HTTP/নেটওয়ার্ক ত্রুটি। |
| ২ | অজানা কমান্ড বা আর্গুমেন্ট প্রদান করার কারণে টেস্টিং বন্ধ হয়ে গেছে। |
| ১০ | একটি টেস্ট এক্সিকিউশনের মধ্যে থাকা এক বা একাধিক টেস্ট কেস (পরীক্ষিত ক্লাস বা ক্লাস মেথড) পাস করেনি। |
| ১৫ | একটি অপ্রত্যাশিত ত্রুটির কারণে, Firebase Test Lab টেস্ট ম্যাট্রিক্সটি পাস করেছে নাকি ফেল করেছে তা নির্ধারণ করতে পারেনি। |
| ১৮ | অসামঞ্জস্যপূর্ণ টেস্ট ডাইমেনশনের কারণে এই টেস্ট এক্সিকিউশনের জন্য টেস্ট এনভায়রনমেন্টটি সমর্থিত নয়। নির্বাচিত ডিভাইস টাইপটি যদি নির্বাচিত অ্যান্ড্রয়েড এপিআই লেভেল দ্বারা সমর্থিত না হয়, তবে এই ত্রুটিটি ঘটতে পারে। |
| ১৯ | ব্যবহারকারী কর্তৃক টেস্ট ম্যাট্রিক্সটি বাতিল করা হয়েছে। |
| ২০ | পরীক্ষা পরিকাঠামোতে একটি ত্রুটি ঘটেছে। |