सीमा-मूल्य विश्लेषण
सीमा-मूल्य विश्लेषण एक सॉफ्टवेयर परीक्षण तकनीक है जिसमें परीक्षणों को एक सीमा में सीमा मूल्यों के प्रतिनिधियों को सम्मिलित करने के लिए डिज़ाइन किया गया है। विचार सीमा (टोपोलॉजी) से आता है। यह देखते हुए कि हमारे पास सिस्टम का परीक्षण करने के लिए परीक्षण वेक्टर का सेट है, उस सेट पर टोपोलॉजी को परिभाषित किया जा सकता है। वे इनपुट जो समतुल्य विभाजन सिद्धांत द्वारा परिभाषित समान समतुल्य वर्ग से संबंधित हैं, आधार (टोपोलॉजी) का गठन करेंगे। यह देखते हुए कि आधार सेट पड़ोस (गणित) हैं, उनके बीच एक सीमा मौजूद होगी। सीमा के दोनों ओर के परीक्षण वैक्टर को सीमा मान कहा जाता है। व्यवहार में इसके लिए यह आवश्यक होगा कि परीक्षण वैक्टर का आदेश दिया जा सके, और यह कि व्यक्तिगत पैरामीटर किसी प्रकार के आदेश (या तो आंशिक आदेश या कुल आदेश) का पालन करते हैं।
औपचारिक परिभाषा
औपचारिक रूप से सीमा मानों को नीचे परिभाषित किया जा सकता है:
- टेस्ट वैक्टर का सेट होने दें 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.