मैकबे की चक्रीय जटिलता: फ्लो ग्राफ (उदाहरण) के साथ गणना

विषय - सूची:

Anonim

साइक्लोमैटिक जटिलता को समझने के लिए, पहले समझने दें

सॉफ्टवेयर मैट्रिक क्या है?

मापन एक उत्पाद / प्रक्रिया की विशेषता के आकार / आयाम / क्षमता के मात्रात्मक संकेत के अलावा और कुछ नहीं है। सॉफ्टवेयर मेट्रिक को एक विशेषता के मात्रात्मक माप के रूप में परिभाषित किया जाता है, जो एक सॉफ्टवेयर सिस्टम लागत, गुणवत्ता, आकार और अनुसूची के संबंध में होता है।

उदाहरण-

उपाय - त्रुटियों की संख्यामीट्रिक - प्रति व्यक्ति मिली त्रुटियों की संख्या

इस ट्यूटोरियल में, आप सीखेंगे-

  • सॉफ्टवेयर मैट्रिक क्या है?
  • साइक्लोमैटिक जटिलता क्या है?
  • एक कार्यक्रम के लिए फ्लो ग्राफ नोटेशन:
  • चक्रवाती जटिलता की गणना कैसे करें
  • चक्रीय जटिलता के गुण:
  • सॉफ्टवेयर परीक्षण के लिए यह मीट्रिक कैसे उपयोगी है?
  • V (G) पर अधिक:
  • चक्रवाती जटिलता गणना के लिए उपकरण:
  • चक्रीय जटिलता के उपयोग:

सॉफ्टवेयर टेस्टिंग में साइक्लोमैटिक जटिलता

सॉफ्टवेयर टेस्टिंग में साइक्लोमैटिक जटिलता एक सॉफ्टवेयर प्रोग्राम की जटिलता को मापने के लिए उपयोग किया जाने वाला एक परीक्षण मीट्रिक है। यह एक सॉफ्टवेयर प्रोग्राम के स्रोत कोड में स्वतंत्र पथ का एक मात्रात्मक माप है। साइक्लोमैटिक जटिलता की गणना नियंत्रण प्रवाह ग्राफ़ का उपयोग करके या सॉफ्टवेयर प्रोग्राम के भीतर फ़ंक्शन, मॉड्यूल, विधियों या कक्षाओं के संबंध में की जा सकती है।

स्वतंत्र पथ को एक ऐसे मार्ग के रूप में परिभाषित किया गया है जिसमें कम से कम एक किनारे होता है जिसे किसी अन्य पथ में पहले नहीं जाना गया है।

इस मीट्रिक को 1976 में थॉमस जे। मैककेबे द्वारा विकसित किया गया था और यह कार्यक्रम के नियंत्रण प्रवाह प्रतिनिधित्व पर आधारित है। नियंत्रण प्रवाह एक कार्यक्रम को एक ग्राफ के रूप में चित्रित करता है जिसमें नोड्स और किनारों शामिल हैं।

ग्राफ में, नोड्स प्रसंस्करण कार्यों का प्रतिनिधित्व करते हैं, जबकि किनारे नोड्स के बीच नियंत्रण प्रवाह का प्रतिनिधित्व करते हैं।

एक कार्यक्रम के लिए फ्लो ग्राफ नोटेशन:

एक प्रोग्राम के लिए फ्लो ग्राफ नोटेशन किनारों के माध्यम से जुड़े कई नोड्स को परिभाषित करता है। नीचे दिए गए फ्लो आरेखों में कथन जैसे कि यदि-और, जबकि, जब तक और सामान्य क्रम प्रवाह के हैं।

चक्रवाती जटिलता की गणना कैसे करें

गणितीय प्रतिनिधित्व:

गणितीय रूप से, यह ग्राफ आरेख के माध्यम से स्वतंत्र पथ का सेट है। कार्यक्रम की कोड जटिलता को सूत्र का उपयोग करके परिभाषित किया जा सकता है -

वी (जी) = ई - एन + 2

कहा पे,

ई - किनारों की संख्या

एन - नोड्स की संख्या

वी (जी) = पी + १

जहां P = विधेय नोड्स की संख्या (नोड जिसमें स्थिति शामिल है)

उदाहरण -

i = 0;n = 4; // एन-ग्राफ में मौजूद नोड्स की संख्याजबकि (i 

इस कार्यक्रम के लिए फ्लो ग्राफ होगा

गणितीय रूप से कम्प्यूटिंग,

  • वी (जी) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (स्थिति नोड्स 1,2 और 3 नोड हैं)
  • बेसिस सेट - एक कार्यक्रम के संभावित निष्पादन पथ का एक सेट
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

चक्रीय जटिलता के गुण:

Cyclomatic जटिलता के गुण निम्नलिखित हैं:

  1. ग्राफ में V (G) स्वतंत्र पथों की अधिकतम संख्या है
  2. वी (जी)> = 1
  3. G का एक पथ होगा यदि V (G) = 1
  4. जटिलता को 10 से कम करें

सॉफ्टवेयर परीक्षण के लिए यह मीट्रिक कैसे उपयोगी है?

बेसिस पाथ परीक्षण व्हाइट बॉक्स तकनीक में से एक है और यह परीक्षण के दौरान कम से कम एक स्टेटमेंट को निष्पादित करने की गारंटी देता है। यह कार्यक्रम के माध्यम से प्रत्येक रैखिक रूप से स्वतंत्र पथ की जांच करता है, जिसका अर्थ है संख्या परीक्षण मामले, कार्यक्रम के चक्रीय जटिलता के बराबर होगा।

