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

قد يتعذّر إجراء اختبار لأي سبب، وفي بعض الأحيان، تكون إعادة تشغيل الاختبار كافية لإنجاحه مرة أخرى (بسبب عدم الاستقرار، مثل المشاكل في البنية الأساسية). يمكنك ضبط 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 هي مثال على تنفيذ هذه الواجهة.