C++ टेस्टिंग शुरुआती के लिए: कहाँ से शुरू करें और परेशान न हों

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

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

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

परिचय: आपके C++ कोड को सुरक्षा की ज़रूरत क्यों है?

\n\n

कल्पना कीजिए कि आपने C++ में एक प्रोग्राम लिखा है। यह बिना किसी त्रुटि के कंपाइल होता है, चलता है और कुछ आउटपुट भी देता है। आप राहत की सांस लेते हैं और कोड को प्रोडक्शन में भेज देते हैं। लेकिन एक दिन बाद आपका सहकर्मी कहता है: "अरे, तुम्हारा calculateSum फंक्शन फेल हो रहा है अगर नेगेटिव नंबर दिया जाए।" और आप बुखार से बग ढूंढने लगते हैं, सैकड़ों लाइनों का कोड पढ़ते हुए।

\n\n

यह स्थिति जानी-पहचानी लगती है? अगर हाँ, तो आप सही जगह पर हैं। C++ टेस्टिंग कोई उबाऊ औपचारिकता नहीं है, बल्कि ऐसी घटनाओं से बचाने वाली आपकी निजी ढाल है। इस लेख में हम जानेंगे कि C++ टेस्टिंग शुरुआती के लिए कहाँ से शुरू करें, बिना थ्योरी के जंगल में खोए। आप जानेंगे कि कौन से टूल्स इस्तेमाल करें, पहले टेस्ट कैसे लिखें और यह आपके घंटों की नसों को कैसे बचाएगा।

\n\n

यूनिट-टेस्टिंग क्या है और इसकी ज़रूरत क्यों है?

\n\n

यूनिट-टेस्टिंग (या मॉड्यूलर टेस्टिंग) आपके कोड के अलग-अलग "बिल्डिंग ब्लॉक्स" की जाँच है: फंक्शन, क्लास, मेथड। आप एक छोटा प्रोग्राम लिखते हैं जो आपके फंक्शन को कुछ डेटा के साथ कॉल करता है और जाँचता है कि रिजल्ट अपेक्षित है या नहीं।

\n\n

शुरुआती के लिए यह क्यों ज़रूरी है?

\n
    \n
  • मानसिक शांति: आपको पक्का पता होता है कि आपका कोड सही काम कर रहा है।
  • \n
  • गति: आप बदलाव करने से नहीं डरते, क्योंकि टेस्ट तुरंत बता देंगे कि कुछ टूटा है या नहीं।
  • \n
  • दस्तावेज़ीकरण: टेस्ट आपके कोड के उपयोग का एक जीवंत उदाहरण हैं।
  • \n
\n\n

C++ टेस्टिंग के बिना प्रोजेक्ट ऐसे है जैसे बिना नींव का घर। दिखने में तो खड़ा है, लेकिन पहला भूकंप (यानी ज़रूरतों में बदलाव) इसे गिरा देगा।

\n\n

C++ टेस्टिंग के टूल्स: अपना पहला फ्रेमवर्क चुनें

\n\n

C++ यूनिट टेस्ट के लिए कई लोकप्रिय फ्रेमवर्क हैं। शुरुआती के लिए मैं दो सुझाता हूँ: Google Test (gtest) और Catch2। दोनों मुफ्त हैं, बेहतरीन डॉक्यूमेंटेशन है और आसानी से जुड़ते हैं।

\n\n

Google Test (gtest)

\n

इंडस्ट्री का मानक। Google, YouTube और कई ओपन-सोर्स प्रोजेक्ट्स में इस्तेमाल होता है। शक्तिशाली है, लेकिन कुछ सेटअप चाहता है।

\n\n

Catch2

\n

ज़्यादा हल्का और शुरुआती के लिए "दोस्ताना"। एक ही हेडर फाइल से जुड़ता है। शुरुआत के लिए आदर्श।

\n\n

इस लेख में हम Catch2 का उपयोग करेंगे — यह न्यूनतम है और आपको सेटअप के बजाय मूल बातों पर ध्यान केंद्रित करने देगा।

\n\n

Catch2 कैसे इंस्टॉल करें और पहला टेस्ट लिखें?

\n\n

Catch2 इंस्टॉल करना आसान है। आधिकारिक रिपॉजिटरी से सिर्फ एक हेडर फाइल catch.hpp डाउनलोड करें और इसे अपने प्रोजेक्ट फोल्डर में रखें। किसी cmake, make या लिंकिंग की ज़रूरत नहीं।

\n\n

अब एक सरल C++ प्रोग्राम लिखते हैं और उसका टेस्ट करते हैं।

\n\n

उदाहरण: जोड़ने का फंक्शन

\n

एक फाइल बनाएँ calculator.cpp:

\n\n
#include <iostream>\n#include "catch.hpp"\n\n// फंक्शन जिसे हम टेस्ट करेंगे\nint add(int a, int b) {\n    return a + b;\n}\n\n// टेस्ट\nTEST_CASE("Addition works correctly", "[math]") {\n    REQUIRE(add(2, 3) == 5);\n    REQUIRE(add(-1, 1) == 0);\n    REQUIRE(add(0, 0) == 0);\n    REQUIRE(add(100, 200) == 300);\n}
\n\n

अब इसे कंपाइल करें और चलाएँ:

\n\n
g++ -std=c++11 calculator.cpp -o calculator_test\n./calculator_test
\n\n

आपको कुछ ऐसा दिखेगा:

\n\n
All tests passed (4 assertions in 1 test case)
\n\n

बधाई हो! आपने अपना पहला C++ यूनिट टेस्ट लिख लिया है। आइए समझें कि यहाँ क्या हुआ:

\n
    \n
  • TEST_CASE — एक मैक्रो है जो टेस्ट सीनारियो बनाता है।
  • \n
  • REQUIRE — शर्त की जाँच करता है। अगर यह गलत है, तो टेस्ट फेल हो जाता है।
  • \n
  • "[math]" — टेस्ट को ग्रुप करने के लिए टैग।
  • \n
\n\n

व्यावहारिक सुझाव: अच्छे टेस्ट कैसे लिखें

\n\n

सिर्फ टेस्ट लिखना काफी नहीं है। उपयोगी टेस्ट लिखना ज़रूरी है। यहाँ कुछ नियम हैं जो आपकी C++ टेस्टिंग को बेहतर बनाएंगे:

ब्लॉग

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