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