iOS विकास को स्वचालित परीक्षण और उपकरणों के माध्यम से बेहतर बनाना

Home PDF

यह ब्लॉग पोस्ट ChatGPT-4o की सहायता से तैयार किया गया है।


यूनिट टेस्टिंग का महत्व

LeanCloud में, हमने प्रोजेक्ट के शुरुआती चरण में ही यूनिट टेस्टिंग लागू कर दी थी, जो कि बहुत मूल्यवान साबित हुई है। हर पुल रिक्वेस्ट (PR) Jenkins पर यूनिट टेस्ट को ट्रिगर करती है, और हमारा कवरेज लक्ष्य लगभग 80% है। टेस्ट लिखने के दो मुख्य परिदृश्य हैं: नए इंटरफेस को वैलिडेट करना और बग्स को रिप्रोड्यूस और फिक्स करना। जितने अधिक टेस्ट जमा होते हैं, हमारा कोडबेस उतना ही मजबूत होता जाता है। ऑटोमेटेड टेस्टिंग हमें कोड को रिलीज़ और रिफैक्टर करने के लिए आत्मविश्वास से भर देती है, बिना मैन्युअल वैलिडेशन के।

परीक्षण प्रक्रिया और वास्तविक अनुप्रयोग

यहां कुछ उदाहरण दिए गए हैं कि कैसे यूनिट टेस्ट हमारी मदद कर सकते हैं:

टेस्ट प्रक्रिया 1: कुछ उपयोगकर्ताओं ने रिपोर्ट किया कि जब वे विवरण कुंजी (description key) वाले ऑब्जेक्ट को सेव करते हैं, तो एक त्रुटि होती है। मैंने इस समस्या को पुन: उत्पन्न करने के लिए एक टेस्ट लिखा, समस्या का पता लगाया और उसे ठीक किया। फिर भविष्य में सत्यापन के लिए इस टेस्ट को संरक्षित रखा।

टेस्ट प्रक्रिया 2: नए इंटरफेस को विकसित करते समय, मैंने कोड को लागू करने के बाद संबंधित टेस्ट लिखे, ताकि यह सुनिश्चित किया जा सके कि कोड सही ढंग से काम कर रहा है।

टेस्ट प्रक्रिया 3: AVObject.m कोड को संशोधित करने के बाद, मैंने AVObjectTest.m टेस्ट चलाया, यह जांचने के लिए कि क्या किसी भी टेस्ट में असफलता हुई है।

टेस्ट प्रक्रिया 4: PR सबमिट करने पर Jenkins पर स्वचालित टेस्ट ट्रिगर होगा।

यूनिट टेस्ट लिखने के फायदे

प्रभावी यूनिट टेस्ट कैसे लिखें

परीक्षण फ्रेमवर्क का मूल्यांकन

हमने कई फ्रेमवर्क का मूल्यांकन किया:

एसिंक्रोनस टेस्टिंग को संभालना

एसिंक्रोनस टेस्टिंग उन ऑपरेशन्स के लिए महत्वपूर्ण है जो तुरंत पूरे नहीं होते हैं। सुनिश्चित करें कि आपका फ्रेमवर्क एसिंक्रोनस टेस्टिंग को प्रभावी ढंग से सपोर्ट करता है। उदाहरण के लिए, XCTest में expectations का उपयोग करके एसिंक्रोनस ऑपरेशन के पूरा होने का इंतजार करें, और फिर assertion करें।

कवरेज रिपोर्ट

Xcode 7 ने अंतर्निहित कवरेज रिपोर्टिंग सुविधा पेश की है। इसे सक्षम करने के चरण निम्नलिखित हैं:

  1. स्कीम सेटिंग्स में Gather Coverage Data को सक्षम करें।
  2. टेस्ट टार्गेट के बजाय ऐप टार्गेट के लिए टेस्ट करें।

यह सुविधा डेवलपर्स को यह देखने की अनुमति देती है कि कौन सी कोड लाइनें टेस्ट की गई हैं, जिससे अनटेस्टेड कोड के हिस्सों की पहचान करने में मदद मिलती है। अधिक जानकारी के लिए Big Nerd Ranch के ब्लॉग पर जाएं।

Jenkins का उपयोग करके रिमोट ऑटोमेशन टेस्टिंग

Jenkins को ऑटोमेशन टेस्टिंग के लिए सेट करने में कई चरण शामिल हैं:

  1. Jenkins इंस्टॉल करें: अपने लोकल मशीन या डेटा सेंटर सर्वर पर Jenkins सेट करें।
  2. GitHub इंटीग्रेशन: GitHub PR बिल्ड प्लगइन का उपयोग करके पुल रिक्वेस्ट सबमिट होने पर टेस्ट ट्रिगर करें।
    • वेबहुक्स को कॉन्फ़िगर करें ताकि इवेंट्स Jenkins को भेजे जा सकें।
    • सुनिश्चित करें कि Jenkins पुल रिक्वेस्ट के नवीनतम कोड तक पहुंच सकता है।
  3. टेस्ट स्क्रिप्ट: Jenkins में टेस्ट स्क्रिप्ट सेट करें ताकि टेस्ट प्रक्रिया स्वचालित हो सके।
    • सुनिश्चित करें कि Jenkins GitHub को टेस्ट परिणामों की सूचना दे सकता है।
    • टेस्ट फेल होने पर Slack या ईमेल नोटिफिकेशन कॉन्फ़िगर करें।

Jenkins का उपयोग करके रिमोट ऑटोमेशन टेस्टिंग करने से ऑटोमेशन टेस्टिंग के सभी लाभ मिलते हैं, जो स्थानीय टेस्टिंग से बेहतर होता है, क्योंकि यह एक स्वच्छ और नियंत्रित वातावरण में टेस्ट चलाता है।

रिमोट पैकेजिंग और डिप्लॉयमेंट

हालांकि सभी प्रोजेक्ट्स को रिमोट पैकेजिंग की आवश्यकता नहीं होती है, लेकिन यह SDK और अन्य पुन: प्रयोज्य कंपोनेंट्स के डिप्लॉयमेंट प्रक्रिया को सरल बना सकता है। इसके चरणों में शामिल हैं:

अतिरिक्त टूल्स और टिप्स

निष्कर्ष

स्वचालित परीक्षण और उपयुक्त उपकरणों ने विकास प्रक्रिया को काफी बढ़ावा दिया है। यूनिट टेस्टिंग को शुरुआती चरण में शामिल करके, एसिंक्रोनस प्रोसेसिंग का उपयोग करके और कवरेज रिपोर्ट का उपयोग करके, हम अधिक विश्वसनीय और रखरखाव योग्य एप्लिकेशन बना सकते हैं। Jenkins जैसे CI/CD उपकरण और Xcode डेवलपमेंट टूल्स को एक मजबूत परीक्षण रणनीति के साथ जोड़कर, उच्च गुणवत्ता वाले सॉफ़्टवेयर डिलीवरी सुनिश्चित की जा सकती है।

धन्यवाद

LeanCloud टीम और हमारे परीक्षण प्रक्रिया में योगदान देने वाले सभी लोगों को विशेष धन्यवाद।


Back 2025.01.18 Donate