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

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

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

التعريفات

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

بنية ITestSuite

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

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

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

  1. حمِّل إعدادات الوحدة وحدِّد المجموعة التي يجب تشغيلها.
  2. شغِّل كل وحدة:

    1. شغِّل عملية الإعداد على مستوى الوحدة.
    2. إجراء اختبارات الوحدات:
    3. شغِّل عملية الإزالة على مستوى الوحدة.
  3. الإبلاغ عن النتائج

إعداد من المستوى الأعلى

من وجهة نظر متداولة، ITestSuite ليس سوى اختبارًا آخر. إنه أمر معقد واحد ولكنه لا يزال مجرد اختبار مثل أي IRemoteTest آخر. لذلك، عند تحديد أداة تنفيذ السلسلة في إعدادات Tradefed، تتّبع Tradefed النمط المعتاد للإعداد: تشغيل build_provider وtarget_preparer واختبار (السلسلة في هذه الحالة) وtarget_cleaner.

هذا التسلسل في تهيئة مقايضة يحتوي على 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" />

وتحدد هذه البيانات الوصفية أنه يجب تنفيذ الوحدة بطريقة مختلفة mode، كتطبيق فوري، بدلاً من وضع التطبيق العادي.

يتم توضيح جميع الأوضاع أو المعلمات المحتملة من خلال ModuleParameters ولديها معالج مرتبط بها في ModuleParametersHelper التي تتيح لك تغيير إعداد الوحدة لتنفيذها في الوضع المحدد.

على سبيل المثال، يفرض وضع التطبيق الفوري تثبيت APK على أنه تطبيق فوري. الحالي.

لكي تتمّ عملية وضع المَعلمات، يجب أن يفعّلها سطر الأوامر باستخدام:

--enable-parameterized-modules

من الممكن أيضًا تشغيل وضع معيّن باستخدام:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

عند تشغيل إصدار بمعلمة من وحدة ما، فإنه يعرض نتائجه ضمن اسم وحدة بمعلمة، على سبيل المثال CtsGestureTestCases[instant] مقابل الأساس CtsGestureTestCases.