Swift पर BDD: ऐसे टेस्ट लिखना जो व्यवसाय समझ सके

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

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

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

सामान्य टेस्ट क्यों काम नहीं करते, और BDD क्या है

\n

हर iOS डेवलपर ने इस स्थिति का सामना किया है: आपने सौ यूनिट-टेस्ट लिखे, कवरेज 90% है, लेकिन अगले डेमो में मैनेजर कहता है: "इस बटन पर क्लिक करने पर कुछ क्यों नहीं होता?" आप कोड देखते हैं – सब कुछ काम कर रहा है। समस्या यह है कि यूनिट-टेस्ट कोड की जाँच करते हैं, सिस्टम के व्यवहार की नहीं। यहाँ BDD (Behaviour-Driven Development) मदद करता है – एक पद्धति जो "तकनीकी" परीक्षण और "व्यावसायिक तर्क" के बीच की रेखा को मिटा देती है।

\n

Swift पर BDD सिर्फ एक फैशनेबल शब्द नहीं है। यह टेस्ट लिखने का एक तरीका है ताकि उन्हें न केवल डेवलपर, बल्कि विश्लेषक, परीक्षक या ग्राहक भी पढ़ सके। इस लेख में, हम देखेंगे कि कैसे behaviour-driven development को अपने iOS प्रोजेक्ट में शामिल करें, Quick और Nimble फ्रेमवर्क का उपयोग करके, और Swift पर लाइव उदाहरण दिखाएंगे।

\n\n

सरल शब्दों में BDD क्या है

\n

कल्पना करें कि आप टेस्ट नहीं, बल्कि एक फिल्म की स्क्रिप्ट लिख रहे हैं। स्क्रिप्ट में पात्र (उपयोगकर्ता, सिस्टम), घटनाएँ (बटन दबाना, अनुरोध भेजना) और अपेक्षित परिणाम (अलर्ट दिखना, UI अपडेट होना) होते हैं। BDD आपके एप्लिकेशन के लिए ऐसी ही "स्क्रिप्ट" है।

\n

मुख्य विचार: टेस्ट को उपयोगकर्ता के दृष्टिकोण से सिस्टम के व्यवहार का वर्णन करना चाहिए। "विधि saveUser() true लौटाती है" के बजाय आप लिखते हैं "जब उपयोगकर्ता सही ईमेल दर्ज करता है और 'सहेजें' दबाता है, तो सिस्टम 'सफल' संदेश दिखाता है"।

\n\n

BDD, TDD से कैसे अलग है

\n

कई लोग BDD को TDD (Test-Driven Development) समझ लेते हैं। अंतर सरल है:

\n
    \n
  • TDD – पहले टेस्ट लिखें, फिर कोड, फिर रिफैक्टरिंग। ध्यान कार्यान्वयन की शुद्धता पर है।
  • \n
  • BDD – पहले व्यवहार स्क्रिप्ट लिखें, फिर कोड जो उस व्यवहार को लागू करता है। ध्यान उपयोगकर्ता के लिए मूल्य पर है।
  • \n
\n

BDD, TDD का विकास है। यदि TDD इस प्रश्न का उत्तर देता है "क्या कोड सही ढंग से काम करता है?", तो BDD पूछता है "क्या कोड वह करता है जो व्यवसाय को चाहिए?"।

\n\n

Swift पर BDD के लिए उपकरण

\n

Swift की दुनिया में behaviour-driven development के लिए दो मुख्य स्तंभ हैं:

\n
    \n
  • Quick – BDD शैली में टेस्ट लिखने के लिए फ्रेमवर्क। यह मानक XCTest को बदलता है और describe/context/it सिंटैक्स प्रदान करता है।
  • \n
  • Nimble – "मैचर्स" (जाँच) के लिए लाइब्रेरी। XCTAssertEqual के बजाय आप expect(value).to(equal(5)) लिखते हैं – यह अंग्रेजी वाक्य की तरह पढ़ा जाता है।
  • \n
\n

ये उपकरण एक साथ बहुत अच्छा काम करते हैं और आपको ऐसे टेस्ट लिखने की अनुमति देते हैं जो एक विनिर्देश की तरह दिखते हैं।

\n\n

Swift Package Manager के माध्यम से Quick और Nimble की स्थापना

\n

अपने Package.swift या Xcode के माध्यम से निर्भरताएँ जोड़ें: File → Add Packages → Quick रिपॉजिटरी का URL दर्ज करें: https://github.com/Quick/Quick.git और Nimble: https://github.com/Quick/Nimble.git।

\n

Package.swift के लिए उदाहरण:

\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MyApp",\n    dependencies: [\n        .package(url: "https://github.com/Quick/Quick.git", from: "7.0.0"),\n        .package(url: "https://github.com/Quick/Nimble.git", from: "13.0.0"),\n    ],\n    targets: [\n        .target(name: "MyApp"),\n        .testTarget(\n            name: "MyAppTests",\n            dependencies: ["MyApp", "Quick", "Nimble"]\n        )\n    ]\n)\n
\n\n

Swift पर पहला BDD-टेस्ट लिखना

\n

मान लीजिए हमारे पास एक सरल LoginService है जो लॉगिन और पासवर्ड की जाँच करता है। एक उबाऊ XCTest लिखने के बजाय, BDD शैली में एक टेस्ट बनाते हैं।

\n\n

सेवा का कोड (संदर्भ के लिए)

\n
class LoginService {\n    func authenticate(username: String, password: String) -> Result<User, LoginError> {\n        guard !username.isEmpty else { return .failure(.emptyUsername) }\n        guard !password.isEmpty else { return .failure(.emptyPassword) }\n        guard pas                

ब्लॉग

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