এই নির্দেশিকায় কীভাবে Firebase Test Lab ব্যবহার করে ইন্সট্রুমেন্টেশন টেস্ট প্রস্তুত ও রান করতে হয় তা বর্ণনা করা হয়েছে। এই নির্দেশিকা ব্যবহার করতে, আপনার একটি ইনস্ট্রুমেন্টেশন টেস্ট (আপনার বা আপনার টিমের লেখা) প্রয়োজন যা Espresso বা UI Automator Android টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে। ফিজিক্যাল ডিভাইসে ইন্সট্রুমেন্টেশন টেস্ট সর্বাধিক ৪৫ মিনিট এবং ভার্চুয়াল ডিভাইসে সর্বাধিক ৬০ মিনিট চলতে পারে।
পরবর্তী ধাপে, আপনি Firebase-এ আপনার অ্যাপের APK এবং আপনার পরীক্ষার APK আপলোড করবেন।
(ঐচ্ছিক) আপনার অ্যাপে স্ক্রিনশট লাইব্রেরি যোগ করুন
Firebase Test Lab-এ একটি লাইব্রেরি (testlab-instr-lib) অন্তর্ভুক্ত থাকে যা আপনি
AndroidX-এর
ScreenCapture
ব্যবহার করে নেওয়া যেকোনও স্ক্রিনশট প্রসেস করতে
ইনস্ট্রুমেন্টেশন টেস্ট চালানোর সময় ব্যবহার করতে পারেন, যেমন
Espresso টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে লেখা টেস্ট।
এই বিভাগে AndroidX
লাইব্রেরির সাহায্যে কীভাবে ScreenCapture অবজেক্ট তৈরি করতে হয় এবং testlab-instr-lib ব্যবহার করে কীভাবে সেগুলি প্রসেস করতে হয় তা বর্ণনা করা হয়েছে।
ইনস্ট্রুমেন্টেশন টেস্ট রান করার পরে, আপনি Firebase কনসোলে ক্যাপচার করা স্ক্রিনশট দেখতে পাবেন।
একটি নমুনা অ্যাপ ব্যবহার করে দেখুন
এই কার্যকারিতা ব্যবহার করে দেখতে, NotePad স্যাম্পেল অ্যাপ ডাউনলোড করুন। NotePad প্রোজেক্টে স্ক্রিনশট নেওয়ার সুবিধা আগে থেকেই অন্তর্ভুক্ত করা আছে।
ধাপ ১. আপনার প্রোজেক্টে স্ক্রিনশট লাইব্রেরি যোগ করা
আপনার টেস্ট প্রোজেক্টের রুট-লেভেল সেটিংস Gradle ফাইলে (
settings.gradle.ktsবাsettings.gradle), প্রতিটিrepositoriesবিভাগে Google-এর Maven রিপোজিটরি যোগ করুন:pluginManagement { repositories { // Add the following line: google() // Google's Maven repository mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { // Add the following line: google() // Google's Maven repository mavenCentral() } } // ...
আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে (সাধারণত
<project>/<app-module>/build.gradle.ktsবা<project>/<app-module>/build.gradle), Test Lab স্ক্রিনশট লাইব্রেরির জন্য একটি ডিপেন্ডেন্সি যোগ করুন।dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2") // ...
আপনার পরীক্ষার
AndroidManifest.xmlফাইলে,<instrumentation>এলিমেন্টের মধ্যে থাকা মেটা-ডেটা ট্যাগেFirebaseScreenCaptureProcessorরেজিস্টার করুন। এছাড়াও, আপনি AndroidJUnitRunner-এ আর্গুমেন্ট হিসেবে প্রসেসর নির্দিষ্ট করতে পারেন (কীভাবে করবেন সেই বিষয়ে নির্দেশাবলীর জন্য AndroidJUnitRunner রেফারেন্স ডকুমেন্টেশন দেখুন)।<instrumentation // Check that you have the following line (if not, add it): android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner android:targetPackage="com.your.package.name"> // Add the following: <meta-data android:name="screenCaptureProcessors" android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" /> </instrumentation> ...আপনার অ্যাপের
AndroidManifest.xmlফাইলে,<manifest>এলিমেন্টের মধ্যে নিম্নলিখিত লাইনগুলি যোগ করুন:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>আপনার
AndroidManifest.xmlফাইলে,<manifest>ট্যাগের মধ্যে নিম্নলিখিত লাইন যোগ করে আপনার অ্যাপের জন্য সিস্টেমের অনুমতি নির্দিষ্ট করুন। আপনি যদি Android 10 (API লেভেল 29) বা তার পরবর্তী যেকোনও ভার্সনে টেস্ট করেন, তাহলেWRITE_EXTERNAL_STORAGEঅনুমতি বাদ দিন (ডিভাইসে স্ক্রিনশট পড়তে ও লিখতে আপনার অ্যাপের এই অনুমতি প্রয়োজন নেই)।<manifest ... > <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
ধাপ ২. পরীক্ষা চলাকালীন স্ক্রিনশট নেওয়া
পরীক্ষার যেকোনও পর্যায়ে স্ক্রিনশট নিতে চাইলে, AndroidX লাইব্রেরি থেকে
Screenshot.capture() মেথড কল করুন। এর ফলে একটি
ScreenCapture অবজেক্ট তৈরি হয়।
আপনি ScreenCapture অবজেক্টে process()-কে কল করলে, এটি আপনার AndroidManifest.xml-এ রেজিস্টার করা
ScreenCaptureProcessor
ব্যবহার করে প্রসেস করা হয়। মনে রাখবেন, কোনও প্রসেসর রেজিস্টার করা না থাকলে
BasicScreenCaptureProcessor ব্যবহার করা হয়।
আপনি যেহেতু FirebaseScreenCaptureProcessor রেজিস্টার করেছেন, তাই আপনার স্ক্রিনশট FirebaseScreenCaptureProcessor-এর মাধ্যমে প্রসেস করা হবে এবং Firebase Test Lab-এর মাধ্যমে পরীক্ষা চালানোর সময় আপনার ফলাফল সহ স্ক্রিনশট উপলভ্য হবে।
ScreenCapture তৈরি করার জন্য ব্যবহারের উদাহরণ:
API Build.VERSION_CODES.JELLY_BEAN_MR2 এবং এর উপরে সম্পূর্ণ ScreenCapture নিন:
Screenshot.capture()যেকোনও API লেভেলে অ্যাক্টিভিটির
ScreenCaptureনিন। মনে রাখবেন, Build.VERSION_CODES.JELLY_BEAN_MR2-এর নিচের ভার্সনের ডিভাইসের জন্য এটিই একমাত্র বিকল্প।@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
ScreenCapture প্রসেস করার ক্ষেত্রে ব্যবহারের উদাহরণ
FirebaseScreenCaptureProcessor-এর মাধ্যমেScreenCaptureপ্রসেস করুন:Screenshot.capture().process();নির্দিষ্ট
ScreenCaptureProcessor-এর মাধ্যমেScreenCaptureপ্রসেস করা (এটি আপনাকে প্রসেসর রেজিস্টার করা এড়িয়ে যেতে দেয়):Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);ScreenCapture-এর নাম ও ফর্ম্যাট সেট করুন এবং রেজিস্টার করা প্রসেসর ব্যবহার করে এটি প্রসেস করুন:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
ধাপ ৩. আপনার পরীক্ষা তৈরি ও চালানো
আপনার অ্যাপ তৈরি করুন এবং APK পরীক্ষা করুন (নির্দেশাবলীর জন্য আপনার অ্যাপ পরীক্ষা করুন লিঙ্কে দেখুন)।
Firebase কনসোলে, DevOps ও এনগেজমেন্ট > টেস্ট ল্যাব বিকল্পে যান, তারপর APK ফাইল আপলোড করুন।
সবশেষে, আপনার পরীক্ষা চালান।
ধাপ ৪. আপনার পরীক্ষার স্ক্রিনশট দেখা
আপনার পরীক্ষা সম্পূর্ণ হয়ে যাওয়ার পরে, নেওয়া যেকোনও স্ক্রিনশট দেখতে পাবেন:
Firebase কনসোলে, DevOps ও এনগেজমেন্ট > Test Lab বিকল্পে যান।
টেস্ট ট্যাবে, আপনার সম্পূর্ণ করা টেস্ট বেছে নিন, তারপর ফলাফল ট্যাবে ক্লিক করুন।
আপনার টেস্ট আবার বেছে নিন, তারপর স্ক্রিনশট ট্যাবে ক্লিক করুন।
(ঐচ্ছিক) অতিরিক্ত টেস্ট ফিচার চালু করা
আপনি Test Lab-এর সাথে চালানোর আগে আপনার পরীক্ষায় নিম্নলিখিত ফিচার চালু করতে পারবেন:
Orchestrator চালু করা
Android Test Orchestrator হল এমন একটি টুল যা আপনার অ্যাপের প্রতিটি ইন্সট্রুমেন্টেশন টেস্ট আলাদাভাবে রান করে। Test Lab সবসময় Orchestrator-এর লেটেস্ট ভার্সন ব্যবহার করে।
Test Lab-এর জন্য Orchestrator চালু করতে, ইনস্ট্রুমেন্টেশন টেস্ট সেট-আপে, অতিরিক্ত বিকল্প > Orchestrator-এর সাথে রান করুন বিকল্পে ক্লিক করুন।
আপনি Orchestrator ব্যবহার করলে, নিম্নলিখিত সুবিধাগুলি পাবেন:
- কোনও শেয়ার করা স্টেট নেই। প্রতিটি টেস্ট নিজস্ব ইনস্ট্রুমেন্টেশন ইনস্ট্যান্সে রান করে, তাই টেস্ট জুড়ে কোনও শেয়ার করা স্টেট জমা হয় না।
- আলাদা আলাদা ক্র্যাশ। কোনও টেস্ট ক্র্যাশ করলে, শুধুমাত্র সেই ইনস্ট্রুমেন্টেশন বন্ধ হয়ে যায় এবং আপনার স্যুটের অন্যান্য টেস্ট এখনও রান করতে পারে।
মনে রাখবেন, Orchestrator ব্যবহার করার সময়, প্রতিটি টেস্ট নিজস্ব ইনস্ট্রুমেন্টেশন ইনস্ট্যান্স রান করে, এর অর্থ হল প্রতিটি টেস্ট কেসের পরে অ্যাপ প্রসেস আবার চালু করা হয়। এর ফলে রান টাইম বেড়ে গেলে আপনার কোটা ব্যবহার বা বিল করা সময় প্রভাবিত হতে পারে এবং এর ফলে আপনার ডিভাইসের টাইম-আউট সীমা অতিক্রম করতে পারেন। আপনি অ্যাপের স্টার্ট-আপ টাইম কমালে, এই ওভারহেড কমে যাবে।
Orchestrator-এর জন্য অতিরিক্ত বিকল্প সেট করতে, সেগুলি
environmentVariables ফিল্ডের মাধ্যমে নির্দিষ্ট করুন। যেমন, clearPackageData ব্যবহার করতে, gcloud-এ এই
বিকল্প ব্যবহার করুন:
--environment-variables clearPackageData=true
শার্ডিং চালু করা
টেস্ট শার্ডিং, টেস্টের একটি সেটকে সাব-গ্রুপে (শার্ড) ভাগ করে যা আলাদাভাবে আইসোলেশনে চলে। Test Lab একাধিক ডিভাইস ব্যবহার করে প্রতিটি শার্ডকে প্যারালালভাবে অটোমেটিক রান করে এবং কম সময়ে পরীক্ষার সম্পূর্ণ সেটটি সম্পূর্ণ করে।
যেমন, আপনি যদি Nটি শার্ড তৈরি করেন, তাহলে আপনার বেছে নেওয়া প্রতিটি ডিভাইসের জন্য, Test Lab Nটি একই ধরনের ডিভাইস স্পিন-আপ করে এবং প্রতিটি ডিভাইসে পরীক্ষার একটি সাবসেট রান করে। এর অর্থ হল যে ডিভাইসে একাধিকবার টেস্ট এক্সিকিউশন করার জন্য শার্ড করা টেস্ট কেস ব্যবহার করা যেতে পারে। তবে, নন-শার্ডেড টেস্ট কেসের ফলে প্রতিটি ডিভাইসে একটি করে টেস্ট এক্সিকিউশন হয়। Test Lab ধারণা সম্পর্কে জানতে, মূল ধারণা দেখুন।
Firebase কনসোলে টেস্ট শার্ডিং চালু করতে, এইসব ধাপ অনুসরণ করুন:
ইনস্ট্রুমেন্টেশন টেস্ট সেট-আপে, অতিরিক্ত বিকল্প বিকল্পে ক্লিক করুন।
শার্ডিং বিভাগে, আপনি যতগুলি শার্ড রান করাতে চান সেই সংখ্যাটি লিখুন।
টেস্ট শার্ডের জন্য বিলিং
Test Lab AndroidJUnitRunner-এর বিল্ট-ইন শার্ডিং মেকানিজম ব্যবহার করে আপনার শার্ড প্রয়োগ করে। খালি শার্ড (অ্যাসাইন করা টেস্ট কেস নেই) স্পিন-আপ করার জন্য চার্জ এড়াতে, আপনার তৈরি করা শার্ডের সংখ্যা টেস্ট কেসের মোট সংখ্যার চেয়ে কম হতে হবে। প্রতিটি টেস্ট কেস রান করতে কতক্ষণ সময় লাগে তার উপর নির্ভর করে, সাধারণত প্রতি শার্ডে ২-১০টি টেস্ট কেস অ্যাসাইন করা ভালো।
বিলিং সম্পর্কে আরও তথ্য পেতে, ব্যবহার, কোটা ও বিলিং নিবন্ধটি পড়ুন।