এই নির্দেশিকায় Firebase Test Lab ব্যবহার করে কীভাবে একটি ইন্সট্রুমেন্টেশন টেস্ট প্রস্তুত ও পরিচালনা করতে হয়, তা বর্ণনা করা হয়েছে। এই নির্দেশিকাটি ব্যবহার করার জন্য, আপনার এমন একটি ইন্সট্রুমেন্টেশন টেস্টের প্রয়োজন হবে (যা আপনি বা আপনার দল লিখেছেন) এবং যেটি এসপ্রেসো বা ইউআই অটোমেটর অ্যান্ড্রয়েড টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে। ইন্সট্রুমেন্টেশন টেস্ট ফিজিক্যাল ডিভাইসে ৪৫ মিনিট পর্যন্ত এবং ভার্চুয়াল ডিভাইসে ৬০ মিনিট পর্যন্ত চলতে পারে।
পরবর্তী ধাপগুলোতে, আপনি আপনার অ্যাপের APK এবং আপনার টেস্টের APK ফায়ারবেসে আপলোড করবেন।
(ঐচ্ছিক) আপনার অ্যাপে স্ক্রিনশট লাইব্রেরি যোগ করুন।
Firebase Test Lab একটি লাইব্রেরি (testlab-instr-lib) অন্তর্ভুক্ত রয়েছে, যা আপনি ইন্সট্রুমেন্টেশন টেস্ট চালানোর সময় (যেমন এসপ্রেসো টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে লেখা টেস্ট) AndroidX-এর ScreenCapture দিয়ে নেওয়া যেকোনো স্ক্রিনশট প্রসেস করতে ব্যবহার করতে পারেন। এই বিভাগে বর্ণনা করা হয়েছে কীভাবে AndroidX লাইব্রেরি দিয়ে ScreenCapture অবজেক্ট তৈরি করতে হয় এবং testlab-instr-lib ব্যবহার করে কীভাবে সেগুলি প্রসেস করতে হয়।
আপনার ইন্সট্রুমেন্টেশন টেস্টটি সম্পন্ন হওয়ার পর, আপনি Firebase কনসোলে ক্যাপচার করা স্ক্রিনশটগুলো দেখতে পারবেন।
একটি নমুনা অ্যাপ ব্যবহার করে দেখুন
এই কার্যকারিতাটি পরখ করে দেখার জন্য নোটপ্যাড স্যাম্পল অ্যাপটি ডাউনলোড করুন। স্ক্রিনশট নেওয়ার সুবিধাটি নোটপ্যাড প্রজেক্টটিতে আগে থেকেই অন্তর্ভুক্ত করা আছে।
ধাপ ১. আপনার প্রজেক্টে স্ক্রিনশট লাইব্রেরিটি যুক্ত করুন।
আপনার টেস্ট প্রজেক্টের রুট-লেভেলের সেটিংস গ্রেডল ফাইলে (
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() } } // ...
আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত
<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 এবং তার উপরের সংস্করণে একটি সম্পূর্ণ স্ক্রিনক্যাপচার নিন:
Screenshot.capture()যেকোনো এপিআই লেভেলে অ্যাক্টিভিটির একটি
ScreenCaptureনিন। উল্লেখ্য, Build.VERSION_CODES.JELLY_BEAN_MR2-এর নিচের ডিভাইসগুলোর জন্য এটিই একমাত্র উপায়।@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
স্ক্রিনক্যাপচার প্রক্রিয়াকরণের উদাহরণমূলক ব্যবহার
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 কনসোলের Test Lab ড্যাশবোর্ডে APK ফাইলগুলো আপলোড করুন।
অবশেষে, আপনার পরীক্ষাটি চালান।
ধাপ ৪। আপনার পরীক্ষার স্ক্রিনশটগুলো দেখুন।
আপনার পরীক্ষা সম্পন্ন হওয়ার পর, আপনি Firebase কনসোলে নেওয়া যেকোনো স্ক্রিনশট দেখতে পারবেন।
টেস্টস ট্যাবে, আপনার সম্পন্ন করা পরীক্ষাটি নির্বাচন করুন, তারপর রেজাল্টস ট্যাবে ক্লিক করুন।
আপনার পরীক্ষাটি আবার নির্বাচন করুন, তারপর প্রদর্শিত স্ক্রিনশট ট্যাবে ক্লিক করুন।
(ঐচ্ছিক) অতিরিক্ত পরীক্ষার বৈশিষ্ট্য সক্রিয় করুন
Test Lab দিয়ে আপনার টেস্টটি চালানোর আগে আপনি নিম্নলিখিত বৈশিষ্ট্যগুলি সক্রিয় করতে পারেন:
অর্কেস্ট্রেটর সক্রিয় করুন
অ্যান্ড্রয়েড টেস্ট অর্কেস্ট্রেটর এমন একটি টুল যা আপনার অ্যাপের প্রতিটি ইন্সট্রুমেন্টেশন টেস্ট স্বাধীনভাবে চালায়। Test Lab সর্বদা অর্কেস্ট্রেটরের সর্বশেষ সংস্করণ ব্যবহার করে।
Test Lab জন্য অর্কেস্ট্রেটর সক্রিয় করতে, ইন্সট্রুমেন্টেশন টেস্ট সেটআপে, অতিরিক্ত বিকল্প > অর্কেস্ট্রেটর দিয়ে চালান-এ ক্লিক করুন।
যখন আপনি অর্কেস্ট্রেটর ব্যবহার করেন, তখন আপনি নিম্নলিখিত সুবিধাগুলো পান:
- কোনো শেয়ার্ড স্টেট নেই। প্রতিটি টেস্ট তার নিজস্ব ইন্সট্রুমেন্টেশন ইনস্ট্যান্সে চলে, তাই বিভিন্ন টেস্টের মধ্যে কোনো শেয়ার্ড স্টেট জমা হয় না।
- বিচ্ছিন্ন ক্র্যাশ। যদি কোনো টেস্ট ক্র্যাশ করে, তবে শুধুমাত্র সেই ইন্সট্রুমেন্টেশনটি বন্ধ হয়ে যায় এবং আপনার স্যুটের অন্যান্য টেস্টগুলো চলতে পারে।
মনে রাখবেন যে, আপনি যখন Orchestrator ব্যবহার করেন, তখন প্রতিটি টেস্ট তার নিজস্ব ইন্সট্রুমেন্টেশন ইনস্ট্যান্স চালায়, যার মানে হলো প্রতিটি টেস্ট কেসের পর অ্যাপ প্রসেসটি পুনরায় চালু হয়। এর ফলে রান টাইম বেড়ে যায়, যা আপনার কোটা ব্যবহার বা বিলযোগ্য সময়ের উপর প্রভাব ফেলতে পারে এবং আপনার ডিভাইসের টাইমআউট সীমা অতিক্রম করার কারণ হতে পারে। আপনি যদি আপনার অ্যাপের স্টার্টআপ টাইম কমিয়ে আনেন, তাহলে এই অতিরিক্ত সময় কমে আসবে।
Orchestrator-এর জন্য অতিরিক্ত অপশন সেট করতে, environmentVariables ফিল্ডের মাধ্যমে সেগুলি উল্লেখ করুন। উদাহরণস্বরূপ, clearPackageData ব্যবহার করতে, gcloud-এ এই অপশনটি ব্যবহার করুন:
--environment-variables clearPackageData=true
শার্ডিং সক্রিয় করুন
টেস্ট শার্ডিং একগুচ্ছ টেস্টকে কয়েকটি উপ-দলে (শার্ড) বিভক্ত করে, যেগুলো আলাদাভাবে ও বিচ্ছিন্নভাবে চলে। Test Lab একাধিক ডিভাইস ব্যবহার করে স্বয়ংক্রিয়ভাবে প্রতিটি শার্ডকে সমান্তরালভাবে চালায় এবং কম সময়ে সম্পূর্ণ টেস্ট সেটটি সম্পন্ন করে।
উদাহরণস্বরূপ, আপনি যদি N সংখ্যক শার্ড তৈরি করেন, তাহলে আপনার নির্বাচিত প্রতিটি ডিভাইসের জন্য Test Lab N সংখ্যক অভিন্ন ডিভাইস চালু করে এবং প্রতিটি ডিভাইসে টেস্টগুলোর একটি উপসেট চালায়। এর মানে হলো, শার্ডেড টেস্ট কেসগুলোর ফলে প্রতি ডিভাইসে একাধিকবার টেস্ট এক্সিকিউশন হতে পারে। তবে, নন-শার্ডেড টেস্ট কেসগুলোর ফলে প্রতি ডিভাইসে একবার টেস্ট এক্সিকিউশন হয়। Test Lab ধারণাগুলো জানতে, ‘ মূল ধারণা’ (Key concepts) দেখুন।
Firebase কনসোলে টেস্ট শার্ডিং চালু করতে, এই ধাপগুলো অনুসরণ করুন:
ইন্সট্রুমেন্টেশন টেস্ট সেটআপে, অতিরিক্ত বিকল্পগুলিতে ক্লিক করুন।
শার্ডিং বিভাগে, আপনি যতগুলো শার্ড চালাতে চান, সেই সংখ্যাটি লিখুন।
টেস্ট শার্ডের বিলিং
Test Lab AndroidJUnitRunner-এর বিল্ট-ইন শার্ডিং মেকানিজম ব্যবহার করে আপনার শার্ডগুলো বাস্তবায়ন করে। খালি শার্ড (যেসব শার্ডে কোনো টেস্ট কেস অ্যাসাইন করা নেই) চালু করার জন্য চার্জ এড়ানোর জন্য, আপনার তৈরি করা শার্ডের সংখ্যা মোট টেস্ট কেসের সংখ্যার চেয়ে কম হওয়া উচিত। প্রতিটি টেস্ট কেস রান হতে কতক্ষণ সময় লাগে তার উপর নির্ভর করে, সাধারণত প্রতি শার্ডে ২-১০টি টেস্ট কেস অ্যাসাইন করা ভালো।
বিলিং সম্পর্কে আরও তথ্যের জন্য, ব্যবহার, কোটা এবং বিলিং পড়ুন।