PHP में TDD: टेस्ट कैसे कोड को कला में बदलते हैं

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

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

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

परिचय: आपका कोड सम्मान (और टेस्ट) का हकदार क्यों है

\n\n

कल्पना करें: आप कोड लिखते हैं, वह काम करता है, सब कुछ ठीक है। लेकिन एक महीने बाद आप प्रोजेक्ट पर वापस आते हैं, एक नई सुविधा जोड़ते हैं — और अचानक सब कुछ टूट जाता है। परिचित लगता है? अगर हाँ, तो PHP में TDD वही है जिसकी आपको ज़रूरत है। टेस्ट-ड्रिवेन डेवलपमेंट (Test-Driven Development) सिर्फ एक फैशनेबल ट्रेंड नहीं, बल्कि एक दर्शन है जो कोड के प्रति नज़रिया बदल देता है। इस लेख में हम देखेंगे कि कैसे TDD अव्यवस्था को व्यवस्था में और बग्स को अतीत की चीज़ में बदल देता है। आप सीखेंगे कि PHP में ऐसे टेस्ट कैसे लिखें जो वास्तव में समय बचाते हैं, और इसे कोड उदाहरणों के साथ देखेंगे। चलिए शुरू करते हैं!

\n\n

TDD क्या है और PHP में इसकी ज़रूरत क्यों है?

\n\n

PHP में TDD एक पद्धति है जहाँ आप पहले टेस्ट लिखते हैं, फिर कोड जो उस टेस्ट को पास करता है। अजीब लगता है? असल में यह शानदार है। यह अनुमान लगाने के बजाय कि आपका कोड काम करता है या नहीं, आपको तुरंत फीडबैक मिलता है। TDD के मुख्य सिद्धांत:

\n\n
    \n
  • लाल — एक ऐसा टेस्ट लिखें जो फेल हो (क्योंकि कोड अभी लिखा नहीं गया है)।
  • \n
  • हरा — न्यूनतम कोड लिखें ताकि टेस्ट पास हो जाए।
  • \n
  • रीफैक्टरिंग — टेस्ट को तोड़े बिना कोड को बेहतर बनाएं।
  • \n
\n\n

यह चक्र बार-बार दोहराया जाता है। PHP में TDD विशेष रूप से उपयोगी है क्योंकि इस भाषा का उपयोग अक्सर वेब एप्लिकेशन के लिए किया जाता है, जहाँ गलतियाँ महंगी पड़ सकती हैं। PHPUnit (टेस्टिंग का मुख्य फ्रेमवर्क) पर टेस्ट रिग्रेशन से बचने में मदद करते हैं और कोड को पारदर्शी बनाते हैं। साथ ही, TDD अनुशासन सिखाता है: आप कोड लिखने से पहले डिज़ाइन के बारे में सोचना शुरू कर देते हैं।

\n\n

PHP टेस्टिंग के लिए वातावरण सेटअप करना

\n\n

उदाहरणों में गोता लगाने से पहले, वातावरण तैयार करते हैं। PHP में टेस्ट-ड्रिवेन डेवलपमेंट के लिए हमें PHPUnit चाहिए। इंस्टॉलेशन आसान है:

\n\n
composer require --dev phpunit/phpunit ^10
\n\n

प्रोजेक्ट की रूट में tests नामक फ़ोल्डर बनाएं। अंदर CalculatorTest.php फ़ाइल बनाएं। सुनिश्चित करें कि आपके पास PHP 8.0+ इंस्टॉल है। अब पहले टेस्ट के लिए सब कुछ तैयार है।

\n\n

पहला टेस्ट: TDD के साथ कैलकुलेटर बनाना

\n\n

चलिए एक सरल कैलकुलेटर बनाते हैं। पहले — टेस्ट। यह शुरुआती लोगों के लिए PHP TDD का एक क्लासिक उदाहरण है।

\n\n

चरण 1: लाल (फेल होने वाला टेस्ट लिखें)

\n\n

tests/CalculatorTest.php बनाएं:

\n\n
<?php\n\nuse PHPUnit\\Framework\\TestCase;\n\nclass CalculatorTest extends TestCase\n{\n    public function testAddition()\n    {\n        $calculator = new Calculator();\n        $result = $calculator->add(2, 3);\n        $this->assertEquals(5, $result);\n    }\n}
\n\n

टेस्ट चलाएं:

\n\n
./vendor/bin/phpunit tests/CalculatorTest.php
\n\n

एरर की उम्मीद करें: Class "Calculator" not found। सब योजना के अनुसार — यह लाल चरण है।

\n\n

चरण 2: हरा (न्यूनतम कोड लिखें)

\n\n

src/Calculator.php बनाएं:

\n\n
<?php\n\nclass Calculator\n{\n    public function add(int $a, int $b): int\n    {\n        return $a + $b;\n    }\n}
\n\n

टेस्ट में ऑटोलोडिंग शामिल करना न भूलें:

\n\n
require_once __DIR__ . '/../src/Calculator.php';
\n\n

टेस्ट फिर से चलाएं — हरा! अब रीफैक्टरिंग। इस चरण पर कोड सरल है, लेकिन बाद में आप इसे बिना तोड़ने के डर के बेहतर कर सकते हैं।

\n\n

चरण 3: आत्मविश्वास के साथ रीफैक्टरिंग

\n\n

मान लें, हम टाइप चेकिंग जोड़ना चाहते हैं। कोड बदलें:

\n\n
public function add(int $a, int $b): int\n{\n    if (!is_int($a) || !is_int($b)) {\n        throw new InvalidArgumentException('Only integers allowed');\n    }\n    return $a + $b;\n}
\n\n

टेस्ट चलाएं — वे अभी भी पास होते हैं। TDD आपको प्रयोग करने का साहस देता है।

\n\n

उन्नत TDD: एक्सेप्शन और मॉक के साथ काम करना

\n\n

जब आप बेसिक सीख लें, तो जटिल परिदृश्यों पर जाएं। उदाहरण के लिए, एक्सेप्शन टेस्टिंग। PHP यूनिट टेस्ट में यह

ब्लॉग

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