يميل الجناح إلى تضمين عدة وحدات اختبار ويمكن أن يصل إلى حجم ملف اختبار كبير جدًا. على سبيل المثال، تتضمن مجموعة أدوات اختبار التوافق مع Android (CTS) مئات الوحدات ومئات الآلاف من حالات الاختبار.
ويصبح من الممكن أن يتعذّر اجتياز عدد كبير من الاختبارات بسبب ضعف العزل أو وضع الأجهزة في حالة سيئة.
وتهدف ميزة إعادة المحاولة من داخل الحزمة إلى معالجة هذه الحالات: فهي تتيح لك إعادة محاولة الإخفاق فقط بدلاً من الحزم الكاملة لاستبعاد الضعف والعزلة السيئة. إذا تعذّر إجراء اختبار بشكلٍ متكرّر، ستتعذّر إعادة المحاولة أيضًا، وتلقّى إشارة أقوى بكثير بأنّ هناك مشكلة حقيقية.
تنفيذ إعادة محاولة تنفيذ المجموعة
تتضمن إعادة محاولة الحصول على النتائج قراءة النتائج السابقة وإعادة تنفيذ الطلب السابق.
الواجهة الرئيسية التي تُجري إعادة المحاولة هي ITestSuiteResultLoader
،
التي تتيح لك تحميل نتيجة سابقة وسطر الأوامر السابق.
بعد ذلك، يستخدم RetryRescheduler
هذه المعلومات لإعادة إنشاء الأمر السابق وملء بعض
الفلاتر من أجل إعادة تشغيل حالات الفشل السابقة أو الاختبارات التي لم يتم تنفيذها فقط.
مثال على إعادة محاولة مجموعة الاختبار: CTS
إعدادات إعادة المحاولة في CTS هي:
<configuration description="Runs a retry of a previous CTS session.">
<object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
<test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level-display" value="WARN" />
</logger>
</configuration>
ينطبق ذلك على معظم البرامج التي تعمل على توسيع نطاقه، على سبيل المثال VTS.
سيتمّ استدعاؤه باستخدام:
cts-tradefed run retry --retry <session>
يمكن العثور على الجلسة من خلال إدراج النتائج السابقة في وحدة تحكّم CTS:
cts-tf > l r
Session Pass Fail Modules Complete Result Directory Test Plan Device serial(s) Build ID Product
0 2092 30 148 of 999 2018.10.29_14.12.57 cts [serial] P Pixel
ستتم إعادة تحميل الأمر الأصلي بالضبط وإعادة تشغيله باستخدام فلاتر إضافية. هذا يعني أنه إذا تضمن الأمر الأصلي بعض الخيارات، فإنها أيضًا جزء من إعادة المحاولة.
مثلاً:
cts-tradefed run cts-dev -m CtsGestureTestCases
إنّ إعادة محاولة تنفيذ ما سبق مرتبطة دائمًا بـ CtsGestureTestCases
لأنّنا نعيد محاولة تنفيذ أمر يتضمنه فقط.
إعداد إعادة المحاولة لمجموعة بنمط CTS
لكي تنجح إعادة المحاولة، يجب تصدير النتائج السابقة بتنسيق proto. يجب إضافة ما يلي:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
يجب إضافة هذا الإجراء إلى إعدادات XML للأمر الرئيسي، ويؤدي ذلك إلى
إنشاء ملف test-record.pb
في مجلد النتائج.
تحاول CTS بعد ذلك تحميل البيانات من مزيج من test-record.pb
وtest_result.xml
الحالي لإعداد استدعاء إعادة المحاولة.