javascript - मैं एक इस्तांबुल कवरेज रिपोर्ट कैसे पढ़ सकता हूं?




testing jasmine (2)

मैंने हमेशा अपनी यूनिट परीक्षणों के लिए जैस्मिन का उपयोग किया है, लेकिन हाल ही में मैंने मुझे कोड कवरेज रिपोर्ट देने के लिए इस्तांबुल का उपयोग करना शुरू किया। मेरा मतलब है कि मुझे इस बात का आभास है कि वे मुझे क्या बताने की कोशिश कर रहे हैं, लेकिन मैं वास्तव में नहीं जानता कि इनमें से प्रत्येक प्रतिशत क्या दर्शाता है (Stmts, Branches, Funcs, Lines)। अब तक Googling मैं एक ठोस स्पष्टीकरण / संसाधन खोजने में असमर्थ रहा हूं।

प्रश्न : जैसे मैंने कहा कि मुझे इसका पता चल गया है, लेकिन क्या कोई व्यक्ति या तो उचित स्पष्टीकरण दे सकता है या उचित स्पष्टीकरण के लिए लिंक दे सकता है?

तृतीयक प्रश्न : क्या यह पता लगाने का कोई तरीका है कि आपके कोड के विशिष्ट भागों को कवर नहीं किया गया है? अब तक वास्तव में इस रिपोर्ट को टटोलने के बिना मैं मूल रूप से अनुमान लगा रहा हूं।

-------------------|-----------|-----------|-----------|-----------|
File               |   % Stmts |% Branches |   % Funcs |   % Lines |
-------------------|-----------|-----------|-----------|-----------|
   controllers/    |      88.1 |     77.78 |     78.57 |      88.1 |
      dashboard.js |      88.1 |     77.78 |     78.57 |      88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files          |      88.1 |     77.78 |     78.57 |      88.1 |
-------------------|-----------|-----------|-----------|-----------|

कई कवरेज मानदंड हैं, जिनमें से मुख्य हैं:

  • फंक्शन कवरेज क्या प्रोग्राम में प्रत्येक फ़ंक्शन (या सबरूटीन) को बुलाया गया है?
  • स्टेटमेंट कवरेज क्या प्रोग्राम के प्रत्येक स्टेटमेंट को निष्पादित किया गया है?
  • शाखा कवरेज क्या प्रत्येक शाखा को (प्रत्येक को डीडी-पथ भी कहा जाता है) प्रत्येक नियंत्रण संरचना (जैसे कि अगर और केस स्टेटमेंट में) को निष्पादित किया गया है? उदाहरण के लिए, यदि एक बयान दिया गया है, तो क्या सच्ची और झूठी दोनों शाखाओं को निष्पादित किया गया है? यह कहने का एक और तरीका है, क्या कार्यक्रम के प्रत्येक किनारे को निष्पादित किया गया है?
  • लाइन कवरेज है स्रोत फ़ाइल में प्रत्येक निष्पादन योग्य लाइन निष्पादित की गई है?

प्रत्येक मामले के लिए, प्रतिशत निष्पादित कोड बनाम नहीं-निष्पादित कोड का प्रतिनिधित्व करता है, जो प्रतिशत स्वरूप में प्रत्येक अंश के बराबर होता है (जैसे: 50% शाखाएं, 1/2)।

फ़ाइल रिपोर्ट में:

  • 'E' अर्थ है not और रास्ता नहीं लिया’, जिसका अर्थ है कि चिह्नित के लिए यदि / और कथन, 'if ’पथ का परीक्षण किया गया है, लेकिन' और’ नहीं।
  • 'I' अर्थ 'यदि पथ नहीं लिया गया है' है, जो कि विपरीत स्थिति है: 'यदि' का परीक्षण नहीं किया गया है।
  • बाएं कॉलम में xN उस समय की मात्रा है जिसे लाइन निष्पादित किया गया है।
  • निष्पादित पंक्तियों, या कोड के टुकड़ों को लाल रंग में हाइलाइट नहीं किया जाएगा।

यह इस्तांबुल v0.4.0 के लिए सत्यापित किया गया है, मुझे यकीन नहीं है कि यह अभी भी बाद के संस्करणों के लिए लागू होता है, लेकिन यह होने के नाते कि पुस्तकालय ठोस सिद्धांत सिद्धांतों पर आधारित है, नए संस्करणों के लिए व्यवहार बहुत अधिक नहीं बदलना चाहिए।

यह कुछ रंग कोड भी प्रदान करता है -

गुलाबी : बयान कवर नहीं।

नारंगी : कवर किए गए कार्य नहीं।

पीला : शाखाओं को कवर नहीं।

पूर्ण इस्तांबुल डॉक्स यहां:

https://istanbul.js.org

कोड कवरेज पर अधिक गहराई से सिद्धांत के लिए:

https://en.wikipedia.org/wiki/Code_coverage

आशा है ये मदद करेगा!


पिछले उत्तरों में जोड़ना

% विवरणों की गणना आपके परीक्षण द्वारा कवर किए गए कथनों की संख्या का प्रतिशत लेकर की जाती है जैसे 12/18 * 100 = 66.67%। इसका मतलब है कि आपके परीक्षण में केवल 66.67% शामिल थे।

% ब्रांच की गणना भी उसी तरह की जाती है। आपके% फ़ंक्शंस और% लाइनों के लिए भी।

आपके प्रोजेक्ट रूट डायरेक्टरी में, एक कवरेज फोल्डर होता है जिसमें आपके टेस्ट का HTML आउटपुट होता है। उस पर क्लिक करें और इसे ब्राउज़र में देखें। आपको कुछ इस तरह से देखना चाहिए

आपके परीक्षा परिणामों का आउटपुट दिखाने वाली छवि

मुझे उम्मीद है कि यह आपको इसे बेहतर ढंग से समझने में मदद करेगा।






istanbul