تميل المجموعة إلى تضمين عدّة وحدات اختبار ويمكن أن يصل حجم مجموعة الاختبارات إلى حجم كبير جدًا. على سبيل المثال، تتضمّن مجموعة أدوات اختبار التوافق (CTS) لنظام التشغيل Android مئات الوحدات ومئات الآلاف من حالات الاختبار.
وقد يؤدي ذلك إلى تعذّر إجراء عدد كبير من الاختبارات بسبب ضعف العزل أو انتقال الأجهزة إلى حالة غير جيدة.
تهدف ميزة إعادة محاولة تنفيذ الحزمة إلى معالجة هذه الحالات، إذ تتيح لك إعادة محاولة تنفيذ حالات الفشل فقط بدلاً من الحِزم الكاملة، وذلك لاستبعاد حالات عدم الاستقرار والعزل غير الجيد. إذا تعذّر إجراء اختبار بشكل متكرر، ستتعذّر إعادة المحاولة أيضًا، وستتلقّى إشارة أقوى بكثير إلى وجود مشكلة حقيقية.
تنفيذ إعادة محاولة الحزمة
تتضمّن إعادة محاولة الحصول على النتائج قراءة النتائج السابقة وإعادة تنفيذ الاستدعاء السابق.
الواجهة الرئيسية التي تدفع إلى إعادة المحاولة هي 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
في مجلد النتائج.
بعد ذلك، يتم تحميل البيانات من مزيج من test-record.pb
وtest_result.xml
الحاليَّين لإعداد عملية إعادة المحاولة.