मैंने पाया कि मेरे बहुत से कम्प्यूटेशनल विज्ञान प्रोग्रामिंग में परीक्षण की आवश्यकताएं हैं जो मानक परीक्षण ढांचे द्वारा कवर नहीं की जाती हैं:
अभिकलन समय परीक्षण
- यह सुनिश्चित करने के लिए कि एल्गोरिदम धीमा नहीं पड़ता है। मैं ऐसा कुछ कर सकता था,
assureSmallerEqual(RuntimeWrapper(algorithm),53)
लेकिन मैं चाहूंगा कि 53 सेकंड की सीमा को लगातार कम किया जाए क्योंकि मैं एल्गोरिथ्म पर काम कर रहा हूं, जैसे कि कुछassureSmallerEqual(RuntimeWrapper(algorithm),'previousbest+noisetolerance')
- यह सुनिश्चित करने के लिए कि एल्गोरिदम धीमा नहीं पड़ता है। मैं ऐसा कुछ कर सकता था,
प्रदर्शन का परीक्षण
- यह सुनिश्चित करने के लिए कि एक एल्गोरिथ्म जो पहले एक विश्लेषणात्मक समाधान के लिए एक अच्छा सन्निकटन पाया था, अभी भी एक ऐसा समाधान ढूंढता है जो कम से कम अच्छा या बेहतर हो। फिर, यह एक मानक एकीकरण परीक्षण द्वारा अनुकरण किया जा सकता है, लेकिन मैं सहिष्णुता के लिए लगातार हटना चाहूंगा क्योंकि एल्गोरिथ्म बेहतर और बेहतर हो जाता है।
assureAlmostEqual(foo(),1,places=3)
द्वारा प्रतिस्थापित करने के बारे में सोचेंassureAlmostEqual(foo(),1,places='previousbest')
- यह सुनिश्चित करने के लिए कि एक एल्गोरिथ्म जो पहले एक विश्लेषणात्मक समाधान के लिए एक अच्छा सन्निकटन पाया था, अभी भी एक ऐसा समाधान ढूंढता है जो कम से कम अच्छा या बेहतर हो। फिर, यह एक मानक एकीकरण परीक्षण द्वारा अनुकरण किया जा सकता है, लेकिन मैं सहिष्णुता के लिए लगातार हटना चाहूंगा क्योंकि एल्गोरिथ्म बेहतर और बेहतर हो जाता है।
शारीरिक आवश्यकताओं का परीक्षण
- यह सुनिश्चित करने के लिए कि एल्गोरिदम को अचानक अधिक मेमोरी / हार्ड डिस्क स्थान की आवश्यकता नहीं है। 1 के समान।
सार आवश्यकताओं का परीक्षण
- यह सुनिश्चित करने के लिए कि एक एल्गोरिथ्म जिसने द्विघात अनुमानों के साथ ठीक किया था, उसे अचानक क्यूबिक सन्निकटन की आवश्यकता नहीं है, या यह कि एल्गोरिथ्म समय-चरण 0.1 के साथ ठीक किया गया था, अचानक स्थिरता के लिए 0.01 की आवश्यकता नहीं है। फिर, इन्हें मानक एकीकरण परीक्षणों द्वारा अनुकरण किया जा सकता है, लेकिन लक्ष्य यह याद रखना है कि सबसे छोटी आवश्यकता पैरामीटर क्या था जो एक निश्चित लक्ष्य प्राप्त करता है, इसलिए इसके लिए बहुत अधिक मैनुअल अपडेट की आवश्यकता होगी। उदाहरण के लिए, यदि
foo(10)
पहले कोई अपवाद नहीं था, तो मैं यह सुनिश्चित करना चाहता हूं कि फ्रेमवर्कfoo(10)
अभी भी काम करता है और यह भी प्रयास करें कि क्याfoo(9)
अब काम करता है (जिस स्थिति में भविष्य के सभी परीक्षणfoo(9)
अभी भी काम करना सुनिश्चित करेंगे )।
- यह सुनिश्चित करने के लिए कि एक एल्गोरिथ्म जिसने द्विघात अनुमानों के साथ ठीक किया था, उसे अचानक क्यूबिक सन्निकटन की आवश्यकता नहीं है, या यह कि एल्गोरिथ्म समय-चरण 0.1 के साथ ठीक किया गया था, अचानक स्थिरता के लिए 0.01 की आवश्यकता नहीं है। फिर, इन्हें मानक एकीकरण परीक्षणों द्वारा अनुकरण किया जा सकता है, लेकिन लक्ष्य यह याद रखना है कि सबसे छोटी आवश्यकता पैरामीटर क्या था जो एक निश्चित लक्ष्य प्राप्त करता है, इसलिए इसके लिए बहुत अधिक मैनुअल अपडेट की आवश्यकता होगी। उदाहरण के लिए, यदि
कोई यह तर्क दे सकता है कि मैं जो कुछ भी पूछ रहा हूं वह यूनिट / एकीकरण परीक्षण के अर्थ में परीक्षणों का वर्णन नहीं करता है, क्योंकि बढ़े हुए रनटाइम्स, उदाहरण के लिए, अन्य सुधारों के बदले में स्वीकार्य हो सकते हैं।
व्यवहार में, हालांकि, मुझे पता है कि अगर मैं ऊपर परीक्षण कार्यक्षमता थी, तो मैं बहुत डिबगिंग समय बचा सकता था, क्योंकि 95% मामलों में आवश्यकताओं और प्रदर्शन की गड़बड़ी के कारण मैं परेशान हो गया था। वास्तव में, मैं एक तथ्य के लिए जानता हूं कि बाहरी संख्यात्मक सॉफ्टवेयर पुस्तकालयों के साथ मुझे मिलने वाले बहुत सारे कीड़े (अपने स्वयं के कोड की जांच करने पर बहुत समय बर्बाद होने के बाद) तुच्छ रूप से बचा जा सकता था ऊपर दिए गए परीक्षणों को कठोरता से लागू किया गया था।
पुनश्च
इसी प्रकार का नाम /programming/34982863/framework-for-regression-testing-of-numerical-code डुप्लिकेट नहीं है क्योंकि यह कार्यक्षमता का वर्णन करता है जो मानक प्रतिगमन परीक्षण रूपरेखाओं से अधिक आसानी से प्राप्त होता है।
प्रश्न इकाई परीक्षण और परीक्षण चालित विकास के लिए रणनीति के रूप में एक रूपरेखा में मदद करता है कि उन्हें लागू करने (और रणनीतियों / के लिए यह पूछता है कि जवाब में प्रदान की जाती हैं मैं यहाँ क्या वर्णन है, मेरी राय से अलग होते हैं) का विरोध करने की रणनीतियों के लिए पूछता है।