वहाँ एक परीक्षण एक बार से अधिक को चलाने के लिए एक कारण नहीं होना चाहिए 210 एक तरह से परीक्षण अपने आप में है। यह महत्वपूर्ण है कि आपके परीक्षण निर्धारक हैं (यानी कोडबेस के समान राज्य को देखते हुए, वे हमेशा एक ही परिणाम उत्पन्न करते हैं।) यदि यह मामला नहीं है, तो परीक्षणों को एक से अधिक बार चलाने की बजाय, आपको परीक्षणों को फिर से डिजाइन करना चाहिए और/या कोड ताकि वे हैं।
उदाहरण के लिए, एक कारण है कि परीक्षण रुक-रुक कर असफल परीक्षण और कोड-अंडर-परीक्षण (कट) के बीच एक दौड़ शर्त है। इस परिस्थिति में, एक निष्पक्ष प्रतिक्रिया परीक्षण में एक बड़ी 'वूडू नींद' जोड़ना है, 'सुनिश्चित करें' कि परीक्षण शुरू होने से पहले सीयूटी समाप्त हो गया है।
यह त्रुटियां उत्पन्न हो सकती है, हालांकि, क्योंकि अगर आपकी कट किसी भी कारण (underpowered हार्डवेयर, लोड बॉक्स, व्यस्त डेटाबेस, आदि) तो यह कई मायनों विफल हो जाएगी धीमी है। इस उदाहरण में एक बेहतर समाधान के लिए अपने परीक्षण एक घटना लिए प्रतीक्षा करें, बल्कि सो से अधिक है।
घटना आपके चयन के कुछ भी हो सकती है। कभी-कभी, जिन घटनाओं का आप उपयोग कर सकते हैं वे पहले से ही उत्पन्न हो रहे हैं (उदाहरण के लिए जावास्क्रिप्ट डोम इवेंट्स, 'पेजरेंडर्ड' प्रकार की घटनाएं जो सेलेनियम परीक्षण का उपयोग कर सकती हैं।) अन्य बार, आपके क्यूटी में कोड जोड़ने के लिए यह उचित हो सकता है जो एक उठाता है जब यह किया जाता है (शायद आपके आर्किटेक्चर में ऐसे अन्य घटक शामिल होते हैं जो इस तरह की घटनाओं में रूचि रखते हैं।)
हालांकि, आपको परीक्षण फिर से लिखना होगा जैसे कि यह पता लगाने की कोशिश करता है कि आपका कट निष्पादन समाप्त हो गया है या नहीं (उदाहरण के लिए आउटपुट फ़ाइल अभी तक मौजूद है?), और यदि नहीं, तो 50ms के लिए सोता है और फिर फिर से प्रयास करता है। आखिरकार यह समय समाप्त हो जाएगा और असफल हो जाएगा, लेकिन केवल बहुत लंबे समय के बाद ऐसा करें (उदाहरण के लिए आपके क्यूटी के अपेक्षित निष्पादन समय 100 गुना)
एक और तरीका 'प्याज/हेक्सागोनल/बंदरगाहों' का उपयोग करके अपने कट को डिजाइन करना है। एडाप्टर के सिद्धांत, जो आपके व्यापार तर्क को जोर देते हैं, सभी बाहरी निर्भरताओं से मुक्त होना चाहिए। इसका मतलब है कि आपके व्यापार तर्क का परीक्षण सादे पुराने उप-मिलीसेकंड यूनिट परीक्षणों का उपयोग करके किया जा सकता है, जो कभी भी नेटवर्क या फाइल सिस्टम को स्पर्श नहीं करता है। एक बार ऐसा करने के बाद, आपको बहुत कम एंड-टू-एंड सिस्टम परीक्षण की आवश्यकता होती है, क्योंकि वे अब एकीकरण परीक्षण के रूप में सेवा कर रहे हैं, और यूआई के माध्यम से आपके व्यवसाय तर्क के हर विवरण और किनारे के मामले में हेरफेर करने की आवश्यकता नहीं है । इस दृष्टिकोण से अन्य क्षेत्रों में बड़े लाभ भी मिलेंगे, जैसे उन्नत सीयूटी डिजाइन (घटकों के बीच निर्भरता को कम करना), परीक्षण लिखना बहुत आसान है, और पूरे टेस्ट सूट को चलाने के लिए लिया गया समय बहुत कम हो गया है।
उपरोक्त दृष्टिकोणों का उपयोग करके अविश्वसनीय परीक्षणों की समस्या को पूरी तरह से खत्म कर सकते हैं, और मैं केवल आपके परीक्षणों को सुधारने के लिए, बल्कि आपके कोडबेस और आपकी डिज़ाइन क्षमताओं को बेहतर बनाने के लिए ऐसा करने की अनुशंसा करता हूं।
यदि आप कहते हैं कि आप ऐसा क्यों करना चाहते हैं तो यह मदद कर सकता है। इसके अलावा, क्या 'एन' भिन्न होता है? यदि हां, तो आप इसे कैसे निर्दिष्ट करना चाहते हैं? (उदाहरण के लिए जब आप परीक्षण चलाते हैं तो कमांड लाइन पर?) क्यों कोई बैश नहीं? यह नौकरी के लिए एकदम सही प्रतीत होता है। –
मैंने प्रश्न में तर्क का विस्तार किया। – JohnJ