এই নির্দেশিকাটি বর্ণনা করে কিভাবে Firebase Test Lab ব্যবহার করে একটি যন্ত্রানুষঙ্গ পরীক্ষা প্রস্তুত এবং পরিচালনা করতে হয়। এই নির্দেশিকাটি ব্যবহার করার জন্য, আপনার একটি যন্ত্রানুষঙ্গ পরীক্ষা (আপনার বা আপনার দলের দ্বারা লিখিত) প্রয়োজন হবে যা Espresso বা UI Automator Android পরীক্ষার ফ্রেমওয়ার্ক ব্যবহার করে। যন্ত্রানুষঙ্গ পরীক্ষাগুলি ফিজিক্যাল ডিভাইসে 45 মিনিট এবং ভার্চুয়াল ডিভাইসে 60 মিনিট পর্যন্ত চলতে পারে।
পরবর্তী ধাপগুলিতে, আপনি আপনার অ্যাপের APK এবং আপনার পরীক্ষার APK Firebase-এ আপলোড করবেন।
(ঐচ্ছিক) আপনার অ্যাপে স্ক্রিনশট লাইব্রেরি যোগ করুন
Firebase Test Lab একটি লাইব্রেরি (testlab-instr-lib) রয়েছে যা আপনি AndroidX-এর ScreenCapture-এর সাহায্যে তোলা যেকোনো স্ক্রিনশট প্রক্রিয়া করতে ব্যবহার করতে পারেন, যখন আপনি ইন্সট্রুমেন্টেশন পরীক্ষা চালান, যেমন Espresso test framework ব্যবহার করে লেখা পরীক্ষা। এই বিভাগটি AndroidX লাইব্রেরি দিয়ে ScreenCapture অবজেক্ট কীভাবে তৈরি করবেন এবং testlab-instr-lib ব্যবহার করে কীভাবে সেগুলি প্রক্রিয়া করবেন তা বর্ণনা করে।
আপনার ইন্সট্রুমেন্টেশন পরীক্ষা শেষ হওয়ার পরে, আপনি Firebase কনসোলে ক্যাপচার করা স্ক্রিনশটগুলি দেখতে পারবেন।
একটি নমুনা অ্যাপ ব্যবহার করে দেখুন
এই কার্যকারিতাটি ব্যবহার করে দেখতে NotePad নমুনা অ্যাপটি ডাউনলোড করুন। স্ক্রিনশট নেওয়ার ক্ষমতা ইতিমধ্যেই NotePad প্রকল্পে অন্তর্ভুক্ত করা হয়েছে।
ধাপ ১. আপনার প্রকল্পে স্ক্রিনশট লাইব্রেরি যোগ করুন।
আপনার পরীক্ষামূলক প্রকল্পের রুট-লেভেল সেটিংস গ্র্যাডল ফাইলে (
settings.gradle.ktsঅথবাsettings.gradle), প্রতিটিrepositoriesবিভাগে গুগলের ম্যাভেন সংগ্রহস্থল যোগ করুন: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()যেকোনো API লেভেলের অ্যাক্টিভিটির
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 জন্য অর্কেস্ট্রেটর সক্ষম করতে, ইন্সট্রুমেন্টেশন টেস্ট সেটআপে, অতিরিক্ত বিকল্প > Run with Orchestrator এ ক্লিক করুন।
যখন আপনি অর্কেস্ট্রেটর ব্যবহার করেন, তখন আপনি নিম্নলিখিত সুবিধাগুলি থেকে উপকৃত হন:
- কোনও ভাগ করা অবস্থা নেই। প্রতিটি পরীক্ষা তার নিজস্ব যন্ত্রের উদাহরণে চলে, তাই পরীক্ষাগুলিতে একটি ভাগ করা অবস্থা জমা হয় না।
- বিচ্ছিন্ন ক্র্যাশ। যদি কোনও পরীক্ষা ক্র্যাশ করে, তবে কেবল সেই যন্ত্রটি বন্ধ করা হবে এবং আপনার স্যুটের অন্যান্য পরীক্ষাগুলি এখনও চলতে পারে।
মনে রাখবেন যে যখন আপনি Orchestrator ব্যবহার করেন, তখন প্রতিটি পরীক্ষা তার নিজস্ব ইন্সট্রুমেন্টেশন ইন্সট্যান্স চালায়, যার অর্থ হল প্রতিটি পরীক্ষার পরে অ্যাপ প্রক্রিয়াটি পুনরায় চালু হয়। ফলস্বরূপ বর্ধিত রান টাইম আপনার কোটা ব্যবহার বা বিল করা সময়ের উপর প্রভাব ফেলতে পারে এবং আপনার ডিভাইসের টাইমআউট সীমা অতিক্রম করতে পারে। আপনি যদি আপনার অ্যাপের স্টার্টআপ সময় কমিয়ে দেন, তাহলে এই ওভারহেডটি ছোট হয়ে যাবে।
Orchestrator-এর জন্য অতিরিক্ত বিকল্প সেট করতে, environmentVariables ক্ষেত্রের মাধ্যমে সেগুলি নির্দিষ্ট করুন। উদাহরণস্বরূপ, clearPackageData ব্যবহার করতে, gcloud-এ এই বিকল্পটি ব্যবহার করুন:
--environment-variables clearPackageData=true
শারডিং সক্ষম করুন
টেস্ট শার্ডিং পরীক্ষার একটি সেটকে উপ-গ্রুপে (শার্ড) বিভক্ত করে যা পৃথকভাবে বিচ্ছিন্নভাবে পরিচালিত হয়। Test Lab স্বয়ংক্রিয়ভাবে একাধিক ডিভাইস ব্যবহার করে প্রতিটি শার্ডকে সমান্তরালভাবে চালায় এবং কম সময়ে সম্পূর্ণ পরীক্ষার সেটটি সম্পন্ন করে।
উদাহরণস্বরূপ, যদি আপনি N shards তৈরি করেন, তাহলে আপনার নির্বাচিত প্রতিটি ডিভাইসের জন্য, Test Lab N অভিন্ন ডিভাইসগুলিকে স্পিন করে এবং প্রতিটি ডিভাইসে পরীক্ষার একটি উপসেট চালায়। এর অর্থ হল sharded টেস্ট কেসগুলির ফলে প্রতিটি ডিভাইসে একাধিক পরীক্ষা কার্যকর করা যেতে পারে। তবে, নন-sharded টেস্ট কেসগুলির ফলে প্রতিটি ডিভাইসে একটি পরীক্ষা কার্যকর করা হয়। Test Lab ধারণাগুলি শিখতে, মূল ধারণাগুলি দেখুন।
Firebase কনসোলে টেস্ট শারডিং সক্ষম করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
ইন্সট্রুমেন্টেশন টেস্ট সেটআপে, অতিরিক্ত বিকল্পগুলিতে ক্লিক করুন।
"শেয়ারিং" বিভাগে, আপনি কতগুলি শার্ড চালাতে চান তার সংখ্যা লিখুন।
পরীক্ষার অংশের জন্য বিলিং
Test Lab আপনার শার্ডগুলি AndroidJUnitRunner এর অন্তর্নির্মিত শার্ডিং প্রক্রিয়া ব্যবহার করে বাস্তবায়ন করে। খালি শার্ডগুলি (অ্যাসাইন করা টেস্ট কেস ছাড়া শার্ড) ঘুরানোর জন্য চার্জ করা এড়াতে, আপনার তৈরি শার্ডের সংখ্যা মোট টেস্ট কেসের সংখ্যার চেয়ে কম হওয়া উচিত। প্রতিটি টেস্ট কেস চালাতে কত সময় লাগে তার উপর নির্ভর করে, সাধারণত প্রতি শার্ডে 2-10টি টেস্ট কেস বরাদ্দ করা একটি ভাল ধারণা।
বিলিং সম্পর্কে আরও তথ্যের জন্য, ব্যবহার, কোটা এবং বিলিং পড়ুন।