Introduction to PHPUnit In Hindi

Introduction to PHPUnit In Hindi

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

Introduction to PHPUnit In Hindi

Why Use PHPUnit?

  • Automated Testing – पीएचपीयूनिट फीचर्स वेब डेवलपर को अपने मौजूदा प्रोग्राम सोर्स कोड के टेस्टिंग प्रोसेस को आटोमेटिक करने, सिस्टम प्रोसेस टाइम बचाने और ह्यूमन एरर को कम करने की परमिशन प्रोवाइड करता है।
  • Test-Driven Development (TDD) – पीएचपीयूनिट को यूज़ करके डेवलपर TDD प्रोसेस को फॉलो कर सकते हैं, जहाँ यूजर रियलटाइम प्रोग्राम सोर्स कोड क्रिएट करने से पहले उस सोर्स कोड का टेस्टिंग लिखते हैं। यह प्रोसेस तय करता है कि यूजर प्रोग्राम सोर्स कोड डेवलपमेंट करते समय कम्प्लीटली टेस्ट किया जाए।
  • Regression Testing – जब यूजर अपने पीएचपीयूनिट के लिए प्रोग्राम सोर्स कोड के लिए टेस्ट लिख लेते हैं, इसके बाद पीएचपीयूनिट को रेगुलर आर्डर में रन करके यह सुनिश्चित होता है कि नए पीएचपीयूनिट यूजर मोडफिकेशन पहले से बेहतर काम कर रही कैपेबिलिटी को इम्पैक्ट न करें।
  • Refactoring – पीएचपीयूनिट डेवलपर यूजर को यह तय करने में हेल्प करता है कि जब यूजर अपने प्रोग्राम सोर्स कोड को रीफैक्टर या रीऑर्गनाइज करते हैं, इसके बाद भी इसकी एक्सिस्टिंग कपैबिलिटी मेन्टेन रहती है।

Key Features of the PHPUnit Framework.

  • Assertions – पीएचपीयूनिट कई अभिकथन ऐसी मेथड है, जो आपके द्वारा क्रिएट किए गए प्रोग्राम सोर्स कोड में प्रोग्राम कंडीशन को टेस्ट करती हैं, जिससे की यह चेक किया जा सके कि एक्सपेक्टेड वैल्यू रियलटाइम वैल्यू से प्रॉपर मैच होती है या नहीं है।
  • Test Suite – यह पीएचपीयूनिट में रिलेटेड टेस्टिंग्स का एक कलेक्शन है, जिसे डेवलपर यूजर एक साथ रन कर सकते हैं।
  • Mock Objects – इसमें पीएचपीयूनिट में यूजर काम्प्लेक्स डिपेंडेंसी को फॉलो करने के लिए मॉक ऑब्जेक्ट को यूज़ कर सकते हैं, जिससे की प्रोग्राम सोर्स कोड की आइसोलेटेड यूनिट का टेस्टिंग करना इजी हो जाता है।
  • Code Coverage – इसमें यह पीएचपीयूनिट सोर्स कोड कवरेज की डिटेल्ड रिपोर्ट प्रीपर कर सकता है, जो आपको प्रीव्यू करता है कि प्रोग्राम सोर्स कोड की किन लाइन्स का टेस्टिंग किया जा रहा है, और किनका नहीं है।

Setting up PHPUnit/Installing PHPUnit.

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

Step 1 – पहले अपने सिस्टम में पीएचपीयूनिट को ग्लोबली कंपोजर के माध्यम से इनस्टॉल करे.

composer global require phpunit/phpunit

यहाँ अल्टरनेटिव आर्डर में यूजर पीएचपीयूनिट को किसी स्पेसिफिक प्रोजेक्ट में डेवलपमेंट डिपेंडेंसी के रूप में ऐड कर इंस्टॉल कर सकते हैं.

composer require –dev phpunit/phpunit

Step 2 – यहाँ यूजर पहले तय करें कि कंपोज़र की bin डायरेक्टरी आपके सिस्टम के $PATH में मौजूद है, ताकि यूजर कमांड लाइन से पीएचपीयूनिट का यूज़ कर सकें। इसमें आप यह चेक कर सकते हैं कि पीएचपीयूनिट आपके मशीन में प्रॉपर आर्डर में इंस्टॉल है या नहीं है.

phpunit –version

Configuring PHPUnit on the system.

अपने सिस्टम में पीएचपीयूनिट को कॉन्फ़िगर करने के लिए यूजर अपने प्रोजेक्ट के रूट में एक phpunit.xml कॉन्फ़िगरेशन फ़ाइल को क्रिएट कर सकते हैं। यह फ़ाइल यूजर टेस्टिंग डायरेक्ट्रीज, टेस्टिंग ऑप्शन और अन्य कॉन्फ़िगरेशन डिस्क्रिप्शन इंडीकेट करने की परमिशन प्रोवाइड करती है।

Example of phpunit.xml.

