सॉफ्टवेयर परीक्षण में साइक्लोमैटिक जटिलता (उदाहरण)
मैककेब की साइक्लोमैटिक जटिलता क्या है?
सॉफ्टवेयर परीक्षण में साइक्लोमैटिक जटिलता एक परीक्षण मीट्रिक है जिसका उपयोग किसी सॉफ़्टवेयर प्रोग्राम की जटिलता को मापने के लिए किया जाता है। यह सॉफ़्टवेयर प्रोग्राम के स्रोत कोड में स्वतंत्र पथों का मात्रात्मक माप है। साइक्लोमैटिक जटिलता की गणना नियंत्रण प्रवाह ग्राफ़ का उपयोग करके या सॉफ़्टवेयर प्रोग्राम के भीतर फ़ंक्शन, मॉड्यूल, विधियों या कक्षाओं के संबंध में की जा सकती है।
स्वतंत्र पथ को ऐसे पथ के रूप में परिभाषित किया जाता है, जिसका कम से कम एक किनारा ऐसा हो, जिसे पहले किसी अन्य पथ पर पार न किया गया हो।
इस मीट्रिक को 1976 में थॉमस जे. मैककेबे द्वारा विकसित किया गया था और यह प्रोग्राम के नियंत्रण प्रवाह प्रतिनिधित्व पर आधारित है। नियंत्रण प्रवाह एक प्रोग्राम को एक ग्राफ के रूप में दर्शाता है जिसमें नोड्स और किनारे होते हैं।
ग्राफ में, नोड्स प्रसंस्करण कार्यों का प्रतिनिधित्व करते हैं जबकि किनारे नोड्स के बीच नियंत्रण प्रवाह का प्रतिनिधित्व करते हैं।
किसी प्रोग्राम के लिए प्रवाह ग्राफ संकेतन
किसी प्रोग्राम के लिए फ़्लो ग्राफ़ संकेतन किनारों के माध्यम से जुड़े कई नोड्स को परिभाषित करता है। नीचे if-else, While, Until और प्रवाह के सामान्य अनुक्रम जैसे कथनों के लिए फ़्लो आरेख दिए गए हैं।
साइक्लोमैटिक जटिलता की गणना कैसे करें
गणितीय प्रतिनिधित्व:
गणितीय रूप से, यह ग्राफ आरेख के माध्यम से स्वतंत्र पथों का समूह है। प्रोग्राम की कोड जटिलता को सूत्र का उपयोग करके परिभाषित किया जा सकता है –
V(G) = E - N + 2
कहा पे,
E – किनारों की संख्या
N – नोड्स की संख्या
V (G) = P + 1
जहाँ P = प्रेडिकेट नोड्स की संख्या (नोड जिसमें शर्त शामिल है)
उदाहरण -
i = 0; n=4; //N-Number of nodes present in the graph while (i<n-1) do j = i + 1; while (j<n) do if A[i]<A[j] then swap(A[i], A[j]); end do; j=j+1; end do;
इस कार्यक्रम के लिए प्रवाह आरेख होगा
गणितीय गणना,
- वी(जी) = 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
साइक्लोमैटिक जटिलता के गुण
साइक्लोमैटिक जटिलता के गुण निम्नलिखित हैं:
- V(G) ग्राफ में स्वतंत्र पथों की अधिकतम संख्या है
- वी(जी) >=1
- G का एक पथ होगा यदि V(G) = 1
- जटिलता को 10 तक कम करें
सॉफ्टवेयर परीक्षण के लिए यह मीट्रिक किस प्रकार उपयोगी है?
आधार पथ परीक्षण व्हाइट बॉक्स तकनीक में से एक है और यह परीक्षण के दौरान कम से कम एक कथन को निष्पादित करने की गारंटी देता है। यह प्रोग्राम के माध्यम से प्रत्येक रैखिक रूप से स्वतंत्र पथ की जाँच करता है, जो इसका मतलब है कि परीक्षण मामलों की संख्या, कार्यक्रम की साइक्लोमैटिक जटिलता के बराबर होगी।
यह मीट्रिक साइक्लोमैटिक जटिलता (एम) के गुणों के कारण उपयोगी है -
- शाखा कवरेज प्राप्त करने के लिए परीक्षण मामलों की संख्या M हो सकती है (ऊपरी सीमा)
- M ग्राफ के माध्यम से पथों की संख्या हो सकती है। (निचली सीमा)
इस उदाहरण पर विचार करें –
If (Condition 1) Statement 1 Else Statement 2 If (Condition 2) Statement 3 Else Statement 4
इस कार्यक्रम के लिए साइक्लोमैटिक जटिलता 8-7+2=3 होगी।
चूंकि जटिलता की गणना 3 के रूप में की गई है, इसलिए उपरोक्त उदाहरण के लिए पूर्ण पथ कवरेज के लिए तीन परीक्षण मामले आवश्यक हैं।
निम्नलिखित चरणों का पालन करें:
साइक्लोमैटिक जटिलता की गणना और परीक्षण मामलों के डिजाइन के लिए निम्नलिखित चरणों का पालन किया जाना चाहिए।
चरण 1 – कोड से नोड्स और किनारों के साथ ग्राफ का निर्माण
चरण 2 – स्वतंत्र पथों की पहचान
चरण 3 – साइक्लोमैटिक जटिलता गणना
चरण 4 – टेस्ट केस का डिज़ाइन
एक बार बुनियादी सेट बन जाए, परीक्षण मामले सभी पथों को निष्पादित करने के लिए लिखा जाना चाहिए।
वी (जी) पर अधिक जानकारी
यदि प्रोग्राम छोटा है तो साइक्लोमैटिक जटिलता की गणना मैन्युअल रूप से की जा सकती है। यदि प्रोग्राम बहुत जटिल है तो स्वचालित उपकरणों का उपयोग करने की आवश्यकता है क्योंकि इसमें अधिक प्रवाह ग्राफ़ शामिल हैं। जटिलता संख्या के आधार पर, टीम उन कार्यों पर निष्कर्ष निकाल सकती है जिन्हें मापने के लिए लिया जाना चाहिए।
निम्न तालिका जटिलता संख्या और v(G) के संगत अर्थ पर अवलोकन देती है:
| जटिलता संख्या | अर्थ |
|---|---|
| 1-10 | संरचित और अच्छी तरह से लिखा गया कोड
उच्च परीक्षण योग्यता लागत और प्रयास कम है |
| 10-20 | जटिल कोड
मध्यम परीक्षण योग्यता लागत और प्रयास मध्यम है |
| 20-40 | बहुत जटिल कोड
कम परीक्षण योग्यता लागत और प्रयास उच्च हैं |
| > 40 | बिलकुल भी परीक्षण योग्य नहीं
बहुत अधिक लागत और प्रयास |
साइक्लोमैटिक जटिलता गणना के लिए उपकरण:
एप्लिकेशन की जटिलता निर्धारित करने के लिए कई उपकरण उपलब्ध हैं। कुछ जटिलता गणना उपकरण विशिष्ट तकनीकों के लिए उपयोग किए जाते हैं। किसी प्रोग्राम में निर्णय बिंदुओं की संख्या से जटिलता का पता लगाया जा सकता है। स्रोत कोड में निर्णय बिंदु if, for, for-each, while, do, catch, case कथन हैं।
उपकरणों के उदाहरण हैं
- ओसीलिंट – सी और संबंधित भाषाओं के लिए स्थैतिक कोड विश्लेषक
- रिफ्लेक्टर ऐड इन – .NET असेंबली के लिए कोड मेट्रिक्स
- जीमेट्रिक्स – मेट्रिक्स खोजें Java संबंधित अनुप्रयोग
साइक्लोमैटिक जटिलता के उपयोग:
साइक्लोमैटिक कॉम्प्लेक्सिटी बहुत मददगार साबित हो सकती है
- डेवलपर्स और परीक्षकों को स्वतंत्र पथ निष्पादन निर्धारित करने में सहायता करता है
- डेवलपर्स यह आश्वासन दे सकते हैं कि सभी पथों का कम से कम एक बार परीक्षण किया गया है
- हमें अनदेखे रास्तों पर अधिक ध्यान केंद्रित करने में मदद करता है
- कोड कवरेज में सुधार करें सॉफ्टवेयर इंजीनियरिंग
- एप्लिकेशन या प्रोग्राम से जुड़े जोखिम का मूल्यांकन करें
- चक्र के आरंभ में इन मीट्रिक्स का उपयोग करने से कार्यक्रम का जोखिम कम हो जाता है
निष्कर्ष
साइक्लोमैटिक जटिलता संरचित या के लिए उपयोगी सॉफ्टवेयर मीट्रिक है सफेद Box परीक्षणइसका उपयोग मुख्य रूप से किसी प्रोग्राम की जटिलता का मूल्यांकन करने के लिए किया जाता है। यदि निर्णय बिंदु अधिक हैं, तो प्रोग्राम की जटिलता अधिक होगी। यदि प्रोग्राम की जटिलता संख्या अधिक है, तो त्रुटि की संभावना अधिक होती है और रखरखाव और समस्या निवारण के लिए समय भी अधिक लगता है।


.png)
.png)