कोड कवरेज ट्यूटोरियल: शाखा, कथन और निर्णय परीक्षण

कोड कवरेज क्या है?

कोड कवरेज एक माप है जो बताता है कि प्रोग्राम के सोर्स कोड का किस हद तक परीक्षण किया गया है। यह व्हाइट बॉक्स टेस्टिंग का एक रूप है जो प्रोग्राम के उन क्षेत्रों का पता लगाता है जो परीक्षण मामलों के एक सेट द्वारा उपयोग नहीं किए गए हैं। यह कवरेज बढ़ाने और कोड कवरेज का मात्रात्मक माप निर्धारित करने के लिए कुछ परीक्षण मामले भी बनाता है।

ज़्यादातर मामलों में, कोड कवरेज सिस्टम चल रहे प्रोग्राम के बारे में जानकारी इकट्ठा करता है। यह टेस्ट सूट के कोड कवरेज के बारे में रिपोर्ट बनाने के लिए सोर्स कोड की जानकारी के साथ भी इसे जोड़ता है।

कोड कवरेज परीक्षण का उपयोग क्यों करें?

कोड कवरेज का उपयोग करने के कुछ प्रमुख कारण यहां दिए गए हैं:

  • यह आपको परीक्षण कार्यान्वयन की दक्षता को मापने में मदद करता है
  • यह मात्रात्मक माप प्रदान करता है।
  • यह परिभाषित करता है कि स्रोत कोड का किस हद तक परीक्षण किया गया है।

कोड कवरेज विधियाँ

निम्नलिखित प्रमुख कोड कवरेज विधियाँ हैं

  • वक्तव्य कवरेज
  • निर्णय कवरेज
  • शाखा कवरेज
  • Togglई कवरेज
  • एफएसएम कवरेज

वक्तव्य कवरेज

वक्तव्य कवरेज एक व्हाइट बॉक्स परीक्षण तकनीक है जिसमें स्रोत कोड में सभी निष्पादन योग्य कथनों को कम से कम एक बार निष्पादित किया जाता है। इसका उपयोग स्रोत कोड में निष्पादित किए गए कथनों की संख्या की गणना के लिए किया जाता है। स्टेटमेंट कवरेज का मुख्य उद्देश्य स्रोत कोड में सभी संभावित पथों, पंक्तियों और कथनों को कवर करना है।

स्टेटमेंट कवरेज का उपयोग परीक्षण के तहत कोड की संरचना के आधार पर परिदृश्य प्राप्त करने के लिए किया जाता है।

वक्तव्य कवरेज

In सफेद Box परीक्षण, परीक्षक इस बात पर ध्यान केंद्रित कर रहा है कि सॉफ्टवेयर कैसे काम करता है। दूसरे शब्दों में, परीक्षक नियंत्रण प्रवाह ग्राफ या प्रवाह चार्ट से संबंधित स्रोत कोड के आंतरिक कामकाज पर ध्यान केंद्रित करेगा।

आम तौर पर किसी भी सॉफ़्टवेयर में, अगर हम सोर्स कोड को देखें, तो उसमें ऑपरेटर, फ़ंक्शन, लूपिंग, अपवादात्मक हैंडलर आदि जैसे कई तरह के तत्व होंगे। प्रोग्राम में इनपुट के आधार पर, कुछ कोड स्टेटमेंट निष्पादित नहीं हो सकते हैं। स्टेटमेंट कवरेज का लक्ष्य कोड में सभी संभावित पथ, लाइन और स्टेटमेंट को कवर करना है।

आइए इसे एक उदाहरण से समझते हैं कि स्टेटमेंट कवरेज की गणना कैसे की जाती है।

दिए गए स्रोत कोड के लिए स्टेटमेंट कवरेज की गणना करने के लिए परिदृश्य। यहाँ हम प्रत्येक परिदृश्य के लिए स्टेटमेंट कवरेज के प्रतिशत की जाँच करने के लिए दो अलग-अलग परिदृश्य ले रहे हैं।

स्रोत कोड:

Prints (int a, int b) {                       ------------  Printsum is a function 
    int result = a+ b; 
    If (result> 0)
    	Print ("Positive", result)
    Else
    	Print ("Negative", result)
    }                                        -----------   End of the source code 

परिदृश्य 1:

यदि A = 3, B = 9

वक्तव्य कवरेज