<?xml version=”1.0″ encoding=”UTF-8″?>

<phpunit bootstrap=”vendor/autoload.php”>

    <testsuites>

        <testsuite name=”TestProject Test Suite”>

            <directory suffix=”Test.php”>./tests</directory>

        </testsuite>

    </testsuites>

</phpunit>

  • bootstrap – यह पीएचपीयूनिट टेस्टिंग को रन करने से पहले ऐड करने के लिए बूटस्ट्रैप फ़ाइल को इंडीकेट करता है, सामान्यता तोर पर कंपोज़र का ऑटोलोडर है।
  • testsuites – यह पीएचपीयूनिट में रन करने के लिए टेस्टिंग का एक सेट डिफाइन करता है, जो सामान्यता रूप से टेस्टिंग क्लासेज वाली एक डायरेक्टरी की ओर इंडीकेट करता है।

Writing your first PHPUnit test.

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

Example class to test in PHPUnit.

तो चलिए यहाँ हम एक बेसिक क्लास क्रिएट करे, जिसे हम टेस्टिंग करना चाहते हैं। एक्साम्प्ल, जैसे एक कैलकुलेट क्लास क्रिएट किया गया है.

// src/Calculat.php

namespace App;

class Calculat

{

    public function addition($p, $q)

    {

        return $p + $q;

    }

    public function subtract($p, $q)

    {

        return $p – $q;

    }

}

Writing a test case in PHPUnit.

यहाँ कैलकुलेट क्लास के लिए एक टेस्ट केस क्रिएट करते हैं। जिसमे की पीएचपीयूनिट में टेस्ट क्लास को PHPUnit\Framework\TestCase को एक्सटेंड करना चाहिए।

/// tests/CalculatTest.php

namespace Tests;

use PHPUnit\Framework\TestCase;

use App\Calculat;

class CalculatTest extends TestCase

{

    private $calculat;

    protected function setUp(): void

    {

        $this->calculat = new Calculat();

    }

    public function testAddition()

    {

        $output = $this->calculat->addition(3, 4);

        $this->assertEquals(7, $ output);  // Asserts that 3 + 4 is equals 7

    }

    public function testSubtract()

    {

        $ output = $this->calculat->subtract(7, 3);

        $this->assertEquals(4, $ output);  // Asserts that 7 – 3 equals 4

    }

}

Here in this example.

  • setUp() – इसमें एक पीएचपीयूनिट मेथड है, जो हर टेस्टिंग से पहले रन होती है। इसका यूज़ कई टेस्टिग्स में जरूरी रिसोर्सेज या ऑब्जेक्ट्स को स्टार्ट करने के लिए किया जाता है।
  • testAddition() and testSubtract() – ये सिस्टम में मल्टीप्ल इंडिविजुअल टेस्टिंग मेथड हैं, जो प्रत्येक कैलकुलेट क्लास के एक बिहैवियर को टेस्टिंग करती हैं।
  • assertEquals() – यह एक अभिकथन क्लास मेथड है, जो टेस्ट करती है कि एक्सपेक्टेड वैल्यू परीक्षणाधीन मेथड द्वारा रिटर्न किए गए रियलटाइम वैल्यू से मैच होता है या नहीं है।

Running PHPUnit Tests.

यूजर अपने पीएचपीयूनिट टेस्टिंग रन करने के लिए यूजर अपने टर्मिनल में निम्न कमांड को अप्लाई कर सकते हैं.

phpunit –configuration phpunit.xml

यदि यहाँ आपके पीएचपीयूनिट टेस्टिंग पास हो जाते हैं, तो इसमें पीएचपीयूनिट इस तरह का आउटपुट प्रीव्यू करेगा।

Okay, 2 tests, 2 assertions.

यदि यहाँ पीएचपीयूनिट टेस्टिंग फ़ैल हो जाते हैं, तो यह यूजर को डिटेल इनफार्मेशन दिखाएगा कि क्या गलत हुआ।

Common Assertions in PHPUnit.

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

  • assertEquals($expected, $actual) – यह पीएचपीयूनिट में इंडीकेट करता है कि दो वैल्यू इक्वल हैं।
  • assertTrue($condition) – यह पीएचपीयूनिट में इंडीकेट करता है कि कोई दी गई कंडीशन ट्रू है।
  • assertFalse($condition) – यह पीएचपीयूनिट में इंडीकेट करता है कि कोई दी गई कंडीशन फाल्स है।
  • assertNull($value) – यह पीएचपीयूनिट में इंडीकेट करता है कि कोई वैल्यू नल्ल है।
  • assertNotNull($value) – यह पीएचपीयूनिट में इंडीकेट करता है कि कोई वैल्यू नल नहीं है।
  • assertCount($expectedCount, $array) – यह इंडीकेट करता है कि किसी ऐरे में एलिमेंट की एक्सपेक्टेड नंबर है।
  • assertInstanceOf($expectedClass, $object) – यह पीएचपीयूनिट में इंडीकेट करता है कि कोई ऑब्जेक्ट किसी दिए गए क्लास का एक एक्साम्प्ल है।

