E2E टेस्टिंग PHP एप्लिकेशन: बग्स से बचने का आसान तरीका

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

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

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

सामान्य यूनिट टेस्ट क्यों काफी नहीं हैं? E2E क्या है?

\n\n

कल्पना करें: आपने परफेक्ट कोड लिखा। यूनिट टेस्ट सब हरे हैं, कवरेज 90% है, आर्किटेक्चर बेहतरीन है। आप रिलीज़ करते हैं... और यूज़र्स शिकायत करते हैं कि "भुगतान करें" बटन काम नहीं कर रहा, जबकि डेटाबेस में सब कुछ सही है। यह दर्द जाना-पहचाना है?

\n\n

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

\n\n

E2E टेस्ट एक रियल यूज़र के व्यवहार को सिम्युलेट करते हैं: बटन पर क्लिक करना, फॉर्म भरना, रीडायरेक्ट और API रिस्पॉन्स चेक करना। PHP की दुनिया में यह खासतौर पर महत्वपूर्ण है, क्योंकि एक सामान्य एप्लिकेशन Laravel/Symfony, डेटाबेस, क्यू और एक्सटर्नल सर्विसेज़ का एक जटिल जाल होता है। E2E के बिना, आप ऐसे बग्स को मिस कर सकते हैं जो यूज़र एक्सपीरियंस को बर्बाद कर देंगे।

\n\n

PHP प्रोजेक्ट्स के लिए E2E टेस्टिंग टूल्स

\n\n

PHP इकोसिस्टम में दो मुख्य प्लेयर हैं। बिना देर किए, ये रहे:

\n\n
    \n
  • Codeception — सबसे लोकप्रिय फ्रेमवर्क जो यूनिट, फंक्शनल और E2E टेस्ट को एक साथ लाता है। इसमें Selenium WebDriver, PHPBrowser और REST API के लिए बिल्ट-इन सपोर्ट है।
  • \n
  • PHPUnit + Selenium WebDriver — क्लासिक कॉम्बिनेशन, जहां PHPUnit टेस्ट रन करता है और Selenium ब्राउज़र इम्यूलेशन करता है। इसमें ज़्यादा मैन्युअल सेटअप चाहिए, लेकिन पूरा कंट्रोल मिलता है।
  • \n
\n\n

मैं शुरुआत के लिए Codeception की सिफारिश करता हूं: यह लोकप्रिय CMS (WordPress, Drupal) और फ्रेमवर्क (Laravel, Yii2) के साथ अच्छा काम करता है, और कॉन्फ़िगरेशन में सिर्फ 10 मिनट लगते हैं।

\n\n

E2E के लिए Codeception इंस्टॉल करना

\n\n

अपने प्रोजेक्ट की रूट में composer.json फ़ाइल बनाएं (अगर नहीं है) और यह कमांड चलाएं:

\n\n
composer require --dev codeception/codeception codeception/module-webdriver codeception/module-phpbrowser
\n\n

फिर फ्रेमवर्क को इनिशियलाइज़ करें:

\n\n
vendor/bin/codecept init
\n\n

आपसे पूछा जाएगा कि किस तरह के टेस्ट बनाने हैं। Acceptance (E2E) चुनें। इसके बाद tests/acceptance फ़ोल्डर और codeception.yml कॉन्फ़िग फ़ाइल बन जाएगी।

\n\n

पहला E2E टेस्ट लिखना: यूज़र रजिस्ट्रेशन

\n\n

सबसे आम सीनारियो है रजिस्ट्रेशन। चलिए जांचते हैं कि फॉर्म सही से काम कर रहा है और सबमिट करने के बाद यूज़र को स्वागत संदेश दिखता है या नहीं।

\n\n

ब्राउज़र के साथ काम करने के लिए कॉन्फ़िगरेशन

\n\n

tests/acceptance.suite.yml खोलें और WebDriver मॉड्यूल (Chrome के लिए) सेट करें:

\n\n
actor: AcceptanceTester\nmodules:\n    enabled:\n        - WebDriver:\n            url: 'http://localhost:8000'  # आपके लोकल सर्वर का URL\n            browser: chrome\n            window_size: 1920x1080\n            capabilities:\n                chromeOptions:\n                    args: ["--headless", "--no-sandbox"]  # CI के लिए हेडलेस\n        - Db:\n            dsn: 'mysql:host=localhost;dbname=testdb'\n            user: 'root'\n            password: ''\n            populate: true\n            cleanup: true\n
\n\n

महत्वपूर्ण: एक अलग टर्मिनल में Selenium सर्वर (या ChromeDriver) चलाना न भूलें:

\n\n
java -jar selenium-server-standalone.jar
\n\n

टेस्ट का कोड

\n\n

tests/acceptance/RegistrationCest.php फ़ाइल बनाएं:

\n\n
<?php\nuse Codeception\\Util\\Locator;\n\nclass RegistrationCest\n{\n    public function _before(AcceptanceTester $I)\n    {\n        $I->amOnPage('/register');\n    }\n\n    public function testSuccessfulRegistration(AcceptanceTester $I)\n    {\n        // 1. फॉर्म भरें\n        $I->fillField('input[name="name"]', 'राहुल शर्मा');\n        $I->fillField('input[name="email"]', 'rahul@example.com');\n        $I->fillField('input[name="password"]', 'StrongPass123!');\n                

ब्लॉग

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