জিক্লাউড সিএলআই দিয়ে পরীক্ষা শুরু করুন

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

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

শুরু করার আগে

যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন

ধাপ ১. gcloud CLI সেট আপ করুন।

  1. গুগল ক্লাউড এসডিকে ডাউনলোড করুন
  2. এর মধ্যে gcloud CLI টুলটিও অন্তর্ভুক্ত।

  3. আপনার ইনস্টলেশনটি হালনাগাদ আছে কিনা তা নিশ্চিত করুন:
    gcloud components update
    
  4. আপনার গুগল অ্যাকাউন্ট ব্যবহার করে 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 : পরীক্ষার জন্য উপলব্ধ অ্যান্ড্রয়েড ডিভাইসগুলির একটি বর্তমান তালিকা পান।

    gcloud firebase test android models list

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

    • MODEL_ID কলামটিতে এমন একটি শনাক্তকারী রয়েছে যা আপনি পরবর্তীতে ডিভাইস মডেলটির উপর পরীক্ষা চালানোর জন্য ব্যবহার করতে পারবেন।
    • OS_VERSION_ID কলামটিতে ডিভাইসটি দ্বারা সমর্থিত অপারেটিং সিস্টেমের সংস্করণগুলো থাকে।

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

    gcloud firebase test android models list output

  • 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 কলামের অধীনে উল্লিখিত ডিফল্ট সংস্করণটি ব্যবহৃত হবে।

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

    gcloud android versions list

  • 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 খুঁজে নিন:

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

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

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

Command test results

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

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 টেস্ট ম্যাট্রিক্সটি পাস করেছে নাকি ফেল করেছে তা নির্ধারণ করতে পারেনি।
১৮ অসামঞ্জস্যপূর্ণ টেস্ট ডাইমেনশনের কারণে এই টেস্ট এক্সিকিউশনের জন্য টেস্ট এনভায়রনমেন্টটি সমর্থিত নয়। নির্বাচিত ডিভাইস টাইপটি যদি নির্বাচিত অ্যান্ড্রয়েড এপিআই লেভেল দ্বারা সমর্থিত না হয়, তবে এই ত্রুটিটি ঘটতে পারে।
১৯ ব্যবহারকারী কর্তৃক টেস্ট ম্যাট্রিক্সটি বাতিল করা হয়েছে।
২০ পরীক্ষা পরিকাঠামোতে একটি ত্রুটি ঘটেছে।