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