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

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

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

التعريفات

  • المجموعة: مجموعة من وحدات الاختبار التي تم إعدادها للتنفيذ ضمن إعداد مماثل على مستوى أعلى لإعداد تقارير عن نتائجها ضمن طلب واحد.
  • الإعداد على المستوى الأعلى: الإعداد الذي يتم تطبيقه على الأجهزة قبل تشغيل أي من وحدات الاختبار
  • الإعدادات الرئيسية: إعدادات Tradefed XML على مستوى المجموعة التي تصِف الوحدات التي يجب تشغيلها والإعدادات على المستوى الأعلى التي يجب استخدامها.
  • الإعداد على مستوى الوحدة: الإعداد الذي يتم تطبيقه على الأجهزة قبل تشغيل الوحدة مباشرةً وتُعرف هذه أيضًا باسم الإعدادات الخاصة بالوحدة.
  • إعدادات الوحدة: تشير إلى 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.