TypeScript में कोड कवरेज परीक्षण: सर्वोत्तम उपकरण और मीट्रिक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में कोड कवरेज परीक्षण: अनुमान लगाना बंद करें और मापना शुरू करें

\n\n

कल्पना करें कि आप कई गियर वाली एक जटिल मशीन जोड़ रहे हैं। आपको यकीन है कि आपने सब कुछ सही ढंग से जोड़ा है, लेकिन जैसे ही आप "स्टार्ट" बटन दबाते हैं, एक खड़खड़ाहट की आवाज़ आती है और मशीन जाम हो जाती है। परिचित स्थिति? TypeScript डेवलपमेंट की दुनिया में, ऐसी "मशीनें" हमारे एप्लिकेशन हैं। और कोड कवरेज परीक्षण एक गुणवत्ता जांच है जो दिखाता है कि हमने किन भागों की जाँच की और किन्हें संयोग पर छोड़ दिया।

\n\n

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

\n\n

कोड कवरेज क्या है और TypeScript कोई अपवाद क्यों नहीं है

\n\n

कोड कवरेज (code coverage) एक मीट्रिक है जो दिखाता है कि परीक्षणों के दौरान स्रोत कोड का कितना हिस्सा निष्पादित किया गया था। TypeScript में, जो JavaScript में संकलित होता है, कवरेज माप संकलित कोड के स्तर पर होता है, लेकिन आधुनिक उपकरण मूल TS कोड के संदर्भ में परिणामों को खूबसूरती से प्रदर्शित कर सकते हैं।

\n\n

जानने योग्य मुख्य कवरेज मीट्रिक:

\n\n
    \n
  • Line coverage — कोड की उन पंक्तियों का प्रतिशत जो कम से कम एक बार निष्पादित की गईं।
  • \n
  • Branch coverage — उन शाखाओं (if/else, switch, ternary ऑपरेटर) का प्रतिशत जिनका परीक्षण किया गया।
  • \n
  • Function coverage — उन फ़ंक्शन/मेथड का प्रतिशत जिन्हें कॉल किया गया।
  • \n
  • Statement coverage — कोड में अलग-अलग निर्देशों (स्टेटमेंट) का प्रतिशत।
  • \n
\n\n

TypeScript प्रोजेक्ट के लिए branch coverage विशेष रूप से महत्वपूर्ण है, क्योंकि सख्त टाइपिंग शर्तों में तार्किक त्रुटियों से नहीं बचाती है। आप सभी वेरिएबल को सही ढंग से टाइप कर सकते हैं, लेकिन उस मामले को भूल सकते हैं जब ऐरे खाली हो और फ़ंक्शन कम से कम एक तत्व की अपेक्षा करता हो।

\n\n

TypeScript में कवरेज मापने के उपकरण

\n\n

1. Istanbul (nyc) — सभी कवरेज का दादा

\n\n

Istanbul JavaScript और TypeScript कोड के कवरेज को मापने के लिए सबसे लोकप्रिय उपकरण है। यह एक स्टैंडअलोन उपयोगिता (पैकेज nyc के माध्यम से) या परीक्षण फ्रेमवर्क में एक अंतर्निहित मॉड्यूल के रूप में काम करता है।

\n\n

TypeScript प्रोजेक्ट में Istanbul के साथ काम शुरू करने के लिए, इंस्टॉल करें:

\n\n
npm install --save-dev nyc typescript ts-node
\n\n

कॉन्फ़िगरेशन के लिए .nycrc फ़ाइल बनाएं:

\n\n
{\n  "extends": "@istanbuljs/nyc-config-typescript",\n  "all": true,\n  "include": ["src/**/*.ts"],\n  "exclude": ["src/**/*.test.ts", "src/**/*.spec.ts"],\n  "reporter": ["text", "html", "lcov"],\n  "check-coverage": true,\n  "branches": 80,\n  "lines": 85,\n  "functions": 85,\n  "statements": 85\n}
\n\n

कवरेज के साथ परीक्षण चलाएं:

\n\n
npx nyc mocha --require ts-node/register src/**/*.test.ts
\n\n

Istanbul कंसोल (text) और HTML पेजों के रूप में रिपोर्ट उत्पन्न करता है, जहाँ कवर किए गए कोड को हरे रंग में और अनकवर्ड कोड को लाल रंग में हाइलाइट किया जाता है। यह बहुत स्पष्ट है।

\n\n

2. Jest — सब कुछ एक में

\n\n

Jest TypeScript के लिए सबसे लोकप्रिय परीक्षण फ्रेमवर्क है। इसमें पहले से ही Istanbul पर आधारित एक अंतर्निहित कवरेज उपकरण शामिल है। आपको कुछ भी अतिरिक्त इंस्टॉल करने की आवश्यकता नहीं है।

\n\n

jest.config.ts में बुनियादी सेटअप:

\n\n
import type { Config } from 'jest';\n\nconst config: Config = {\n  preset: 'ts-jest',\n  testEnvironment: 'node',\n  collectCoverage: true,\n  coverageDirectory: 'coverage',\n  coverageReporters: ['text', 'html', 'lcov'],\n  collectCoverageFrom: [\n    'src/**/*.ts',\n    '!src/**/*.test.ts',\n    '!src/**/*.spec.ts',\n    '!src/types/**/*.ts'\n  ],\n  coverageThresho                

ब्लॉग

पुस्तक अनुशंसाएँ