सीमा-मूल्य विश्लेषण
सीमा-मान विश्लेषण एक सॉफ्टवेयर परीक्षण विधि है जिसमें परीक्षणों को एक सीमा में सीमा मानों के प्रतिनिधियों को सम्मिलित करने के लिए डिज़ाइन किया गया है। यह अवधारणा सीमा (टोपोलॉजी) से आती है। यह देखते हुए कि हमारे पास सिस्टम का परीक्षण करने के लिए परीक्षण वेक्टर का सेट है, और उसी सेट पर टोपोलॉजी को परिभाषित किया जा सकता है। वे इनपुट जो समतुल्य विभाजन सिद्धांत द्वारा परिभाषित समान समतुल्य वर्ग से संबंधित हैं, वह आधार (टोपोलॉजी) का गठन करेंगे। यह देखते हुए कि आधार सेट पड़ोसी (गणित) हैं, उनके बीच एक सीमा उपस्थित होगी। सीमा के दोनों ओर के परीक्षण वैक्टर को सीमा मान कहा जाता है। व्यवहार में इसके लिए यह आवश्यक होगा कि परीक्षण वैक्टर का आदेश दिया जा सके, और यह कि व्यक्तिगत पैरामीटर किसी प्रकार के आदेश (या तो आंशिक आदेश या कुल आदेश) का पालन करते हैं।
औपचारिक परिभाषा
औपचारिक रूप से सीमा मानों को नीचे परिभाषित किया जा सकता है:
- मान ले कि परीक्षण वैक्टर का सेट X1,..., Xn है।
- मान लेते हैं कि उनके ऊपर ≤ के रूप में परिभाषित एक क्रम संबंध है।
- मान ले C1, C2 दो समकक्ष वर्ग हो।
- मान लें कि परीक्षण वेक्टर X1 ∈ C1 और X2 ∈ C2 है।
- यदि या तो कक्षाएं एक ही पड़ोस में हैं और मान सीमा मान हैं।
सरल अंग्रेजी में, समकक्ष विभाजन के न्यूनतम और अधिकतम किनारों पर मानों का परीक्षण किया जाता है। मान एक सॉफ्टवेयर घटक की इनपुट या आउटपुट रेंज हो सकते हैं, आंतरिक कार्यान्वयन भी हो सकते हैं। चूँकि ये सीमाएँ त्रुटियों के लिए सामान्य स्थान हैं, जिसके परिणामस्वरूप सॉफ़्टवेयर दोष (प्रौद्योगिकी) होता है, इसलिए परीक्षण स्थितियों में इनका अधिकांश उपयोग किया जाता है।
आवेदन
सॉफ़्टवेयर घटक के लिए अपेक्षित इनपुट और आउटपुट मान घटक विनिर्देश से निकाले जाने चाहिए। मानों को तब पहचानने योग्य सीमाओं के साथ सेट में समूहीकृत किया जाता है। प्रत्येक सेट, या विभाजन में वे मान होते हैं जो घटक द्वारा उसी प्रकार संसाधित किए जाने की अपेक्षा की जाती है। समतुल्यता विभाजन परीक्षण स्थिति डिज़ाइन विधि में परीक्षण डेटा श्रेणियों के विभाजन को समझाया गया है। परीक्षण स्थितियों को डिजाइन करते समय वैध और अमान्य दोनों विभाजनों पर विचार करना महत्वपूर्ण है।
प्रदर्शन जावा (प्रोग्रामिंग भाषा) में लिखे गए फ़ंक्शन का उपयोग करके किया जा सकता है।
class Safe {
static int add(int a, int b)
{
int c = a + b ;
if (a >= 0 && b >= 0 && c < 0)
{
System.err.println("Overflow!");
}
if (a < 0 && b < 0 && c >= 0)
{
System.err.println("Underflow!");
}
return c;
}
}
कोड के आधार पर, [a,b] के इनपुट वैक्टर विभाजित होते हैं। हमें जिन ब्लॉकों को कवर करने की आवश्यकता है, वे ओवरफ्लो स्टेटमेंट हैं और अंडरफ्लो स्टेटमेंट हैं और इनमें से कोई भी नहीं 2 है। यह कोड समीक्षा से ही 3 समकक्ष वर्गों को उत्पन्न कर देता है।
हम ध्यान दें कि पूर्णांक (कंप्यूटर विज्ञान) का निश्चित आकार है इसलिए: -
- MIN_VALUE ≤ x + y ≤ MAX_VALUE
हम ध्यान दें कि इनपुट पैरामीटर a और b दोनों पूर्णांक हैं, इसलिए उन पर कुल क्रम उपस्थित है। जब हम समानता की गणना करते हैं: -
- x + y = MAX_VALUE
- MIN_VALUE = x + y
हम उन मानों को वापस प्राप्त करते हैं जो सीमा पर हैं, जिसमें शामिल हैं कि (a,b) के ये जोड़े वैध समावेशी हैं और उनके लिए कोई अंडरफ्लो या ओवरफ्लो नहीं होगा।
वहीं दूसरी ओर:-
- x + y = MAX_VALUE + 1
(a,b) के जोड़े देता है जो अमान्य संयोजन हैं, उनके लिए अतिप्रवाह होगा। उसी प्रकार से:-
- x + y = MIN_VALUE - 1
(a,b) के जोड़े देता है जो अमान्य संयोजन हैं, उनके लिए अंडरफ्लो होगा।
सीमा मान (केवल अतिप्रवाह स्थिति के लिए तैयार किए गए) को दाहिने हाथ की आकृति में नारंगी रेखा के रूप में दिखाया जा रहा है।
अन्य उदाहरण के लिए, यदि इनपुट मान वर्ष के महीने थे, पूर्णांक के रूप में व्यक्त किए गए, तो इनपुट पैरामीटर 'माह' में निम्नलिखित विभाजन हो सकते हैं:
... -2 -1 0 1 .............. 12 13 14 15 .....
--------------|-------------------|-------------------
invalid partition 1 valid partition invalid partition 2
दो विभाजनों के बीच की सीमा वह स्थान है जहां एप्लिकेशन का व्यवहार बदलता है और यह वास्तविक संख्या नहीं है। सीमा मान न्यूनतम (या अधिकतम) मान है जो सीमा पर है। संख्या 0 पहले विभाजन में अधिकतम संख्या है, संख्या 1 दूसरे विभाजन में न्यूनतम मान है, दोनों सीमा मान हैं। इनपुट या आउटपुट उत्पन्न करने के लिए परीक्षण स्थिति बनाए जाने चाहिए जो प्रत्येक सीमा के दोनों ओर और उसके दोनों ओर गिरेंगे, जिसके परिणामस्वरूप प्रति सीमा दो स्थिति होंगे। एक सीमा के प्रत्येक पक्ष पर परीक्षण स्थिति परीक्षण के तहत घटक के लिए संभव सबसे छोटी वृद्धि में होना चाहिए, एक पूर्णांक के लिए यह 1 है, किन्तु यदि इनपुट 2 स्थानों के साथ दशमलव था तो यह .01 होगा। उपरोक्त उदाहरण में 0,1 और 12,13 पर सीमा मान हैं और प्रत्येक का परीक्षण किया जाना चाहिए।
सीमा मान विश्लेषण के लिए अमान्य विभाजन की आवश्यकता नहीं है। एक उदाहरण लें जहां तापमान 10 डिग्री या ठंडा होने पर हीटर चालू हो जाता है। परीक्षण के लिए दो विभाजन (तापमान≤10, तापमान> 10) और दो सीमा (तापमान = 10, तापमान = 11) मान हैं।
जहां एक सीमा मान अमान्य विभाजन के अन्दर आता है, परीक्षण का स्थिति यह सुनिश्चित करने के लिए डिज़ाइन किया गया है कि सॉफ्टवेयर घटक मान को नियंत्रित विधि से संभालता है। सीमा मान विश्लेषण का उपयोग पूरे परीक्षण चक्र में किया जा सकता है और सभी परीक्षण चरणों में समान रूप से लागू होता है।
बाहरी संबंध
- The Testing Standards Working Party website.