Suite را راه اندازی کنید

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

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

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

تعاریف

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

  • امتحان مجدد درون ماژول: تلاش مجدد خودکار توسط مهار داخل ماژول انجام می شود.

  • سعی مجدد مجموعه: اجرای مجدد کامل تست‌های ناموفق قبلی مجموعه.

ساختار ITestSuite

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

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

Suite runner هنگام اجرا این مراحل را دنبال می کند:

  1. پیکربندی ماژول را بارگیری کنید و تعیین کنید کدام مجموعه باید اجرا شود.
  2. هر ماژول را اجرا کنید: a. راه اندازی در سطح ماژول را اجرا کنید. اجرای تست های ماژول ج. پاره کردن در سطح ماژول را اجرا کنید
  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>

فراداده ماژول

ما Module Metadata را اطلاعات اضافی مشخص شده در ماژول تست 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 پایه.