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

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

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

তুমি শুরু করার আগে

যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন

ধাপ 1. 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 প্রকল্পের ID:
    gcloud config set project PROJECT_ID
    

ধাপ 2. উপলব্ধ পরীক্ষা ডিভাইস পরীক্ষা করুন

আপনার পরীক্ষার জন্য উপলব্ধ টেস্ট ডিভাইস এবং লোকেলগুলি দেখতে নিম্নলিখিত 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 output

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

    gcloud firebase test android models describe MODEL_ID
    

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

  • versions list : পরীক্ষা করার জন্য বর্তমানে উপলব্ধ ওএস সংস্করণগুলির একটি তালিকা পান।

    gcloud firebase test android versions list
    

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

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

    gcloud android versions list

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

    gcloud firebase test android versions list
    

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

ধাপ 3. আপনার পরীক্ষা চালান

এখন আপনি আপনার অ্যাপ পরীক্ষা করার জন্য উপলব্ধ ডিভাইস মডেল, লোকেল এবং 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 robo পরামিতি অন্তর্নিহিত যদি কোনো --type মান নির্দিষ্ট করা না থাকে।
  • 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"
  • --type ইন্সট্রুমেন্টেশন প্যারামিটার অন্তর্নিহিত যদি একটি পরীক্ষা APK --test এর সাথে নির্দিষ্ট করা হয়।
  • Firebase কনসোলে আপনার পরীক্ষার ম্যাট্রিক্স সনাক্ত করতে এবং সনাক্ত করতে সাহায্য করার জন্য, আপনি ঐচ্ছিক --client-details matrixLabel="Example matrix label" পতাকাটি আপনার পরীক্ষার ম্যাট্রিক্স লেবেল করতে ব্যবহার করতে পারেন।
  • আপনি gcloud help firebase test android run টাইপ করে পরীক্ষা চালানোর জন্য কমান্ড লাইন বিকল্পগুলির সম্পূর্ণ সেট দেখতে পারেন।

কমান্ড লাইনে এই আর্গুমেন্টগুলি নির্দিষ্ট করার বিকল্প হিসাবে, আপনি একটি YAML- ফরম্যাটেড আর্গুমেন্ট ফাইলে ঐচ্ছিকভাবে আপনার আর্গুমেন্টগুলি নির্দিষ্ট করতে পারেন৷ এই বৈশিষ্ট্যটি কীভাবে ব্যবহার করবেন তা শিখতে gcloud topic arg-files চালান।

জিক্লাউড সিএলআই অ্যান্ড্রয়েড টেস্ট অর্কেস্ট্রেটর সমর্থন করে। অর্কেস্ট্রেটরের জন্য AndroidJUnitRunner v1.1 বা উচ্চতর প্রয়োজন। এটি সক্ষম করতে, ব্যবহার করুন gcloud firebase test android run
--use-orchestrator পতাকা। এটি নিষ্ক্রিয় করতে --no-use-orchestrator পতাকা ব্যবহার করুন।

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

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

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

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

যখন টেস্ট ল্যাব আপনার পরীক্ষাগুলি চালানো শেষ করে, তখন Google ক্লাউড স্টোরেজে আপনার কোড কভারেজ রিপোর্টগুলি খুঁজুন:

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

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

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

Command test results

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

রোবো পরীক্ষার সাথে কাস্টম লগইন এবং টেক্সট ইনপুট

রোবো পরীক্ষা স্বয়ংক্রিয়ভাবে সাইন-ইন স্ক্রীন সম্পূর্ণ করে যা প্রমাণীকরণের জন্য একটি Google অ্যাকাউন্ট ব্যবহার করে, যদি না আপনি --no-auto-google-login প্যারামিটার ব্যবহার করেন। এটি আপনার প্রদান করা টেস্ট অ্যাকাউন্ট শংসাপত্রগুলি ব্যবহার করে কাস্টম লগইন স্ক্রিনগুলিও সম্পূর্ণ করতে পারে৷ আপনি আপনার অ্যাপ দ্বারা ব্যবহৃত অন্যান্য পাঠ্য ক্ষেত্রের জন্য কাস্টম ইনপুট পাঠ্য প্রদান করতে এই প্যারামিটারটি ব্যবহার করতে পারেন।

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

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

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

উপলব্ধ কমান্ড এবং পতাকা

টেস্ট ল্যাব জিক্লাউড সিএলআই-তে বেশ কয়েকটি কমান্ড এবং পতাকা উপলব্ধ রয়েছে যা আপনাকে বিভিন্ন নির্দিষ্টকরণের সাথে পরীক্ষা চালাতে দেয়:

  • অ্যান্ড্রয়েড টেস্ট অর্কেস্ট্রেটর পতাকা : অর্কেস্ট্রেটরকে সক্ষম করার জন্য একটি পতাকা, একটি টুল যা আপনাকে আপনার অ্যাপের প্রতিটি পরীক্ষাকে তার নিজস্ব Instrumentation চালানোর অনুমতি দেয়৷ টেস্ট ল্যাব সর্বদা অর্কেস্ট্রেটরের সর্বশেষ সংস্করণ চালায়।

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

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

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

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

টেস্ট ল্যাবের সাথে 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

স্ক্রিপ্ট প্রস্থান কোড

টেস্ট ল্যাব বেশ কিছু এক্সিট কোড সরবরাহ করে যা আপনি স্ক্রিপ্ট বা ব্যাচ ফাইল ব্যবহার করে চালানো পরীক্ষার ফলাফলগুলি আরও ভালভাবে বুঝতে ব্যবহার করতে পারেন।

টেস্ট ল্যাবের জন্য স্ক্রিপ্টিং প্রস্থান কোড

প্রস্থান কোড মন্তব্য
0 সমস্ত পরীক্ষা মৃত্যুদন্ড পাস.
1 একটি সাধারণ ব্যর্থতা ঘটেছে. সম্ভাব্য কারণগুলির মধ্যে রয়েছে: একটি ফাইলের নাম যা বিদ্যমান নেই বা একটি HTTP/নেটওয়ার্ক ত্রুটি৷
2 অজানা কমান্ড বা আর্গুমেন্ট প্রদান করা হয়েছে বলে পরীক্ষা প্রস্থান করা হয়েছে।
10 একটি পরীক্ষা সম্পাদনের মধ্যে এক বা একাধিক পরীক্ষার ক্ষেত্রে (পরীক্ষিত ক্লাস বা ক্লাস পদ্ধতি) পাস হয়নি।
15 ফায়ারবেস টেস্ট ল্যাব একটি অপ্রত্যাশিত ত্রুটির কারণে পরীক্ষা ম্যাট্রিক্স পাস বা ব্যর্থ হয়েছে কিনা তা নির্ধারণ করতে পারেনি।
18 বেমানান পরীক্ষার মাত্রার কারণে এই পরীক্ষা সম্পাদনের জন্য পরীক্ষার পরিবেশ সমর্থিত নয়। নির্বাচিত Android API স্তর নির্বাচিত ডিভাইস প্রকার দ্বারা সমর্থিত না হলে এই ত্রুটি ঘটতে পারে৷
19 পরীক্ষা ম্যাট্রিক্স ব্যবহারকারী দ্বারা বাতিল করা হয়েছে.
20 একটি পরীক্ষা পরিকাঠামো ত্রুটি ঘটেছে.