إعداد الأجنحة

تشير الحزمة في Tradefed إلى عملية إعداد يتم فيها إجراء عدة اختبارات ضمن أداة بدء اختبارات شائعة تدير التنفيذ العام.

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

التعريفات

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

بنية ITestSuite

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

نشير أحيانًا إلى 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.