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

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

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

تعاریف

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

ساختار ITestSuite

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

ما گاهی به ITestSuite به عنوان راه‌انداز مجموعه اشاره می‌کنیم.

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 پایه.