एज केस, कॉर्नर केस, बेस केस और बाउंड्री केस में क्या अंतर हैं?


86

मैं देशी अंग्रेजी बोलने वाला नहीं हूं। अपनी मूल भाषा में, मैं कुछ शर्तों से अवगत हूं जो एक पुनरावृत्ति को रोकने के लिए जाँच की गई स्थिति को संदर्भित करने के लिए उपयोग की जाती है, और चरम, संभावना या अति-सरल मामलों के लिए जाँच की गई स्थिति के लिए। अंग्रेजी में, मैंने "किनारे का मामला", "कोने का मामला", "सीमा का मामला" और "आधार का मामला" का सामना किया है, लेकिन मैं मतभेदों का पता नहीं लगा सकता हूं और जिसका उपयोग करने के लिए किया जाता है; मुझे उनके बीच के मतभेदों का कुछ सारांश प्राप्त करना अच्छा लगेगा।

विशेष रूप से, मुझे बहुत खुशी होगी यदि कोई व्यक्ति निम्नलिखित कोड नमूने में लाइनों के लिए एनोटेशन प्रदान कर सके:

    int transmogrify(int n) {
1.      assert(n <= 1000000);
2.      if (n < 0) return -1;
3.      if (n == 1000000) return PRE_CALC;
4.      if (n == 0) return n+1;            // For stopping the recursion
5.      if (n == 1251) return 3077;
        return transmogrify(n-1);
    }

मुझे लगता है कि यह है:

  1. मानसिक स्वास्थ्य की जांच
  2. इनपुट जाँच
  3. सीमा का मामला? किनारे का मामला? कॉर्नर केस?
  4. मुख्य मामला? सीमा का मामला?
  5. कॉर्नर केस? किनारे का मामला?

4
मेरा मानना ​​है कि बढ़त और सीमा आम तौर पर समान हैं। लेकिन वे परीक्षण का संदर्भ देते हैं, कोड में शर्तों की जांच करने के लिए नहीं।
रिचर्ड

@ रीचर्ड टेस्टिंग कोड नहीं? यह मेरी समझ नहीं है - क्या आपके पास इस तथ्य का समर्थन करने के लिए एक संदर्भ है कि आप मानते हैं कि ये शर्तें कोड पर लागू नहीं होती हैं?
ब्रैड थॉमस

जवाबों:


94

मैं एक देशी अंग्रेजी वक्ता भी नहीं हूँ। लेकिन विकिपीडिया के अनुसार:

  • एज मामले होता है एक चरम (अधिकतम या न्यूनतम) ऑपरेटिंग पैरामीटर पर।
  • कॉर्नर केस सामान्य ऑपरेटिंग मापदंडों के बाहर होता है , खासकर जब कई पर्यावरण चर या स्थितियां एक साथ चरम स्तरों पर होती हैं, भले ही प्रत्येक पैरामीटर उस पैरामीटर के लिए निर्दिष्ट सीमा के भीतर हो । ("सामान्य ऑपरेटिंग मापदंडों के बाहर" का अर्थ स्पष्ट रूप से "ऑपरेटिंग मापदंडों के विशिष्ट संयोजन के बाहर" जैसा कुछ होता है, न कि "बाहरी रूप से अनुमत ऑपरेटिंग मापदंडों के बाहर"। अर्थात, आप अभी भी मान्य पैरामीटर स्थान के भीतर हैं, लेकिन इसके कोने के पास हैं।)
  • सीमा का मामला तब होता है जब इनपुट में से एक अधिकतम या न्यूनतम सीमा से परे होता है।
  • बेस केस वह जगह है जहां रिकर्सियन समाप्त होता है।

इसलिए, नामकरण पूरी तरह से उलझन में लगता है, भले ही कोने का मामला किनारे और सीमा मामलों की तुलना में कुछ अलग (मूल्यों का संयोजन) लगता है, जो निश्चित रूप से पर्यायवाची हैं। यह कहना शायद सुरक्षित है कि आम भाषण में किनारे, कोने और सीमा मामले समान हैं। उनमें से प्रत्येक के द्वारा किसी को अलग बात कहने का मतलब हो सकता है, लेकिन शायद ही कोई सामान्य समझौता हो।

आपका 1) और 2) वही है जो आपने लिखा है, 3) एक बढ़त / सीमा मामला है, 4) एक आधार मामला है, और 5) एक विशेष मामला है।


प्रत्येक तकनीकी शब्दों के पीछे की अवधारणाओं को समझने के लिए यह बहुत उपयोगी उत्तर है।
जिग्नेश फड़डू

25

शब्दों के बीच अंतर के बावजूद, आप एक परीक्षण का वर्णन करने के लिए क्या प्रयोग करेंगे, यह परीक्षण के शब्दार्थ (अर्थ) पर निर्भर करता है , सटीक कोड पर नहीं - उदाहरण में, यह स्पष्ट नहीं है कि प्रत्येक परीक्षण का क्या अर्थ है। एक तरफ, यहाँ है कि मैं उन्हें कैसे समझता हूँ:

  • Sanity check = क्या इससे भी समझ में आता है? उदाहरण के लिए, यदि आपका एप्लिकेशन केवल पूर्णांक आउटपुट करता है, sqrt(-1)और log(-1)अपरिभाषित है।
  • इनपुट जांच = कुछ आंतरिक डेटा संरचना या किसी फ़ंक्शन के आउटपुट के विपरीत उपयोगकर्ता इनपुट का परीक्षण करता है। उदाहरण के लिए, बैश [ $# -gt 0 ]चेक में कि आपको कम से कम एक इनपुट पैरामीटर मिला है, जो कि findया जैसे कमांड के लिए एक sanity check हो सकता है mail
  • एज / सीमा जांच = अधिकतम या न्यूनतम इनपुट जो सही आउटपुट का उत्पादन करने की उम्मीद है । उदाहरण के लिए, एक फ़ंक्शन जो केवल एक संख्या को जोड़ता है, उसमें <MIN_INT> से <MAX_INT> - 1 तक एक ऑपरेटिंग रेंज होगी, चूंकि <MIN_INT> से छोटा इनपुट उपयोगकर्ता द्वारा प्रदान नहीं किया जा सकता है और <MAX_INT> से बड़ा आउटपुट हो सकता है उपयोगी नहीं होगा।
  • कॉर्नर केस चेक = एक अधिक जटिल सीमा जांच (एक कॉर्नर द्वि-आयामी सीमा है), उदाहरण के लिए एक गणना में <MIN_INT> और <MAX_INT> का संयोजन।
  • विशेष मामले की जांच = गैर स्पष्ट, गैर सीमा विशेष मान , उदाहरण के लिए log(1 + the smallest floating point number)

एक अपरिष्कृत नट: logₑ-1 i: है। अजगर में,import cmath; assert(cmath.log(-1) == 3.141592653589793j)
बॉब स्टीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.