मैंने 25 साल पहले अधिकांश टेस्टिंग कंप्यूटर सॉफ्टवेयर लिखे थे। मैंने तब से किताब के कई हिस्सों की ओर इशारा किया है जिन्हें मैं पुराना मानता हूं, या बस गलत है। Http://www.kaner.com/pdfs/TheOngoingRevolution.pdf देखें
आप ब्लैक बॉक्स सॉफ्टवेयर टेस्टिंग कोर्स (मुफ्त में उपलब्ध वीडियो और स्लाइड्स), www.testingeducation.org/BBST के लिए मेरी साइट पर अधिक (वर्तमान दृश्य, लेकिन TCS पर स्पष्ट संकेत के बिना) देख सकते हैं
परीक्षण संस्कृति वापस तो बड़े पैमाने पर पुष्टि की गई थी।
आधुनिक परीक्षण में, इकाई परीक्षण के लिए दृष्टिकोण काफी हद तक पुष्टिकारक है - हम स्वचालित परीक्षणों के बड़े संग्रह लिखते हैं जो केवल यह सत्यापित करते हैं कि सॉफ़्टवेयर अभी भी प्रदर्शन करना जारी है। परीक्षण परिवर्तन डिटेक्टरों के रूप में कार्य करते हैं - यदि कोड के अन्य भागों में कुछ और इस भाग में अब समस्याएं हैं, या यदि डेटा मान जो वास्तविक दुनिया में असंभव हुआ करते थे, अब आवेदन तक पहुंच रहे हैं, तो परिवर्तन डिटेक्टर आग लगाते हैं, अलर्ट एक रखरखाव समस्या के लिए प्रोग्रामर।
मुझे लगता है कि इकाई परीक्षण के लिए पुष्टिकरण मानसिकता उपयुक्त है, लेकिन एक ऐसी दुनिया की कल्पना करें जिसमें सिस्टम परीक्षण का सभी पुष्टिकरण था (उन लोगों के लिए जो एक अंतर बनाते हैं, कृपया "सिस्टम एकीकरण परीक्षण" और "स्वीकृति परीक्षण" की व्याख्या करें जैसा कि सिस्टम पर मेरी टिप्पणियों में शामिल है। परीक्षण।) परीक्षण का बिंदु यह पुष्टि करने के लिए था कि कार्यक्रम अपने विनिर्देशों को पूरा करता है और प्रमुख दृष्टिकोण एक बिलियन (या कम से कम कुछ सौ) सिस्टम-स्तरीय प्रतिगमन परीक्षणों का निर्माण करना था जो कार्यक्रम के व्यवहार के लिए कल्पना के कुछ हिस्सों को मैप करते थे। (मुझे लगता है कि युक्ति से व्यवहार की पुष्टि उपयोगी है, लेकिन मुझे लगता है कि यह एक बड़े उद्देश्य का एक छोटा सा हिस्सा है।)
अभी भी परीक्षण समूह हैं जो इस तरह से काम करते हैं, लेकिन यह अब प्रमुख दृष्टिकोण नहीं है। वापस तो, यह था मैंने सशक्त ढंग से लिखा और उन लोगों के लिए एक बिंदु बनाने के लिए तेज विरोधाभासों को आकर्षित किया जो लगातार इस मानसिकता में प्रशिक्षित थे। आज, कुछ तीखे विरोधाभास (यहाँ उद्धृत सहित) पुराने हैं। गलत विचारों पर हमले के रूप में वे गलत व्याख्या करते हैं।
जैसा कि मैं इसे देखता हूं, सॉफ्टवेयर परीक्षण एक सॉफ्टवेयर उत्पाद या सेवा के बारे में गुणवत्ता से संबंधित जानकारी सीखने के लिए एक अनुभवजन्य प्रक्रिया है।
उपयोगी जानकारी प्रकट करने के लिए एक परीक्षण डिजाइन किया जाना चाहिए।
फिर, वैसे, किसी ने "जानकारी" प्रकट करने के लिए एक विधि के रूप में परीक्षण के बारे में बात नहीं की। इसके बाद, परीक्षण या तो (कुछ संस्करण के लिए ...) बग ढूंढ रहा था या (कुछ संस्करण ...) विनिर्देशों के विरुद्ध कार्यक्रम का सत्यापन (जाँच) कर रहा था। मुझे नहीं लगता है कि उपयोगी जानकारी प्रकट करने के लिए परीक्षण करने वाले दावे इस शताब्दी तक परीक्षण शब्दावली में आए थे।
उनके सूचना मूल्य के संदर्भ में रेटिंग परीक्षणों की कल्पना करें। एक परीक्षण जो हमें बहुत कुछ सिखाने की संभावना है जो हम सॉफ़्टवेयर के बारे में नहीं जानते हैं, बहुत अधिक जानकारी मूल्य होगा। एक परीक्षण जो कुछ ऐसी चीज़ों की पुष्टि करने की संभावना है जो हम पहले से ही उम्मीद करते हैं और जो पहले से ही कई बार पहले ही प्रदर्शित हो चुके हैं, कम सूचना मूल्य होगा। परीक्षणों को प्राथमिकता देने का एक तरीका कम सूचना मूल्य परीक्षणों से पहले उच्च सूचना मूल्य परीक्षण चलाना है।
अगर मैं इस प्राथमिकता की देखरेख करता, ताकि यह एक प्रोग्रामर, प्रोजेक्ट मैनेजर, या प्रोसेस मैनेजर का ध्यान आकर्षित करे, जो सॉफ्टवेयर टेस्टिंग के बारे में स्पष्ट है, तो मैं कहूंगा कि "ए टेस्ट थॉट नॉट डिजाईन टू बी रेग्यूड ए बुग इज अ वेट ऑफ़ टाइम" । " यह एक सटीक अनुवाद नहीं है, लेकिन पाठकों के लिए जो किसी भी सूक्ष्मता या योग्यता को समझ नहीं सकते हैं या नहीं समझ पाएंगे, यह उतना ही करीब है जितना कि यह मिलने वाला है।
फिर वापस, और मैं इसे फिर से यहाँ देखता हूं, कुछ लोग जो परीक्षण नहीं समझते हैं, वे जवाब देंगे कि कोने के मामलों को खोजने के लिए डिज़ाइन किया गया परीक्षण एक प्रमुख फ़ंक्शन के एक प्रमुख परीक्षण की तुलना में समय की बर्बादी है। वे दो चीजों को नहीं समझते। सबसे पहले, जब तक परीक्षक सीमा मानों की जांच करने के लिए समय पाते हैं, तब तक प्रमुख कार्यों के प्रमुख उपयोग पहले ही कई बार किए जा चुके हैं। (हां, अपवाद हैं, और अधिकांश परीक्षण समूह उन अपवादों पर सावधानीपूर्वक ध्यान देंगे।) दूसरा, चरम मूल्यों के साथ परीक्षण करने का कारण यह है कि कार्यक्रम अत्यधिक मूल्यों के साथ विफल होने की अधिक संभावना है। यदि यह चरम पर विफल नहीं होता है, तो आप कुछ और परीक्षण करते हैं। यह एक कुशल नियम है। दूसरी ओर, यदि यह अत्यधिक मूल्य पर विफल रहता है, तो परीक्षक रुक सकता है और बग की सूचना दे सकता है या परीक्षक आगे पीछे हो सकता है, यह देखने के लिए कि क्या प्रोग्राम सामान्य तरीकों से उसी तरह विफल रहता है। कौन समस्या निवारण (परीक्षक या प्रोग्रामर) कॉर्पोरेट संस्कृति का विषय है। कुछ कंपनियां इसके लिए परीक्षक के समय का बजट रखती हैं, कुछ प्रोग्रामर बजट करते हैं, और कुछ उम्मीद करते हैं कि प्रोग्रामर कॉर्नर केस बग्स को ठीक कर पाएंगे कि क्या वे सामान्य हैं या नहीं ताकि समस्या निवारण प्रासंगिक न हो। आम गलतफहमी - कि परीक्षक अत्यधिक मूल्यों का परीक्षण करके समय (दक्षता को अधिकतम करने के बजाय) बर्बाद कर रहे हैं, एक और कारण है कि "एक बग को प्रकट करने के लिए डिज़ाइन नहीं किया गया एक परीक्षण समय की बर्बादी है" परीक्षकों के लिए एक उपयुक्त संदेश है। यह कुछ प्रोग्रामर से प्रोत्साहन के लिए प्रतिवाद है (प्रभाव में) कभी भी परीक्षण नहीं चलाते हैं जो कार्यक्रम को चुनौती दे सकते हैं। संदेश की देखरेख की जाती है, लेकिन संपूर्ण चर्चा की देखरेख की जाती है।
वैसे, "सूचना मूल्य" केवल प्राथमिकता प्रणाली नहीं हो सकती है। यह मेरा नियम नहीं है जब मैं इकाई परीक्षण डिजाइन करता हूं। जब मैं सत्यापन परीक्षण (उर्फ स्वच्छता जांच) का निर्माण करता हूं तो यह मेरा नियम नहीं है। उन दोनों मामलों में, मुझे व्यक्तिगत परीक्षणों की शक्ति की तुलना में कवरेज के प्रकारों में अधिक दिलचस्पी है। ऐसे अन्य मामले हैं (उदाहरण के लिए उच्च-मात्रा वाले स्वचालित परीक्षण जो स्थापित करने, चलाने और मॉनिटर करने के लिए सस्ते हैं) जहां व्यक्तिगत परीक्षणों की शक्ति मेरे डिजाइन के लिए अप्रासंगिक है। मुझे यकीन है कि आप अतिरिक्त उदाहरणों के बारे में सोच सकते हैं।
लेकिन एक सामान्य नियम के रूप में, यदि मैं केवल एक नियम (उदाहरण के लिए एक कार्यकारी से बात कर सकता हूं जिसका सिर फट जाता है यदि वह एक से अधिक वाक्यों को संसाधित करने की कोशिश करता है), तो यह होगा कि कम सूचना-मूल्य परीक्षण आमतौर पर समय की बर्बादी है।