إعادة محاولة الاختبار التلقائي

قد يتعذّر اجتياز الاختبار لأي سبب، وفي بعض الأحيان يكفي إعادة إجراء الاختبار للاجتياز مرة أخرى (بسبب عدم الثبات، مثل المشاكل في البنية الأساسية ). يمكنك ضبط Tradefed لإجراء إعادة المحاولة تلقائيًا.

يهدف إعادة المحاولة التلقائية إلى تجنُّب إعادة تشغيل جميع الاختبارات، بل تعيد تشغيل الاختبارات التي تعذّر إكمالها فقط، ما يؤدي إلى توفير كبير في وقت التنفيذ.

يتيح Tradefed أيضًا إجراء الاختبارات عدة مرات لرصد المشاكل المفاجئة من خلال ميزة التكرارات. في هذه الحالة، سيتم إعادة إجراء جميع الاختبارات، ولن يجتاز الاختبار أيًّا من التكرارات.

تفعيل إعادة المحاولة التلقائية

يتم التحكّم في إعادة المحاولة التلقائية عن طريق كائن renameDecision الذي يوفّر خيارَين لتفعيل الميزة: max-testcase-run-count وretry-strategy.

تؤدي الدالة max-testcase-run-count إلى زيادة عدد مرات إعادة المحاولة أو التكرارات التي ستتم محاولة تنفيذها. ويحدّد حدًا أقصى لتجنّب إعادة المحاولة إلى الأبد. retry-strategy يحدّد كيفية إعادة المحاولة. يُرجى الاطّلاع على الأقسام التالية لمزيد من التفاصيل.

إيقاف ميزة إعادة المحاولة التلقائية

استخدِم الخيار التالي:

--retry-strategy NO_RETRY

حالات تعذُّر إعادة المحاولة

لإعادة محاولة إجراء الاختبارات التي لم يتم اجتيازها، استخدِم الخيارات التالية:

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

سيؤدي ذلك إلى إعادة محاولة تنفيذ الإجراء الذي تعذّر تنفيذه إلى أن يتم تنفيذه أو إلى أن يتمّ بلوغ الحدّ الأقصى لعدد مرّات إعادة المحاولة، أيّهما أقرب.

التكرارات

لإعادة إجراء الاختبارات لعدد من المرات، يمكن استخدام الخيارات التالية:

--retry-strategy ITERATIONS --max-testcase-run-count X

كيف تبدو النتائج؟

سيتلقّى مراسلو النتائج تلقائيًا نتائج مجمّعة لكل المحاولات.

على سبيل المثال، ستؤدي إعادة المحاولة إلى قيمة Pass مجمّعة للسمة Fail وPass لـ RETRY_ANY_FAILURE، لأنّ إعادة المحاولة نجحت في محو الإخفاق.

من الممكن أن يتلقّى مُرسِلو البلاغات النتائج غير المجمّعة. لإجراء ذلك، يجب تمديد واجهة ISupportGranularResults التي تعلن عن توفّر النتائج الدقيقة (غير المجمّعة).

تفاصيل التنفيذ

لتفعيل ميزة إعادة المحاولة التلقائية لعمليات الإخفاق على مستوى تجربة الاختبار، نفِّذ ITestFilterReceiver.

إذا لم تتمكّن من تنفيذ ITestFilterReceiver، يمكنك تطبيق IAutoRetriableTest للتحكّم يدويًا في طريقة إجراء عملية إعادة التشغيل. ومن الأمثلة على ذلك تنفيذ هذه الواجهة، InstallinstrumentationsTest.