راه‌اندازی مجموعه‌ها

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

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

تعاریف

  • مجموعه: مجموعه‌ای از واحدهای آزمایشی که برای اجرا تحت یک راه‌اندازی سطح بالا مشابه پیکربندی شده‌اند تا نتایج خود را تحت یک فراخوانی گزارش کنند.
  • راه‌اندازی سطح بالا: راه‌اندازی اعمال‌شده در دستگاه‌ها قبل‌از اجرای هرکدام از مدول‌های آزمایشی.
  • پیکربندی اصلی: پیکربندی XML مربوط به Tradefed در سطح مجموعه که توضیح می‌دهد کدام پیمانه‌ها باید اجرا شوند و از کدام راه‌اندازی سطح بالا باید استفاده شود.
  • راه‌اندازی سطح واحد: راه‌اندازی درست قبل‌از اجرای واحد روی دستگاه‌ها اعمال می‌شود. این‌ها به‌عنوان راه‌اندازی‌های مختص واحد نیز شناخته می‌شوند.
  • پیکربندی واحد: به پیکربندی 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.