عادةً ما تتضمّن المجموعة عدة وحدات اختبار ويمكن أن تصل إلى مجموعة كبيرة جدًا من الأجهزة الاختبارية. على سبيل المثال، تتضمّن مجموعة اختبار التوافق مع 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
ولكي تنجح إعادة المحاولة، يلزم تصدير النتائج السابقة بتنسيق النموذج الأوّلي. يجب إضافة ما يلي:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
يجب إضافة هذا الإجراء إلى إعدادات XML للأمر الرئيسي، ويؤدي ذلك إلى
إنشاء ملف test-record.pb
في مجلد النتائج.
بعد ذلك، تحمِّل عملية إعادة المحاولة في CTS البيانات من مجموعة من test-record.pb
و
test_result.xml
الحالية لإعداد طلب إعادة المحاولة.