ইন্সট্রুমেন্টেশন পরীক্ষা দিয়ে শুরু করুন

এই নির্দেশিকা বর্ণনা করে কিভাবে ফায়ারবেস টেস্ট ল্যাব ব্যবহার করে একটি ইন্সট্রুমেন্টেশন পরীক্ষা প্রস্তুত ও চালানো যায়। এই নির্দেশিকাটি ব্যবহার করার জন্য, আপনার একটি ইন্সট্রুমেন্টেশন টেস্টের প্রয়োজন হবে (আপনি বা আপনার দলের দ্বারা লিখিত) যা এসপ্রেসো বা UI অটোমেটর অ্যান্ড্রয়েড টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে। ইন্সট্রুমেন্টেশন পরীক্ষাগুলি শারীরিক ডিভাইসে 45 মিনিট পর্যন্ত এবং ভার্চুয়াল ডিভাইসে 60 মিনিট পর্যন্ত চলতে পারে।

পরবর্তী ধাপে, আপনি আপনার অ্যাপের APK এবং আপনার পরীক্ষার APK Firebase-এ আপলোড করবেন।

(ঐচ্ছিক) আপনার অ্যাপে স্ক্রিনশট লাইব্রেরি যোগ করুন

Firebase টেস্ট ল্যাবে একটি লাইব্রেরি (testlab-instr-lib) রয়েছে যা আপনি AndroidX-এর স্ক্রিনক্যাপচারের মাধ্যমে নেওয়া যেকোনো স্ক্রিনশট প্রক্রিয়া করতে ব্যবহার করতে পারেন যখন ইন্সট্রুমেন্টেশন পরীক্ষা চালানো হয়, যেমন Espresso টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে লিখিত পরীক্ষা। এই বিভাগটি বর্ণনা করে কিভাবে AndroidX লাইব্রেরি দিয়ে ScreenCapture অবজেক্ট তৈরি করা যায় এবং testlab-instr-lib ব্যবহার করে কিভাবে সেগুলি প্রক্রিয়া করা যায়।

আপনার ইন্সট্রুমেন্টেশন পরীক্ষা চালানোর পরে, আপনি Firebase কনসোলে ক্যাপচার করা স্ক্রিনশট দেখতে পারেন।

একটি নমুনা অ্যাপ্লিকেশন চেষ্টা করুন

এই কার্যকারিতা চেষ্টা করার জন্য নোটপ্যাড নমুনা অ্যাপ্লিকেশন ডাউনলোড করুন। স্ক্রিনশট নেওয়ার ক্ষমতা ইতিমধ্যেই নোটপ্যাড প্রকল্পে অন্তর্ভুক্ত করা হয়েছে।

ধাপ 1. আপনার প্রকল্পে স্ক্রিনশট লাইব্রেরি যোগ করুন

  1. আপনার পরীক্ষা প্রকল্পের রুট-স্তরের সেটিংস 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()
        }
    }
    // ...
    
  2. আপনার মডিউলে (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts বা <project>/<app-module>/build.gradle ), টেস্ট ল্যাবের জন্য নির্ভরতা যোগ করুন স্ক্রিনশট লাইব্রেরি।

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2")
      // ...
    
  3. আপনার পরীক্ষার 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>
    ...
    
  4. আপনার অ্যাপের AndroidManifest.xml ফাইলে, <manifest> উপাদানের মধ্যে নিম্নলিখিত লাইনগুলি যোগ করুন:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. আপনার 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>

ধাপ 2. আপনার পরীক্ষার সময় স্ক্রিনশট নিন

আপনার পরীক্ষার যেকোনো সময়ে যেখানে আপনি একটি স্ক্রিনশট নিতে চান, AndroidX লাইব্রেরি থেকে Screenshot.capture() পদ্ধতিতে কল করুন। এটি একটি ScreenCapture অবজেক্ট তৈরি করে। আপনি যখন ScreenCapture অবজেক্টে process() কল করেন, তখন এটি আপনার AndroidManifest.xml এ নিবন্ধিত ScreenCaptureProcessor ব্যবহার করে প্রক্রিয়া করা হয়। মনে রাখবেন যে কোন প্রসেসর নিবন্ধিত না থাকলে BasicScreenCaptureProcessor ব্যবহার করা হয়। যেহেতু আপনি FirebaseScreenCaptureProcessor নিবন্ধন করেছেন, আপনার স্ক্রিনশটগুলি FirebaseScreenCaptureProcessor মাধ্যমে প্রক্রিয়া করা হবে এবং আপনি যখন Firebase টেস্ট ল্যাবের সাথে আপনার পরীক্ষা চালাবেন তখন আপনার ফলাফলের সাথে আপনার জন্য উপলব্ধ হবে৷

একটি ScreenCapture তৈরি করার জন্য উদাহরণ ব্যবহার ক্ষেত্রে:

  • একটি API বিল্ড.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());
    ...
    

একটি 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();
    

ধাপ 3. আপনার পরীক্ষা তৈরি করুন এবং চালান

  1. আপনার অ্যাপ তৈরি করুন এবং APK পরীক্ষা করুন (নির্দেশের জন্য আপনার অ্যাপ পরীক্ষা করুন দেখুন)।

  2. Firebase কনসোলের টেস্ট ল্যাব ড্যাশবোর্ডে APK ফাইলগুলি আপলোড করুন।

  3. অবশেষে, আপনার পরীক্ষা চালান।

