दोनों।
नियतात्मक और nondeterministic परीक्षणों में आपके सूट के लिए अलग-अलग उपयोग के मामले और विभिन्न मूल्य हैं। आमतौर पर नॉन्डेटेरिमिनिस्टिक नियतात्मक परीक्षण के समान सटीकता प्रदान नहीं कर सकता है, जो धीरे-धीरे "नॉन्डेटेरमिनिस्टिक परीक्षण में कोई मूल्य नहीं प्रदान करता है।" यह गलत है। वे कम सटीक हो सकते हैं, लेकिन वे बहुत व्यापक भी हो सकते हैं, जिनके अपने फायदे हैं।
एक उदाहरण लेते हैं: आप एक फ़ंक्शन लिखते हैं जो पूर्णांकों की सूची को सॉर्ट करता है। नियतात्मक इकाई परीक्षणों में से कुछ क्या होगा जो आप उपयोगी पाएंगे?
- एक खाली सूची
- सिर्फ एक तत्व के साथ एक सूची
- एक ही तत्व के सभी के साथ एक सूची
- एकाधिक अद्वितीय तत्वों के साथ एक सूची
- कई तत्वों के साथ एक सूची, जिनमें से कुछ डुप्लिकेट हैं
- एक सूची के साथ
NaN
, INT_MIN
औरINT_MAX
- एक सूची जो पहले से ही आंशिक रूप से क्रमबद्ध है
- 10,000,000 तत्वों के साथ एक सूची
और यह सिर्फ एक छँटाई समारोह है! यकीन है, आप तर्क दे सकते हैं कि इनमें से कुछ अनावश्यक हैं, या इनमें से कुछ को अनौपचारिक तर्क के साथ खारिज किया जा सकता है। लेकिन हम इंजीनियर हैं और हमने अनौपचारिक तर्क को हमारे चेहरे पर उड़ाने के लिए देखा है। हम जानते हैं कि हम अपने द्वारा बनाए गए सिस्टम को पूरी तरह से समझने या अपने सिर में जटिलता को पूरी तरह से रखने के लिए पर्याप्त स्मार्ट नहीं हैं। इसलिए हम पहले स्थान पर परीक्षण लिखते हैं। Nondeterministic टेस्टिंग जोड़ना सिर्फ यह कहता है कि हम सभी अच्छे टेस्ट को प्राथमिकता देने के लिए आवश्यक रूप से स्मार्ट नहीं हो सकते हैं। अपने फ़ंक्शन में अर्ध-यादृच्छिक डेटा फेंकने से, आपके द्वारा याद किए गए किनारे के मामले को खोजने की अधिक संभावना है।
बेशक, यह नियतात्मक परीक्षण से भी इंकार नहीं करता है। Nondeterministic परीक्षण कार्यक्रम के विशाल स्वाथों में कीड़े खोजने में मदद करता है। एक बार जब आप बग पा लेते हैं, हालांकि, आपको यह दिखाने के लिए एक प्रतिलिपि प्रस्तुत करने योग्य तरीका चाहिए। इसलिए:
- अपने कोड में बग ढूंढने के लिए nondeterministic परीक्षण का उपयोग करें ।
- अपने कोड में सुधारों को सत्यापित करने के लिए निर्धारक परीक्षणों का उपयोग करें ।
ध्यान दें कि इसका मतलब है इकाई परीक्षणों के बारे में बहुत सी ठोस सलाह जरूरी नहीं कि वे nondeterministic परीक्षण पर लागू हों। उदाहरण के लिए, कि वे तेज होना चाहिए। निम्न-स्तरीय संपत्ति परीक्षण तेज़ होना चाहिए, लेकिन "उपयोगकर्ता द्वारा आपकी वेबसाइट पर बेतरतीब ढंग से क्लिक किए गए बटन का अनुकरण करना और सुनिश्चित करें कि आपको कभी भी 500 त्रुटि प्राप्त न हो" जैसे एक nondeterministic परीक्षण को गति पर व्यापकता का पक्ष लेना चाहिए। बस एक परीक्षण है कि अपनी निर्माण प्रक्रिया के स्वतंत्र रूप से चलाएं ताकि यह विकास धीमा न हो। उदाहरण के लिए, इसे अपने निजी स्टेजिंग बॉक्स पर चलाएं।