Trade Federation का इस्तेमाल करके चलाए गए टेस्ट के लाइफ़साइकल में चार अलग-अलग चरण होते हैं. इन्हें, आधिकारिक तौर पर तय किए गए इंटरफ़ेस के हिसाब से डिज़ाइन किया गया है.
तय किए गए इंटरफ़ेस
- बिल्ड उपलब्ध कराने वाला: टेस्ट करने के लिए बिल्ड उपलब्ध कराता है. साथ ही, ज़रूरत पड़ने पर सही फ़ाइलें डाउनलोड करता है.
- टारगेट तैयार करने वाला टूल: यह टेस्टिंग एनवायरमेंट तैयार करता है. इसमें सॉफ़्टवेयर इंस्टॉलेशन और डिवाइस कॉन्फ़िगरेशन शामिल हो सकता है.
- टेस्ट: टेस्ट चलाता है और टेस्ट के नतीजे इकट्ठा करता है. यह कोई भी JUnit टेस्ट हो सकता है. हालांकि, हमारा IRemoteTest इंटरफ़ेस, खास तौर पर Trade Federation के एनवायरमेंट में बेहतर तरीके से काम करने के लिए डिज़ाइन किया गया है.
- टेस्ट को ट्रिगर करने वाला लिसनर (नतीजों की रिपोर्टिंग): आम तौर पर, टेस्ट के नतीजों को किसी रिपॉज़िटरी पर फ़ॉरवर्ड करने या टेस्ट रनर को दिखाने के लिए, टेस्ट के नतीजों को सुनता है.
TF में टेस्टिंग की बुनियादी इकाई, कॉन्फ़िगरेशन (config) है. कॉन्फ़िगरेशन एक एक्सएमएल फ़ाइल होती है, जिसमें किसी टेस्ट के लाइफ़साइकल कॉम्पोनेंट के बारे में जानकारी होती है.
टेस्ट के लाइफ़साइकल को अलग-अलग करने का मकसद, उसे फिर से इस्तेमाल करने की सुविधा देना है. इस डिज़ाइन का इस्तेमाल करके, डेवलपर एक बार टेस्ट बना सकता है. इसके बाद, इंटिग्रेटर अलग-अलग एनवायरमेंट में उस टेस्ट को चलाने के लिए अलग-अलग कॉन्फ़िगरेशन बना सकता है. उदाहरण के लिए, वे ऐसा कॉन्फ़िगरेशन बना सकते हैं जो किसी स्थानीय मशीन पर टेस्ट चलाएगा और नतीजे को स्टैंडर्ड आउटपुट (stdout) में डाल देगा. इसके बाद, वे एक दूसरा कॉन्फ़िगरेशन बना सकते हैं, जो उसी टेस्ट को चलाएगा. हालांकि, टेस्ट के नतीजों को डेटाबेस में सेव करने के लिए, वे किसी दूसरे टेस्ट इनवोकेशन लिसनर का इस्तेमाल करेंगे. तीसरे कॉन्फ़िगरेशन को इस तरह डिज़ाइन किया जा सकता है कि वह टेस्ट को किसी टेस्ट लैब से लगातार चलाता रहे.
यहां यह ध्यान रखना आसान है कि कॉन्फ़िगरेशन और उसके कमांड-लाइन आर्ग्युमेंट (जैसा कि टेस्ट रनर से मिलता है) को कमांड कहा जाता है. जब TF किसी कमांड को ITestDevice
के साथ जोड़ता है और उसे लागू करता है, तो उसके बाद के ऑब्जेक्ट को इंवोकेशन कहा जाता है.
कम शब्दों में, किसी इंवोकेशन में TF टेस्ट के पूरे लाइफ़साइकल के दौरान, टेस्ट को पूरा किया जाता है.
कॉन्फ़िगरेशन के अन्य कॉम्पोनेंट
- डिवाइस रिकवरी: डिवाइस खो जाने पर, उससे जुड़ी जानकारी वापस पाने का तरीका.
- लॉगर: यह ट्रैफ़िक डेटा को लॉग करने से जुड़ा डेटा इकट्ठा करता है.
स्टेज का आउटपुट और गड़बड़ियां
किसी फ़ंक्शन को कॉल करने का हर चरण क्रम से लागू होता है और इसका एक खास लक्ष्य होता है. इस सेक्शन में, हर चरण के सामान्य आउटपुट और गड़बड़ियों के बारे में बताया गया है.
सेवा देने वाली कंपनी
इस चरण में, एक IBuildInfo
ऑब्जेक्ट बनाया और आउटपुट किया जाता है. इसमें टेस्ट सेट अप करने और चलाने के लिए, सभी ज़रूरी फ़ाइलों के रेफ़रंस होते हैं.
इस चरण में सबसे आम गड़बड़ी, अनुरोध की गई फ़ाइलों को डाउनलोड या ढूंढने में होने वाली समस्या है.
इस चरण में कोई गड़बड़ी होने पर, गड़बड़ी की सीधे तौर पर शिकायत की जाती है और कोई भी टेस्ट नहीं किया जाता.
टारगेट तैयार करना
इस चरण में, टेस्ट किए जा रहे टारगेट के लिए ज़रूरी स्टेटस सेट अप किए जाते हैं. इस चरण में, दिए गए टेस्ट को शुरू करने के लिए, डिवाइस या होस्ट सेटअप में ज़रूरत के हिसाब से बदलाव किया जा सकता है.
इस चरण में आम तौर पर, डिवाइस को किसी तय स्थिति में सेटअप न कर पाना (उदाहरण के लिए, फ़्लैशिंग न हो पाना) और सेटअप के लिए ज़रूरी फ़ाइलें न मिलना जैसी गड़बड़ियां होती हैं.
इस चरण में कोई गड़बड़ी होने पर, टारगेट क्लीन अप चलता है, गड़बड़ी की रिपोर्टिंग होती है, और कोई भी टेस्ट नहीं चलता.
जाँचें
इस चरण में, पहले से तैयार किए गए टारगेट पर अनुरोध किए गए टेस्ट चलाए जाते हैं. साथ ही, टेस्ट के सभी नतीजों की रिपोर्ट दी जाती है.
इस चरण में आम तौर पर, टेस्ट में शामिल टारगेट उपलब्ध न होना या किसी ऐसी गड़बड़ी की वजह से टेस्ट का कुछ हिस्सा पूरा न होना शामिल है. ये गड़बड़ियां, इन्फ़्रास्ट्रक्चर से जुड़ी समस्याएं होती हैं. इनसे किसी एक टेस्ट केस के काम न करने के बजाय, टेस्ट को लागू करने पर असर पड़ता है.
इस चरण में कोई गड़बड़ी होने पर, टेस्ट का ट्रिगर होना बंद हो जाता है. साथ ही, टारगेट क्लीन अप चलता रहता है, गड़बड़ी की रिपोर्टिंग होती है, और कुछ ही नतीजे मिलते हैं.
नतीजों की रिपोर्टिंग
इस चरण में, कॉन्फ़िगर की गई सेवाओं (जैसे, सर्वर और लोकल फ़ाइलें) के नतीजों और गड़बड़ियों की रिपोर्ट दी जाती है.
अलग-अलग नतीजों की रिपोर्ट में गड़बड़ियां हो सकती हैं. हालांकि, ये गड़बड़ियां एक-दूसरे से अलग होती हैं. इसका मतलब है कि एक रिपोर्टर को दूसरे रिपोर्टर की गड़बड़ियां नहीं दिखती हैं. इन गड़बड़ियों का असर सिर्फ़ किसी एक व्यक्ति के नतीजों की रिपोर्टिंग पर पड़ता है. साथ ही, गड़बड़ियों को लॉग में देखा जा सकता है.