قم بإعداد الأجنحة

تشير المجموعة في Tradefed إلى إعداد يتم فيه إجراء العديد من الاختبارات ضمن مشغل اختبار مشترك يقود التنفيذ الشامل.

في Tradefed، يتم تشغيل الأجنحة من خلال فئة ITestSuite ، والتي تتيح إضافة الاختبارات وإزالتها بشكل مستقل عن كيفية تشغيلها.

تعريفات

  • Suite: مجموعة من وحدات الاختبار التي تم تكوينها للتشغيل ضمن إعداد مماثل على المستوى الأعلى للإبلاغ عن نتائجها بموجب استدعاء واحد.
  • إعداد المستوى الأعلى: يتم تطبيق الإعداد على الأجهزة قبل تشغيل أي من وحدات الاختبار.
  • التكوين الرئيسي: تكوين Tradefed XML على مستوى المجموعة والذي يصف الوحدات التي يجب تشغيلها وأي إعداد على المستوى الأعلى يجب استخدامه.
  • الإعداد على مستوى الوحدة: يتم تطبيق الإعداد على الأجهزة مباشرة قبل تشغيل الوحدة. تُعرف هذه أيضًا بالإعدادات الخاصة بالوحدة النمطية .
  • تكوين الوحدة: يشير إلى تكوين AndroidTest.xml Tradefed XML الذي يصف الوحدات والإعداد على مستوى الوحدة الذي يجب إجراؤه.
  • الوحدة: وحدة اختبار تتكون من خطوة إعداد ( الإعداد على مستوى الوحدة )، وخطوة تنفيذ اختبار، وخطوة هدم.
  • إعادة المحاولة داخل الوحدة: تتم إعادة المحاولة تلقائيًا بواسطة الحزام الموجود داخل الوحدة.
  • إعادة محاولة المجموعة: إعادة التشغيل الكامل للاختبارات الفاشلة مسبقًا للمجموعة.

هيكل ITestSuite

يشير ITestSuite في Tradefed إلى الفئة الأساسية المشتركة التي تقود تنفيذ المجموعة. تتم مشاركته من قبل جميع مجموعات الاختبار الرئيسية، وتحديدًا مجموعة اختبار توافق Android (CTS) ومجموعة اختبار Android Vendor (VTS) ، ويضمن تجربة تنفيذ متسقة عبر جميع الأجنحة.

نشير أحيانًا إلى ITestSuite باعتباره مدير المجموعة .

يتبع مشغل المجموعة الخطوات التالية عند التنفيذ:

  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 الأساسي.