E2E टेस्टिंग C#: प्रोडक्शन में बग्स से छुटकारा पाने की गाइड

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

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

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

यूनिट टेस्ट क्यों काफी नहीं हैं, और E2E टेस्ट कब जरूरी हैं

\n\n

सोचिए: आपने C# में परफेक्ट कोड लिखा। यूनिट टेस्ट पास हैं, कोड कवरेज 95% है, कोड-रिव्यू भी हो गया। आप रिलीज़ करते हैं, और यूज़र्स शिकायत करते हैं: "अगर कार्ट में 3 से ज़्यादा आइटम हैं तो 'ऑर्डर करें' बटन काम नहीं करता।" यह परिचित लगता है?

\n\n

यूनिट टेस्ट मेथड्स को अलग-थलग जांचते हैं। इंटीग्रेशन टेस्ट डेटाबेस और API के कनेक्शन को चेक करते हैं। लेकिन C# एप्लिकेशन का E2E टेस्टिंग (एंड-टू-एंड) ही एकमात्र तरीका है यह सुनिश्चित करने का कि पूरा सिस्टम एक साथ काम कर रहा है: ब्राउज़र, सर्वर, डेटाबेस, बाहरी API। स्कोप्ड टेस्ट रियल यूज़र के एक्शन को सिम्युलेट करते हैं: क्लिक, डेटा एंट्री, पेज लोड होने का इंतज़ार।

\n\n

इस आर्टिकल में हम सिर्फ थ्योरी नहीं बताएंगे। हम दिखाएंगे कि Selenium और Playwright के साथ C# में E2E टेस्ट कैसे लिखें, Page Object Model के ज़रिए कोड को कैसे व्यवस्थित करें, और CI/CD में ऑटोमेटेड टेस्ट कैसे शामिल करें। चलिए शुरू करते हैं।

\n\n

व्यवहार में E2E टेस्टिंग C# क्या है

\n\n

E2E टेस्ट एक स्क्रिप्ट है जो यूज़र के पूरे सफर को कवर करती है: पेज खोलने से लेकर लक्ष्य कार्रवाई पूरी करने तक (खरीदारी, रजिस्ट्रेशन, फॉर्म सबमिट)। C# डेवलपर के लिए इसका मतलब आमतौर पर यह है:

\n\n
    \n
  • WebDriver के ज़रिए ब्राउज़र लॉन्च करना (Chrome, Firefox, Edge)
  • \n
  • पेज पर एलिमेंट्स ढूंढना (बटन, इनपुट फील्ड, लिंक)
  • \n
  • एक्शन करना (क्लिक, टेक्स्ट टाइप करना, लिस्ट से चुनना)
  • \n
  • अपेक्षित परिणाम की जांच करना (मैसेज दिखा, URL बदला, डेटा अपडेट हुआ)
  • \n
  • ब्राउज़र बंद करना और टेस्ट डेटा साफ करना
  • \n
\n\n

यूनिट टेस्ट से मुख्य अंतर: E2E टेस्ट रियल UI के साथ काम करते हैं। ये धीमे, नाज़ुक (CSS-सेलेक्टर्स पर निर्भर) होते हैं, लेकिन क्रिटिकल बिज़नेस सीनारियो की जांच के लिए अमूल्य हैं।

\n\n

C# के लिए E2E टेस्टिंग टूल्स: Selenium बनाम Playwright

\n\n

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

\n\n

Selenium WebDriver

\n

इंडस्ट्री का मानक। यह WebDriver के ज़रिए काम करता है - एक अलग प्रोसेस जो ब्राउज़र को कंट्रोल करता है। सभी ब्राउज़र्स को सपोर्ट करता है, बड़ा कम्युनिटी, हज़ारों रेडी-मेड समाधान। नुकसान: सेटअप के लिए ड्राइवर्स (ChromeDriver, GeckoDriver) चाहिए, और इंतज़ार के कारण टेस्ट धीमे हो सकते हैं।

\n\n

.NET के लिए Playwright

\n

माइक्रोसॉफ्ट का नया लेकिन पहले से लोकप्रिय टूल। यह सीधे DevTools प्रोटोकॉल के ज़रिए काम करता है, बिना अतिरिक्त लेयर के। तेज़, स्थिर, और एलिमेंट लोड होने का ऑटोमैटिक इंतज़ार करता है (कोई Thread.Sleep नहीं)। सिर्फ ब्राउज़र ही नहीं, बल्कि मोबाइल एमुलेटर्स को भी सपोर्ट करता है।

\n\n

इस आर्टिकल में हम दोनों फ्रेमवर्क पर उदाहरण दिखाएंगे ताकि आप तुलना कर सकें।

\n\n

C# में पहला E2E टेस्ट लिखना: Selenium

\n\n

क्लासिक से शुरू करते हैं। NuGet के ज़रिए पैकेज इंस्टॉल करें:

\n\n
dotnet add package Selenium.WebDriver\ndotnet add package Selenium.Support\ndotnet add package Selenium.WebDriver.ChromeDriver
\n\n

अब एक उदाहरण साइट के लिए टेस्ट लिखते हैं (मान लें यह एक ऑनलाइन स्टोर है)। हम जांचना चाहते हैं कि कार्ट में आइटम जोड़ने के बाद पेज पर आइटम काउंट का बैज दिखाई देता है या नहीं।

\n\n
using OpenQA.Selenium;\nusing OpenQA.Selenium.Chrome;\nusing OpenQA.Selenium.Support.UI;\n\npublic class CartE2ETests\n{\n    [Fact]\n    public void AddItemToCart_ShouldUpdateCartBadge()\n    {\n        using var driver = new ChromeDriver();\n        \n        // Arrange\n        driver.Navigate().GoToUrl("https://demo-store.com");\n        driver.Manage().Window.Maximize();\n        \n        // Act\n        var addToCartButton = driver.FindElement(By.CssSelector(".product-card .add-to-cart"));\n        addToCartButton.Click();\n        \n        // Wait for badge to appear\n        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));\n        var cartBadge = wait.Until(drv => \n            drv.FindElement(By.CssSelector(".cart-badge")));\n        \n        // Assert\n        Assert.Equal("1", cartBadge.Text);\n        \n        driver.Quit();\n    }\n}
\n\n

ब्लॉग

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