Test-Driven Development (TDD) with PHPUnit.

पीएचपीयूनिट का यूज़ सामान्यता तोर पर टेस्टिंग ड्रिवेन डेवलपमें (TDD) में किया जाता है, जो की एक पॉपुलर सॉफ़्टवेयर डेवलपमेंट पद्धति है जहाँ यूजर रियलटाइम प्रोग्राम सोर्स कोड क्रिएट करने से पहले टेस्टिंग लिखते हैं।

  • Write a test – इसमें आप एक फैलिंग टेस्टिंग लिखकर स्टार्ट करें, जो यूजर के डिजायर बिहैवियर को एक्सप्लेन करता हो।
  • Write code – इसमें पीएचपीयूनिट टेस्टिंग को पास करने के लिए पर्याप्त सोर्स कोड को लिखें।
  • Refactor – इसमें यूजर सुनिश्चित करते हुए प्रोग्राम सोर्स कोड को क्लियर करें कि पीएचपीयूनिट टेस्टिंग अभी भी पास हो।

Mocking and Stubbing.

कुछ पर्टिकुलर कंडीशन में यूजर को ऐसे प्रोग्राम सोर्स कोड का टेस्टिंग करना पड़ सकता है, जो अन्य क्लास या बाहरी सर्विसेज पर डिपेंड करता है। इन डिपेंडेंसी को अलग से फॉलो करने के लिए मॉक और स्टब का यूज़ किया जाता है।

  • Mocks – ये ऐसे ऑब्जेक्ट होते है, जो रियलटाइम ऑब्जेक्ट के बिहैवियर की नकल करते हैं, और यूजर को यह डिफाइन करने की परमिशन प्रोवाइड करते हैं कि पीएचपीयूनिट टेस्टिंग के दौरान उन्हें कैसे बिहेव करना चाहिए।
  • Stubs – यह पीएचपीयूनिट में ऑब्जेक्ट के सरलीकृत वर्जन है, जो टेस्टिंग के दौरान निश्चित डेटा को रिटर्न करता हैं।

Example of PHPUnit mocking.

use PHPUnit\Framework\TestCase;

class SomeClassTest extends TestCase

{

    public function testDoSomething()

    {

        $mock = $this->createMock(otherClass::class);

        $mock->method(‘testMethod’)->willReturn(32);

        $output = $mock->testMethod();

        $this->assertEquals(32, $output);

    }

}

इस कंडीशन में otherClass को मॉक किया जाता है, और इसके testMethod() को टेस्टिंग के लिए एक फिक्स्ड वैल्यू (32) रिटर्न के लिए डिज़ाइन किया गया है।

Program source code coverage with PHPUnit.

इसमें पीएचपीयूनिट एक कोड कवरेज रिपोर्ट को क्रिएट कर सकता है, जो प्रीव्यू करता है कि पीएचपीयूनिट टेस्टिंग के द्वारा सोर्स कोड की कौन सी रौस एक्सेक्यूट की गई हैं, और कौन सी रौस अभी कवर नहीं की गई हैं। यह यूजर सोर्स कोड के उन हिस्सों की पहचान करने में हेल्प करता है, जिनका अभी भी पर्याप्त टेस्टिंग नहीं किया गया है।

पीएचपीयूनिट में सोर्स कोड कवरेज इनेबल करने के लिए यूजर को Xdebug या PCOV टूल्स को इंस्टॉल करना होगा और फिर निचे दिए गए प्रोग्राम कमांड के साथ टेस्टिंग को रन करना होगा।

phpunit –coverage-html ./coverage-report

यह आपके लिए एक HTML रिपोर्ट को तैयार करता है, जो आपको प्रीव्यू करता है कि आपके प्रोग्राम सोर्स कोड के कौन से हिस्से टेस्टिंग प्रोसेस द्वारा कवर किए गए थे।

Key benefits of using PHPUnit

  • Automated Testing – पीएचपीयूनिट में यूजर कुछ ऐसे टेस्टिंग को लिखें, जिन्हें आटोमेटिक आर्डर में एक्सेक्यूट किया जा सके।
  • Assertions – इसमें यूजर चेक करे कि आपका प्रोग्राम सोर्स कोड एक्सपेक्टेड टास्क कर रहा है या नहीं है।
  • Mocking – यहाँ पीएचपीयूनिट में आइसोलेटेड टेस्टिंग के लिए काम्प्लेक्स डिपेंडेंसी को फॉलो करें।
  • Code Coverage – इसमें यूजर पहले ट्रैक करें कि आपके प्रोग्राम सोर्स कोड के किन हिस्सों का अच्छी तरह से टेस्टिंग किया गया है।

Conclusion on PHPUnit Testing.

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

Leave a Reply