पीले रंग से चिह्नित कथन वे हैं जो परिदृश्य के अनुसार निष्पादित किए जाते हैं

निष्पादित कथनों की संख्या = 5, कथनों की कुल संख्या = 7

स्टेटमेंट कवरेज: 5/7 = 71%

वक्तव्य कवरेज

इसी तरह हम परिदृश्य 2 देखेंगे,

परिदृश्य 2:

यदि A = -3, B = -9

वक्तव्य कवरेज

पीले रंग से चिह्नित कथन वे हैं जो परिदृश्य के अनुसार निष्पादित किए जाते हैं।

निष्पादित कथनों की संख्या = 6

कुल कथनों की संख्या = 7

वक्तव्य कवरेज

स्टेटमेंट कवरेज: 6/7 = 85%

वक्तव्य कवरेज

लेकिन कुल मिलाकर अगर आप देखें, तो सभी कथन दोनों परिदृश्यों द्वारा कवर किए जा रहे हैं। इसलिए हम यह निष्कर्ष निकाल सकते हैं कि समग्र कथन कवरेज 100% है।

वक्तव्य कवरेज

स्टेटमेंट कवरेज में क्या शामिल है?

  1. अप्रयुक्त विवरण
  2. मृत कोड
  3. अप्रयुक्त शाखाएँ
  4. गुम कथन

निर्णय कवरेज परीक्षण

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

इस कवरेज में, अभिव्यक्तियाँ कभी-कभी जटिल हो सकती हैं। इसलिए, 100% कवरेज प्राप्त करना बहुत कठिन है। इसलिए इस मीट्रिक की रिपोर्टिंग के कई अलग-अलग तरीके हैं। ये सभी तरीके सबसे महत्वपूर्ण संयोजनों को कवर करने पर ध्यान केंद्रित करते हैं। यह निर्णय कवरेज के समान ही है, लेकिन यह नियंत्रण प्रवाह के लिए बेहतर संवेदनशीलता प्रदान करता है।

निर्णय कवरेज परीक्षण

निर्णय कवरेज का उदाहरण

निम्नलिखित कोड पर विचार करें-

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }

परिदृश्य 1:

a का मान 2 है

निर्णय कवरेज परीक्षण

पीले रंग से हाइलाइट किया गया कोड निष्पादित किया जाएगा। यहाँ यदि (a>5) पर निर्णय का “नहीं” परिणाम चेक किया गया है।

निर्णय कवरेज = 50%

परिदृश्य 2:

a का मान 6 है

निर्णय कवरेज परीक्षण

पीले रंग से हाइलाइट किया गया कोड निष्पादित किया जाएगा। यहाँ यदि (a>5) निर्णय का “हाँ” परिणाम चेक किया गया है।

निर्णय कवरेज = 50%

परीक्षण का मामला A का मान उत्पादन निर्णय कवरेज
1 2 2 50% तक
2 6 18 50% तक

शाखा कवरेज परीक्षण

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

उदाहरण के लिए, यदि परिणाम बाइनरी हैं, तो आपको सत्य और असत्य दोनों परिणामों का परीक्षण करना होगा।

शाखा कवरेज की गणना करने का सूत्र:

शाखा कवरेज परीक्षण

शाखा कवरेज का उदाहरण

शाखा कवरेज सीखने के लिए, आइए पहले इस्तेमाल किए गए उसी उदाहरण पर विचार करें

निम्नलिखित कोड पर विचार करें-

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }                                       

शाखा कवरेज परीक्षण

शाखा कवरेज में बिना शर्त शाखा पर भी विचार किया जाएगा

परीक्षण का मामला A का मान उत्पादन निर्णय कवरेज शाखा कवरेज
1 2 2 50% तक 33% तक
2 6 18 50% तक 67% तक

शाखा कवरेज के लाभ:

शाखा कवरेज परीक्षण निम्नलिखित लाभ प्रदान करता है:

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

स्थिति कवरेज परीक्षण

स्थिति कवरेज या अभिव्यक्ति कवरेज एक परीक्षण विधि है जिसका उपयोग सशर्त कथन में चर या उप-अभिव्यक्तियों का परीक्षण और मूल्यांकन करने के लिए किया जाता है। शर्त कवरेज का लक्ष्य प्रत्येक तार्किक स्थिति के लिए अलग-अलग परिणामों की जांच करना है। शर्त कवरेज निर्णय कवरेज की तुलना में नियंत्रण प्रवाह के लिए बेहतर संवेदनशीलता प्रदान करता है। इस कवरेज में, तार्किक ऑपरेंड वाले अभिव्यक्तियों पर ही विचार किया जाता है।

