Kotlin अनुप्रयोगों का E2E परीक्षण: शून्य से उत्पादन तक

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

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

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

E2E परीक्षण आपका सबसे अच्छा दोस्त क्यों है (और Kotlin में इससे कैसे दोस्ती करें)

\n\n

कल्पना करें: आपने Kotlin में एक शानदार सेवा लिखी, सब कुछ कंपाइल हो गया, यूनिट टेस्ट पास हो गए, कोड रिव्यू हो गया। आप इसे प्रोडक्शन में डिप्लॉय करते हैं, और... उपयोगकर्ता शिकायत करते हैं कि "खरीदें" बटन काम नहीं कर रहा है, जबकि यूनिट टेस्ट ने इसकी जाँच की थी। परिचित लगता है? उस दुनिया में आपका स्वागत है जहाँ Kotlin अनुप्रयोगों का E2E परीक्षण कोई विलासिता नहीं, बल्कि एक आवश्यकता है।

\n\n

एंड-टू-एंड परीक्षण पूरे उपयोगकर्ता पथ की जाँच करना है: बटन क्लिक करने से लेकर डेटाबेस में रिकॉर्ड करने और वापस आने तक। इस लेख में हम केवल सिद्धांत के बारे में बात नहीं करेंगे। हम Kotlin अनुप्रयोग के लिए वास्तविक परीक्षण लिखेंगे, टूल्स को समझेंगे और दिखाएंगे कि इंफ्रास्ट्रक्चर सेटअप करते समय पागल कैसे न हों। तैयार हो जाइए, कोड और कॉफी होगी।

\n\n

E2E परीक्षण क्या है और यह अन्य प्रकारों से कैसे भिन्न है

\n\n

चलिए तुरंत स्पष्ट करते हैं। E2E (या एंड-टू-एंड) परीक्षण पूरे सिस्टम की जाँच करता है, जैसा कि उपयोगकर्ता इसे देखता है। इसके विपरीत:

\n\n
    \n
  • यूनिट टेस्ट — एक विधि/क्लास को अलग-थलग करके जाँचते हैं।
  • \n
  • एकीकरण परीक्षण — दो-तीन घटकों के बीच परस्पर क्रिया की जाँच करते हैं (जैसे, कंट्रोलर + सर्विस)।
  • \n
  • UI परीक्षण — अक्सर E2E के साथ भ्रमित होते हैं, लेकिन UI परीक्षण बैकएंड की जाँच नहीं कर सकता, केवल इंटरफ़ेस रेंडरिंग की जाँच करता है।
  • \n
\n\n

Kotlin अनुप्रयोगों का E2E परीक्षण पूरा चक्र है: उपयोगकर्ता इंटरफ़ेस (यदि है), API, व्यावसायिक तर्क, डेटाबेस, बाहरी सेवाएँ। सब कुछ एक साथ घड़ी की तरह काम करना चाहिए।

\n\n

Kotlin में E2E परीक्षण के लिए उपकरण

\n\n

उपकरण का चुनाव इस बात पर निर्भर करता है कि आप क्या परीक्षण कर रहे हैं: Android अनुप्रयोग, Ktor पर वेब सेवा या डेस्कटॉप अनुप्रयोग। Kotlin डेवलपर के लिए शीर्ष उपकरण:

\n\n
    \n
  • Selenide + Kotlin — वेब इंटरफ़ेस के लिए। Selenium पर एक रैपर, लेकिन संक्षिप्त सिंटैक्स के साथ, Kotlin के लिए आदर्श।
  • \n
  • Ktor Client + TestContainers — बैकएंड के लिए। Docker में परीक्षण इंफ्रास्ट्रक्चर (DB, कैश) शुरू करें और HTTP अनुरोध भेजें।
  • \n
  • Espresso + Compose Test — Android के लिए। मूल उपकरण जो Android SDK के साथ आते हैं।
  • \n
  • Cucumber + Kotlin — यदि ग्राहक के लिए समझने योग्य भाषा में BDD परिदृश्यों की आवश्यकता हो।
  • \n
\n\n

हम पहले दो परिदृश्यों पर ध्यान केंद्रित करेंगे, क्योंकि वे सबसे अधिक सार्वभौमिक हैं।

\n\n

Kotlin (Selenide) में वेब अनुप्रयोग के लिए E2E परीक्षण लिखना

\n\n

मान लीजिए, हमारे पास Spring Boot + Kotlin पर एक सरल ऑनलाइन स्टोर है। हमें परिदृश्य की जाँच करनी है: उपयोगकर्ता साइट पर आता है, कार्ट में उत्पाद जोड़ता है और ऑर्डर करता है।

\n\n

पहले build.gradle.kts में निर्भरताएँ जोड़ें:

\n\n
dependencies {\n    testImplementation("com.codeborne:selenide:6.19.1")\n    testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")\n    testImplementation("io.github.bonigarcia:webdrivermanager:5.6.2")\n}
\n\n

अब परीक्षण लिखते हैं। ध्यान दें: हम कोड को पढ़ने योग्य बनाने के लिए Kotlin के एक्सटेंशन फ़ंक्शन का उपयोग कर रहे हैं:

\n\n
import com.codeborne.selenide.Condition.visible\nimport com.codeborne.selenide.Selenide.`$`\nimport com.codeborne.selenide.Selenide.open\nimport org.junit.jupiter.api.BeforeEach\nimport org.junit.jupiter.api.Test\n\nclass ShopE2ETest {\n\n    @BeforeEach\n    fun setUp() {\n        // प्रत्येक परीक्षण से पहले ब्राउज़र खोलें\n        open("https://test-shop.example.com")\n    }\n\n    @Test\n    fun `user can add product to cart and checkout`() {\n        // चरण 1: उत्पाद ढूँढें और कार्ट में जोड़ें\n        `$`("[data-testid='product-1']").shouldBe(visible).click()\n        `$`("[data-testid='add-to-cart']").click()\n\n        // चरण 2: जाँचें कि कार्ट खाली नहीं है\n        `$`("[data-testid='cart-badge']").shouldHave(text("1"))\n\n        // चरण 3: चेकआउट पर जाएँ\n        `$`("[data-testid='checkout-btn']").click()\n\n        // चरण 4: फ़ॉर्म भरें\n        `$`("[                

ब्लॉग

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