टेस्ट को अपने-आप फिर से चलाना

टेस्ट किसी भी वजह से फ़ेल हो सकता है. कभी-कभी, टेस्ट को फिर से चलाने से ही वह पास हो जाता है. ऐसा इसलिए होता है, क्योंकि टेस्ट में कुछ समय के लिए गड़बड़ी हो सकती है. जैसे, बुनियादी ढांचे से जुड़ी समस्याओं की वजह से. Tradefed को इस तरह कॉन्फ़िगर किया जा सकता है कि वह जांच को अपने-आप फिर से शुरू कर दे.

ऑटो-रीट्राय की मुख्य सुविधा यह है कि इससे सभी टेस्ट को फिर से चलाने से बचा जा सकता है. यह सिर्फ़ उन टेस्ट को फिर से चलाता है जो पूरे नहीं हुए हैं. इससे टेस्ट पूरे होने में लगने वाले समय की काफ़ी बचत होती है.

Tradefed में, iterations सुविधा का इस्तेमाल करके, टेस्ट को कई बार चलाया जा सकता है. इससे यह पता लगाया जा सकता है कि टेस्ट में गड़बड़ी तो नहीं हो रही है. इस मामले में, सभी टेस्ट फिर से चलाए जाएंगे. अगर कोई भी इटरेशन पूरा नहीं होता है, तो टेस्ट पूरा नहीं होगा.

अपने-आप फिर से कोशिश करने की सुविधा चालू करना

अपने-आप फिर से कोशिश करने की सुविधा को 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

नतीजे कैसे दिखते हैं?

नतीजे की जानकारी देने वाले लोगों को डिफ़ॉल्ट रूप से, सभी कोशिशों के कुल नतीजे मिलेंगे.

उदाहरण के लिए: RETRY_ANY_FAILURE के लिए Fail और Pass का नतीजा, एग्रीगेट किया गया Pass होगा. ऐसा इसलिए, क्योंकि फिर से कोशिश करने पर गड़बड़ी ठीक हो गई.

रिपोर्टर को, एग्रीगेट न किए गए नतीजे मिल सकते हैं. इसके लिए, उन्हें ISupportGranularResults इंटरफ़ेस को बढ़ाना होगा. इससे यह पता चलता है कि यह इंटरफ़ेस, एग्रीगेट नहीं किए गए नतीजों के साथ काम करता है.

लागू करने से जुड़ी जानकारी

टेस्ट केस के लेवल पर फ़ेल हुए टेस्ट को फिर से चलाने के लिए, अपने-आप फिर से कोशिश करने की सुविधा चालू करने के लिए, ITestFilterReceiver लागू करें.

अगर ITestFilterReceiver को लागू नहीं किया जा सकता, तो IAutoRetriableTest को लागू करें. इससे, यह मैन्युअल तरीके से कंट्रोल किया जा सकेगा कि फिर से टेस्ट कैसे चलाया जाए. InstalledInstrumentationsTest, उस इंटरफ़ेस को लागू करने का एक उदाहरण है.