Cricomatic जटिलता (M) के गुणों के कारण यह मीट्रिक उपयोगी है -

  1. एम शाखा कवरेज प्राप्त करने के लिए परीक्षण मामलों की संख्या हो सकती है (ऊपरी सीमा)
  2. M रेखांकन के माध्यम से पथों की संख्या हो सकती है। (निम्न परिबंध)

इस उदाहरण पर विचार करें -

यदि (शर्त 1)कथन १अन्यकथन २यदि (शर्त 2)कथन ३अन्यकथन ४

इस कार्यक्रम के लिए साइक्लोमैटिक जटिलता 8-7 + 2 = 3 होगी।

जैसा कि जटिलता 3 के रूप में गणना की गई है, उपरोक्त उदाहरण के लिए पूर्ण पथ कवरेज के लिए तीन परीक्षण मामले आवश्यक हैं।

निम्नलिखित चरणों का पालन करें:

साइक्लोमैटिक जटिलता और परीक्षण मामलों के डिजाइन की गणना के लिए निम्नलिखित चरणों का पालन किया जाना चाहिए।

चरण 1 - कोड से नोड्स और किनारों के साथ ग्राफ का निर्माण

चरण 2 - स्वतंत्र रास्तों की पहचान

चरण 3 - चक्रवाती जटिलता गणना

चरण 4 - टेस्ट मामलों का डिजाइन

एक बार मूल सेट बन जाने के बाद, सभी मार्गों को निष्पादित करने के लिए टेस्ट केस लिखा जाना चाहिए।

V (G) पर अधिक:

यदि कार्यक्रम छोटा है तो साइक्लोमैटिक जटिलता की गणना मैन्युअल रूप से की जा सकती है। यदि प्रोग्राम बहुत जटिल है तो स्वचालित टूल का उपयोग करने की आवश्यकता है क्योंकि इसमें अधिक प्रवाह ग्राफ शामिल हैं। जटिलता संख्या के आधार पर, टीम उन कार्यों पर निष्कर्ष निकाल सकती है जिन्हें माप के लिए आवश्यक है।

निम्नलिखित तालिका जटिलता संख्या और v (G) के संगत अर्थ पर अवलोकन देती है:

जटिलता संख्या जिसका अर्थ है
1-10 संरचित और अच्छी तरह से लिखा कोड उच्च परीक्षण क्षमता लागत और प्रयास कम है
10-20 है कॉम्प्लेक्स कोड मध्यम परीक्षण क्षमता लागत और प्रयास मध्यम है
20-40 है बहुत जटिल कोड लो टेस्टिबिलिटी कॉस्ट एंड एफर्ट अधिक हैं
> 40 बिल्कुल भी परीक्षण योग्य नहीं है उच्च लागत और प्रयास

चक्रवाती जटिलता गणना के लिए उपकरण:

आवेदन की जटिलता निर्धारित करने के लिए कई उपकरण उपलब्ध हैं। कुछ जटिलता गणना उपकरण विशिष्ट प्रौद्योगिकियों के लिए उपयोग किए जाते हैं। एक कार्यक्रम में निर्णय बिंदुओं की संख्या से जटिलता पाई जा सकती है। निर्णय बिंदु एक स्रोत कोड में, यदि, के लिए, प्रत्येक, जबकि, कैच, केस स्टेटमेंट हैं।

औजारों के उदाहरण हैं

  • OCLint - C और संबंधित भाषाओं के लिए स्टेटिक कोड विश्लेषक
  • रिफ्लेक्टर ऐड-इन कोड असेंबली के लिए कोड मैट्रिक्स
  • GMetrics - जावा संबंधित अनुप्रयोगों में मैट्रिक्स का पता लगाएं

चक्रीय जटिलता के उपयोग:

साइक्लोमैटिक जटिलता बहुत मददगार साबित हो सकती है

  • स्वतंत्र पथ निष्पादन को निर्धारित करने के लिए डेवलपर्स और परीक्षकों की मदद करता है
  • डेवलपर्स यह आश्वासन दे सकते हैं कि सभी रास्तों का एक बार परीक्षण किया गया है
  • हमें खुले मार्गों पर अधिक ध्यान केंद्रित करने में मदद करता है
  • सॉफ्टवेयर इंजीनियरिंग में कोड कवरेज में सुधार
  • एप्लिकेशन या प्रोग्राम से जुड़े जोखिम का मूल्यांकन करें
  • चक्र के आरंभ में इन मीट्रिक का उपयोग करने से कार्यक्रम का अधिक जोखिम कम हो जाता है

निष्कर्ष:

Cyclomatic Complexity संरचित या व्हाइट बॉक्स परीक्षण के लिए उपयोगी सॉफ्टवेयर मीट्रिक है। यह मुख्य रूप से एक कार्यक्रम की जटिलता का मूल्यांकन करने के लिए उपयोग किया जाता है। यदि निर्णय बिंदु अधिक हैं, तो कार्यक्रम की जटिलता अधिक है। यदि प्रोग्राम में उच्च जटिलता संख्या है, तो रखरखाव और परेशानी शूट के लिए बढ़े हुए समय के साथ त्रुटि की संभावना अधिक है।