إعداد المجموعات

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

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

التعريفات

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

بنية ITestSuite

ITestSuite في Tradefed تشير إلى الصنف الأساسي الشائع الذي يشغّل تنفيذ المجموعة. وتتم مشاركتها بين جميع مجموعات الاختبار الرئيسية، وتحديدًا مجموعة اختبار التوافق (CTS) لنظام Android ومجموعة اختبار الأجهزة (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.