স্যুট সেট আপ করুন

ট্রেডফেডে একটি স্যুট বলতে এমন একটি সেটআপকে বোঝায় যেখানে বেশ কয়েকটি টেস্ট একটি সাধারণ টেস্ট রানারের অধীনে চলে, যা সেগুলোর সামগ্রিক নির্বাহকে চালনা করে।

ট্রেডফেডে, সুইটগুলো ITestSuite ক্লাসের মাধ্যমে পরিচালিত হয়, যা টেস্টগুলো কীভাবে চালানো হবে তার থেকে স্বাধীনভাবে যোগ এবং অপসারণ করার সুযোগ দেয়।

সংজ্ঞা

  • স্যুট: পরীক্ষা মডিউলগুলির একটি সেট, যা একই ধরনের শীর্ষ-স্তরের সেটআপের অধীনে চালানোর জন্য কনফিগার করা হয়, যাতে একটিমাত্র আহ্বানেই তাদের ফলাফল রিপোর্ট করা যায়।
  • শীর্ষ-স্তরের সেটআপ: যেকোনো টেস্ট মডিউল চালানোর আগে ডিভাইসগুলোতে এই সেটআপ প্রয়োগ করা হয়।
  • মূল কনফিগারেশন: স্যুট-স্তরের ট্রেডফেড এক্সএমএল কনফিগারেশন যা বর্ণনা করে কোন মডিউলগুলো চালানো উচিত এবং কোন শীর্ষ-স্তরের সেটআপ ব্যবহার করা উচিত।
  • মডিউল-স্তরের সেটআপ: মডিউলটি চালানোর ঠিক আগে ডিভাইসগুলিতে যে সেটআপ প্রয়োগ করা হয়। এগুলো মডিউল-নির্দিষ্ট সেটআপ নামেও পরিচিত।
  • মডিউল কনফিগারেশন: এটি AndroidTest.xml ট্রেডফেড এক্সএমএল কনফিগারেশনকে বোঝায়, যা মডিউলগুলো এবং কোন মডিউল-স্তরের সেটআপ করা উচিত তা বর্ণনা করে।
  • মডিউল: একটি টেস্ট ইউনিট যা একটি সেটআপ ধাপ ( মডিউল-স্তরের সেটআপ ), একটি টেস্ট সম্পাদন ধাপ এবং একটি টিয়ার ডাউন ধাপ নিয়ে গঠিত।
  • মডিউলের অভ্যন্তরে পুনঃপ্রচেষ্টা: মডিউলের ভিতরে থাকা হারনেস দ্বারা স্বয়ংক্রিয়ভাবে করা পুনঃপ্রচেষ্টা।
  • সুইট রিট্রাই: সুইটের পূর্বে ব্যর্থ হওয়া টেস্টগুলোর সম্পূর্ণভাবে পুনরায় চালানো।

ITestSuite কাঠামো

Tradefed-এ ITestSuite বলতে একটি স্যুট এক্সিকিউশন পরিচালনাকারী সাধারণ বেস ক্লাসকে বোঝায়। এটি সমস্ত প্রধান টেস্ট স্যুট, বিশেষ করে Android Compatibility Test Suite (CTS) এবং Android Vendor Test Suite (VTS) দ্বারা ব্যবহৃত হয় এবং সমস্ত স্যুট জুড়ে একটি সামঞ্জস্যপূর্ণ এক্সিকিউশন অভিজ্ঞতা নিশ্চিত করে।

আমরা মাঝে মাঝে ITestSuite- কে স্যুট রানার হিসেবে উল্লেখ করি।

স্যুট রানার কার্যকর করার সময় নিম্নলিখিত ধাপগুলো অনুসরণ করে:

  1. মডিউলের কনফিগারেশন লোড করুন এবং কোন সেটটি চালানো হবে তা নির্ধারণ করুন।
  2. প্রতিটি মডিউল চালান:

    1. মডিউল-স্তরের সেটআপ চালান।
    2. মডিউল পরীক্ষাগুলো চালান।
    3. মডিউল-স্তরের টিয়ার ডাউন চালান।
  3. ফলাফলগুলো প্রতিবেদন করুন।