उदाहरण के लिए, यदि किसी अभिव्यक्ति में AND, OR, XOR जैसे बूलियन ऑपरेशन हैं, जो कुल संभावनाओं को इंगित करते हैं।

शर्त कवरेज पूर्ण निर्णय कवरेज के बारे में कोई गारंटी नहीं देता है।

कंडीशन कवरेज की गणना करने का सूत्र:

स्थिति कवरेज परीक्षण

उदाहरण:

स्थिति कवरेज परीक्षण

उपरोक्त अभिव्यक्ति के लिए, हमारे पास 4 संभावित संयोजन हैं

  • TT
  • FF
  • TF
  • FT

निम्नलिखित इनपुट पर विचार करें

X = 3

वाई = 4

(एक्स जब सही है स्थिति कवरेज ¼ = 25% है
एक = 3

बी = 4

(ए>बी) असत्य

परिमित राज्य मशीन कवरेज

परिमित राज्य मशीन कवरेज निश्चित रूप से कोड कवरेज विधि का सबसे जटिल प्रकार है। ऐसा इसलिए है क्योंकि यह डिज़ाइन के व्यवहार पर काम करता है। इस कवरेज विधि में, आपको यह देखने की ज़रूरत है कि कितने समय-विशिष्ट राज्यों का दौरा किया जाता है, पारगमन किया जाता है। यह यह भी जाँचता है कि परिमित राज्य मशीन में कितने अनुक्रम शामिल हैं।

किस प्रकार का कोड कवरेज चुनें

यह निश्चित रूप से सबसे कठिन उत्तर है। कवरेज विधि का चयन करने के लिए, परीक्षक को यह जांचना होगा कि

  • परीक्षण के अंतर्गत कोड में एक या एक से अधिक अज्ञात दोष हैं
  • संभावित दंड की लागत
  • खोई प्रतिष्ठा की कीमत
  • खोई हुई बिक्री की लागत, आदि।

दोषों के कारण महंगी उत्पादन विफलताओं की संभावना जितनी अधिक होगी, आपको कवरेज का उतना ही अधिक गंभीर स्तर चुनना होगा।

कोड कवरेज बनाम कार्यात्मक कवरेज

कोड कवरेज़ कार्यात्मक कवरेज
कोड कवरेज आपको बताता है कि आपके परीक्षण बेंच द्वारा स्रोत कोड का कितनी अच्छी तरह उपयोग किया गया है। कार्यात्मक कवरेज यह मापता है कि आपके परीक्षण बेंच द्वारा डिज़ाइन की कार्यक्षमता को कितनी अच्छी तरह कवर किया गया है।
कभी भी डिज़ाइन विनिर्देश का उपयोग न करें डिज़ाइन विनिर्देश का उपयोग करें
डेवलपर्स द्वारा किया गया परीक्षकों द्वारा किया गया

कोड कवरेज उपकरण

यहां महत्वपूर्ण कोड कवरेज उपकरणों की सूची दी गई है:

उपकरण का नाम विवरण
Cobertura यह एक ओपन सोर्स कोड कवरेज टूल है। यह कोड बेस को इंस्ट्रूमेंट करके टेस्ट कवरेज को मापता है और विश्लेषण करता है कि टेस्ट सूट चलने पर कोड की कौन सी लाइनें निष्पादित हो रही हैं और कौन सी नहीं।
तिपतिया घास क्लोवर केवल उन परीक्षणों को चलाकर परीक्षण समय को कम करता है जो पिछले निर्माण के बाद से संशोधित किए गए अनुप्रयोग कोड को कवर करते हैं।
देवपार्टनर DevPartner डेवलपर्स को विश्लेषण करने में सक्षम बनाता है Java कोड गुणवत्ता और जटिलता के लिए कोड.
एमा EMMA वर्ग, विधि, पंक्ति और आधार ब्लॉक कवरेज, समेकित स्रोत फ़ाइल, वर्ग और विधि स्तरों का समर्थन करता है।
कालिस्तिक कलिस्टिक एक तृतीय पक्ष अनुप्रयोग है जो विभिन्न दृष्टिकोणों से कोडों का विश्लेषण करता है।
CoView और CoAnt कोडिंग सॉफ्टवेयर मेट्रिक्स, मॉक ऑब्जेक्ट निर्माण, कोड परीक्षण योग्यता, पथ एवं शाखा कवरेज आदि के लिए एक कोड कवरेज उपकरण है।
बुल्सआई के लिए C++ बुल्सआईकवरेज एक कोड कवरेज उपकरण है C++ और सी।
सोनार सोनार एक खुला कोड कवरेज उपकरण है जो आपको कोड की गुणवत्ता प्रबंधित करने में मदद करता है।

कोड कवरेज का उपयोग करने के लाभ और नुकसान

कोड कवरेज लाभ कोड कवरेज के नुकसान
कोड कवरेज के मात्रात्मक माप का मूल्यांकन करने में सहायक यहां तक ​​कि जब कोई विशिष्ट सुविधा डिज़ाइन में लागू नहीं की जाती है, तब भी कोड कवरेज 100% कवरेज की रिपोर्ट करता है।
यह आपको कवरेज बढ़ाने के लिए अतिरिक्त परीक्षण मामले बनाने की अनुमति देता है यह निर्धारित करना संभव नहीं है कि हमने कोड कवरेज की सहायता से किसी विशेषता के सभी संभावित मानों का परीक्षण किया है या नहीं
यह आपको प्रोग्राम के उन क्षेत्रों को खोजने की अनुमति देता है जो परीक्षण मामलों के एक सेट द्वारा प्रयोग नहीं किए जाते हैं कोड कवरेज यह भी नहीं बताता कि आपने अपने तर्क को कितना और कितनी अच्छी तरह से कवर किया है
ऐसी स्थिति में जब निर्दिष्ट फ़ंक्शन कार्यान्वित नहीं हुआ हो, या विनिर्देश में शामिल न हो, तो संरचना-आधारित तकनीक उस समस्या का पता नहीं लगा सकती।

सारांश

  • कोड कवरेज एक माप है जो बताता है कि प्रोग्राम के स्रोत कोड का किस हद तक परीक्षण किया गया है
  • यह आपको परीक्षण कार्यान्वयन की दक्षता को मापने में मदद करता है
  • पाँच कोड कवरेज विधियाँ हैं १.) स्टेटमेंट कवरेज २.) कंडीशन कवरेज ३) ब्रांच कवरेज ४) Togglई कवरेज 5) एफएसएम कवरेज
  • स्टेटमेंट कवरेज में स्रोत कोड में सभी निष्पादन योग्य स्टेटमेंट्स का कम से कम एक बार निष्पादन शामिल होता है
  • निर्णय कवरेज प्रत्येक बूलियन अभिव्यक्ति के सही या गलत परिणामों की रिपोर्ट करता है
  • शाखा कवरेज में, कोड मॉड्यूल से प्रत्येक परिणाम का परीक्षण किया जाता है
  • सशर्त यह बताएगा कि सशर्त कथन में चर या उप-अभिव्यक्तियों का मूल्यांकन कैसे किया जाता है
  • परिमित राज्य मशीन कवरेज निश्चित रूप से कोड कवरेज विधि का सबसे जटिल प्रकार है
  • कवरेज पद्धति का चयन करने के लिए, परीक्षक को संभावित दंड की लागत, खोई हुई प्रतिष्ठा, खोई हुई बिक्री आदि की जांच करनी होगी।
  • कोड कवरेज आपको बताता है कि आपके टेस्ट बेंच द्वारा सोर्स कोड का कितनी अच्छी तरह से उपयोग किया गया है, जबकि कार्यात्मक कवरेज यह मापता है कि डिज़ाइन की कार्यक्षमता को कितनी अच्छी तरह से कवर किया गया है
  • Cobertura, जेटेस्ट, क्लोवर, एम्मा, कलिस्टिक कुछ महत्वपूर्ण कोड कवरेज उपकरण हैं
  • कोड कवरेज आपको कवरेज बढ़ाने के लिए अतिरिक्त परीक्षण मामले बनाने की अनुमति देता है
  • कोड कवरेज आपको यह निर्धारित करने में मदद नहीं करता है कि हमने किसी सुविधा के सभी संभावित मानों का परीक्षण किया है या नहीं