স্যুট সেট-আপ করা

Tradefed-এ স্যুট বলতে এমন একটি সেট-আপ বোঝায় যেখানে একটি সাধারণ টেস্ট রানারের অধীনে একাধিক টেস্ট চলছে যা সামগ্রিক এক্সিকিউশনকে ড্রাইভ করে।

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

সংজ্ঞা

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

ITestSuite স্ট্রাকচার

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

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

স্যুট রানার এক্সিকিউট করার সময় এইসব ধাপ অনুসরণ করে:

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

    1. মডিউল-লেভেল সেট-আপ রান করুন।
    2. মডিউল টেস্ট রান করুন।
    3. মডিউল-লেভেল টিয়ার ডাউন রান করুন।
  3. ফলাফল সম্পর্কে অভিযোগ জানান।

টপ-লেভেল সেট-আপ

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

Tradefed কনফিগারেশনের এই সিকোয়েন্সে 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 -এ একটি সংশ্লিষ্ট হ্যান্ডলার আছে যা আপনাকে নির্দিষ্ট মোডে এক্সিকিউট করার জন্য মডিউল সেট-আপ পরিবর্তন করতে দেয়।

যেমন, ইনস্ট্যান্ট অ্যাপ মোড, APK ইনস্টলেশনকে ইনস্ট্যান্ট মোড হিসেবে বাধ্য করে।

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

--enable-parameterized-modules

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

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

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

মডিউলের প্যারামিটারাইজড ভার্সন রান করলে, এটি প্যারামিটারাইজড মডিউলের নামের অধীনে ফলাফল রিপোর্ট করে, যেমন CtsGestureTestCases[instant] বনাম বেস CtsGestureTestCases।