শীর্ষ-স্তরের সেটআপ

Tradefed-এর দৃষ্টিকোণ থেকে, ITestSuite হলো আর দশটা টেস্টের মতোই একটি টেস্ট। এটি একটি জটিল টেস্ট হলেও, অন্য যেকোনো IRemoteTest মতোই একটি সাধারণ টেস্ট। তাই, একটি Tradefed কনফিগারেশনে স্যুট রানার নির্দিষ্ট করার সময়, Tradefed কনফিগারেশনের সাধারণ প্যাটার্নটি অনুসরণ করে: build_provider , target_preparer , test (এই ক্ষেত্রে আমাদের স্যুট), এবং target_cleaner রান করে।

ট্রেডফেড কনফিগারেশনের যে অনুক্রমে ITestSuite অন্তর্ভুক্ত রয়েছে, সেটিই হলো শীর্ষ-স্তরের সেটআপ।

উদাহরণ:

<configuration description="Common config for Compatibility suites">

    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>

    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />

    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>

মডিউল মেটাডেটা

টেস্ট মডিউল AndroidTest.xml এ নির্দিষ্ট করা অতিরিক্ত তথ্যকে আমরা মডিউল মেটাডেটা বলি। এই মেটাডেটা আপনাকে মডিউল সম্পর্কে অতিরিক্ত তথ্য নির্দিষ্ট করার সুযোগ দেয় এবং এটি ব্যবহার করে মডিউল ফিল্টার করা যায়।

উদাহরণ মেটাডেটা:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

মেটাডেটার উপর ফিল্টারের উদাহরণ:

--module-metadata-include-filter component=framework

উপরের পদ্ধতিটি কম্পোনেন্ট মেটাডেটা হিসেবে একটি ফ্রেমওয়ার্ক ব্যবহার করে সমস্ত মডিউল চালাবে।

সম্পূর্ণ AndroidTest.xml উদাহরণ:

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

প্যারামিটারাইজড মডিউল

একটি বিশেষ মেটাডেটা টাইপ হলো parameter

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

এই মেটাডেটা নির্দেশ করে যে মডিউলটিকে স্ট্যান্ডার্ড অ্যাপ মোডের পরিবর্তে একটি ভিন্ন মোডে , যেমন ইনস্ট্যান্ট অ্যাপ হিসেবে, এক্সিকিউট করতে হবে।

সমস্ত সম্ভাব্য মোড বা প্যারামিটার ModuleParameters দ্বারা বর্ণিত থাকে এবং ModuleParametersHelper এ সেগুলোর একটি সংশ্লিষ্ট হ্যান্ডলার থাকে, যা আপনাকে নির্দিষ্ট মোডে কার্যকর করার জন্য মডিউল সেটআপ পরিবর্তন করতে দেয়।

উদাহরণস্বরূপ, ইনস্ট্যান্ট অ্যাপ মোড এপিকে ইনস্টলেশনকে ইনস্ট্যান্ট মোডে করতে বাধ্য করে।

প্যারামিটারাইজেশনটি সম্পন্ন করার জন্য, কমান্ড লাইনে নিম্নলিখিত কমান্ডের মাধ্যমে এটি সক্রিয় করতে হবে:

--enable-parameterized-modules

এছাড়াও একটি নির্দিষ্ট মোড নিম্নলিখিত উপায়ে চালানো সম্ভব:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

যখন কোনো মডিউলের প্যারামিটারযুক্ত সংস্করণ চলে, তখন এটি একটি প্যারামিটারযুক্ত মডিউল নামের অধীনে তার ফলাফল রিপোর্ট করে, উদাহরণস্বরূপ CtsGestureTestCases[instant] বনাম base CtsGestureTestCases