استخدام ميزة إعادة محاولة المجموعة

تميل المجموعة إلى تضمين عدّة وحدات اختبار ويمكن أن يصل حجم مجموعة الاختبارات إلى حجم كبير جدًا. على سبيل المثال، تتضمّن مجموعة أدوات اختبار التوافق (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 الحاليَّين لإعداد عملية إعادة المحاولة.