ধাপ 4. আপনার পরীক্ষার স্ক্রিনশট দেখুন

আপনার পরীক্ষা শেষ হওয়ার পরে, আপনি Firebase কনসোলে নেওয়া যেকোনো স্ক্রিনশট দেখতে পারেন।

  1. টেস্ট ট্যাবে, আপনার সম্পূর্ণ পরীক্ষা নির্বাচন করুন, তারপর ফলাফল ট্যাবে ক্লিক করুন।

  2. আবার আপনার পরীক্ষা নির্বাচন করুন, তারপর প্রদর্শিত স্ক্রিনশট ট্যাবে ক্লিক করুন।

(ঐচ্ছিক) অতিরিক্ত পরীক্ষা বৈশিষ্ট্য সক্ষম করুন

টেস্ট ল্যাবের সাথে চালানোর আগে আপনি আপনার পরীক্ষায় নিম্নলিখিত বৈশিষ্ট্যগুলি সক্ষম করতে পারেন:

অর্কেস্ট্রেটর সক্ষম করুন

অ্যান্ড্রয়েড টেস্ট অর্কেস্ট্রেটর হল একটি টুল যা আপনার অ্যাপের প্রতিটি ইন্সট্রুমেন্টেশন পরীক্ষা স্বাধীনভাবে চালায়। টেস্ট ল্যাব সর্বদা অর্কেস্ট্রেটরের সর্বশেষ সংস্করণ ব্যবহার করে।

টেস্ট ল্যাবের জন্য অর্কেস্ট্রেটর সক্ষম করতে, ইন্সট্রুমেন্টেশন পরীক্ষা সেটআপে, অতিরিক্ত বিকল্প > অর্কেস্ট্রেটরের সাথে চালান ক্লিক করুন।

আপনি যখন অর্কেস্ট্রেটর ব্যবহার করেন, তখন আপনি নিম্নলিখিতগুলি থেকে উপকৃত হন:

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

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

অর্কেস্ট্রেটরের জন্য অতিরিক্ত বিকল্পগুলি সেট করতে, এগুলিকে environmentVariables ক্ষেত্রের মাধ্যমে নির্দিষ্ট করুন৷ উদাহরণস্বরূপ, clearPackageData ব্যবহার করতে, gcloud-এ এই বিকল্পটি ব্যবহার করুন:

--environment-variables clearPackageData=true

শর্ডিং সক্ষম করুন

টেস্ট শার্ডিং পরীক্ষার একটি সেটকে সাব-গ্রুপে (শার্ডস) ভাগ করে যা বিচ্ছিন্নভাবে আলাদাভাবে চলে। টেস্ট ল্যাব স্বয়ংক্রিয়ভাবে একাধিক ডিভাইস ব্যবহার করে সমান্তরালভাবে প্রতিটি শার্ড চালায় এবং কম সময়ের মধ্যে পরীক্ষার সম্পূর্ণ সেট সম্পূর্ণ করে।

উদাহরণস্বরূপ, আপনি যদি N শার্ড তৈরি করেন, আপনার নির্বাচন করা প্রতিটি ডিভাইসের জন্য, টেস্ট ল্যাব এন অভিন্ন ডিভাইসগুলিকে স্পিন করে এবং প্রতিটি ডিভাইসে পরীক্ষার একটি উপসেট চালায়। এর অর্থ হল শার্ড টেস্ট কেস প্রতি ডিভাইসে একাধিক পরীক্ষা কার্যকর করতে পারে। নন-শার্ডেড টেস্ট কেস, তবে ডিভাইস প্রতি একটি টেস্ট এক্সিকিকিউশনের ফলে। টেস্ট ল্যাব ধারণাগুলি শিখতে, মূল ধারণাগুলি দেখুন।

Firebase কনসোলে টেস্ট শার্ডিং সক্ষম করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ইনস্ট্রুমেন্টেশন টেস্ট সেটআপে, অতিরিক্ত বিকল্পগুলিতে ক্লিক করুন।

  2. Sharding বিভাগে, আপনি চালাতে চান শার্ডের সংখ্যা লিখুন।

টেস্ট শার্ডের জন্য বিলিং

টেস্ট ল্যাব AndroidJUnitRunner-এর অন্তর্নির্মিত শার্ডিং মেকানিজম ব্যবহার করে আপনার শার্ডগুলি প্রয়োগ করে৷ খালি শার্ডগুলি ঘোরানোর জন্য চার্জ করা এড়াতে (অনির্ধারিত পরীক্ষার কেস ছাড়া শার্ডগুলি), আপনার তৈরি শার্ডগুলির সংখ্যা মোট পরীক্ষার ক্ষেত্রের সংখ্যার চেয়ে কম হওয়া উচিত। প্রতিটি টেস্ট কেস চালানোর জন্য কতক্ষণ লাগে তার উপর নির্ভর করে, সাধারণত প্রতি শার্ডে 2-10 টি টেস্ট কেস বরাদ্দ করা ভাল ধারণা।

বিলিং সম্পর্কে আরও তথ্যের জন্য, ব্যবহার, কোটা এবং বিলিং পড়ুন।