راه اندازی سوئیت ها

یک مجموعه در Tradefed به مجموعه‌ای اشاره دارد که در آن چندین تست تحت یک اجراکننده تست مشترک اجرا می‌شوند که اجرای کلی را هدایت می‌کند.

در Tradefed، مجموعه‌ها از طریق کلاس ITestSuite هدایت می‌شوند که به تست‌ها اجازه می‌دهد مستقل از نحوه اجرایشان، اضافه و حذف شوند.

تعاریف

  • مجموعه: مجموعه‌ای از ماژول‌های آزمایشی که برای اجرا تحت یک تنظیمات سطح بالای مشابه پیکربندی شده‌اند تا نتایج خود را تحت یک فراخوانی واحد گزارش دهند.
  • تنظیمات سطح بالا: تنظیماتی که قبل از اجرای هر یک از ماژول‌های آزمایشی روی دستگاه‌ها اعمال می‌شود.
  • پیکربندی اصلی: پیکربندی XML سطح مجموعه Tradefed که توصیف می‌کند کدام ماژول‌ها باید اجرا شوند و کدام تنظیمات سطح بالا باید استفاده شود.
  • تنظیمات سطح ماژول: تنظیماتی که درست قبل از اجرای ماژول روی دستگاه‌ها اعمال می‌شود. این تنظیمات همچنین به عنوان تنظیمات خاص ماژول شناخته می‌شوند.
  • پیکربندی ماژول: به پیکربندی XML مربوط به AndroidTest.xml Tradefed اشاره دارد که ماژول‌ها و تنظیمات سطح ماژول مورد نیاز را شرح می‌دهد.
  • ماژول: واحد تست متشکل از یک مرحله راه‌اندازی ( راه‌اندازی در سطح ماژول )، یک مرحله اجرای تست و یک مرحله تجزیه و تحلیل.
  • تلاش مجدد درون ماژول: تلاش مجدد خودکار توسط مهار داخل ماژول انجام می‌شود.
  • تلاش مجدد برای مجموعه: اجرای مجدد کامل تست‌های ناموفق قبلی مجموعه.

ساختار ITestSuite

ITestSuite در Tradefed به کلاس پایه مشترکی اشاره دارد که اجرای یک مجموعه را هدایت می‌کند. این کلاس توسط همه مجموعه‌های تست اصلی، به ویژه مجموعه تست سازگاری اندروید (CTS) و مجموعه تست فروشندگان اندروید (VTS) به اشتراک گذاشته شده است و یک تجربه اجرای سازگار را در همه مجموعه‌ها تضمین می‌کند.

ما گاهی اوقات از ITestSuite به عنوان suite runner یاد می‌کنیم.

برنامه‌ی suite runner هنگام اجرا، این مراحل را دنبال می‌کند:

  1. پیکربندی ماژول را بارگذاری کنید و تعیین کنید که کدام مجموعه باید اجرا شود.
  2. اجرای هر ماژول:

    1. راه‌اندازی سطح ماژول را اجرا کنید.
    2. تست‌های ماژول را اجرا کنید.
    3. اجرای جداسازی در سطح ماژول.
  3. نتایج را گزارش دهید.

تنظیمات سطح بالا

از دیدگاه Tradefed، ITestSuite فقط یک تست دیگر است. این تست پیچیده است، اما همچنان فقط یک تست مانند هر IRemoteTest دیگر است. بنابراین هنگام مشخص کردن اجراکننده مجموعه در پیکربندی Tradefed، Tradefed از الگوی معمول پیکربندی پیروی می‌کند: اجرای build_provider ، target_preparer ، test (مجموعه ما در این مورد) و 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 پایه.