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

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

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

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

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

يتم التحكّم في إعادة المحاولة التلقائية من خلال عنصر RetryDecision الذي يقدّم خيارَين لتفعيل الميزة: 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

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

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

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

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

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

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

إذا لم تتمكّن من تنفيذ ITestFilterReceiver، يمكنك تنفيذ IAutoRetriableTest للتحكّم يدويًا في كيفية عمل إعادة التشغيل. InstalledInstrumentationsTest هو مثال على تنفيذ هذه الواجهة.