• प्रकाशित तिथि
    नवम्बर 26/2024
  • साझा करें

अच्छी तरह से इंजीनियर और सही कोड बनाना हर डेवलपर का लक्ष्य होता है। इसे प्राप्त करने में एक कार्यप्रणाली सबसे अलग है, वह है टेस्ट-ड्रिवन डेवलपमेंट (TDD)। जबकि TDD आपके कोड को डिज़ाइन नहीं करता है या आपके लिए नहीं लिखता है, यह सॉफ़्टवेयर डेवलपमेंट में एक कार्यप्रणाली है जो आपको एक पुनरावृत्त विकास चक्र पर डिज़ाइन निर्णयों पर त्वरित प्रतिक्रिया प्राप्त करने की अनुमति देती है। 

यूनिट टेस्ट कोडिंग से पहले या बाद में लिखना है या कभी टेस्ट नहीं लिखना है, यह डेवलपर की पसंद पर निर्भर करता है। जाहिर है, कभी भी कोई टेस्ट नहीं लिखने से उत्पादन में गंभीर स्थितियाँ पैदा होती हैं, अगर डेवलपर भाग्यशाली है तो वे मैन्युअल टेस्ट चरण के दौरान त्रुटियों का पता लगा लेंगे। 

कोड पूरा करने के बाद टेस्ट लिखना, बिना टेस्ट के बेहतर है। हमारे सहित ज़्यादातर डेवलपर्स, सीधे कोड पहले दृष्टिकोण को लागू कर रहे हैं और फिर टेस्ट लिख रहे हैं। फिर भी, लिखा हुआ कोड कोई बेहतर नहीं है। अगर हम टेस्ट केस भूल जाते हैं तो कुछ कार्यात्मक त्रुटियाँ मौजूद होंगी। कोड के हर हिस्से के लिए पहले असफल टेस्ट केस लिखना, फिर TDD चक्र का पालन करके उस टेस्ट को पास करने के लिए कोड जोड़ना ज़्यादा बेहतर है।

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

टेस्ट-फर्स्ट डेवलपमेंट के लिए जनरेटिव एआई 

मैन्युअल परीक्षण में मानवीय त्रुटि की संभावना को देखते हुए, सवाल उठता है: जेनरेटिव AI का उपयोग करके TDD को स्वचालित क्यों नहीं किया जाए? जेनरेटिव AI यूनिट परीक्षणों और संबंधित कोड के निर्माण को स्वचालित करके TDD में एक परिवर्तनकारी भूमिका निभा सकता है। यहाँ एक प्रस्तावित वर्कफ़्लो है:

  1. डेवलपर्स द्वारा लिखित परीक्षण: डेवलपर्स अपने कोड के लिए वांछित परिणाम निर्दिष्ट करते हुए प्रारंभिक यूनिट परीक्षण लिखकर शुरुआत करते हैं।
  2. AI द्वारा उत्पन्न कोड: जनरेटिव AI इन यूनिट परीक्षणों को पढ़ता है और उन्हें पास करने के लिए आवश्यक कोड तैयार करता है। यदि कोड सफलतापूर्वक चलता है, तो इसे डिस्क पर सहेजा जाता है। यदि नहीं, तो AI एक त्रुटि रिपोर्ट तैयार करता है और फिर से सही कोड बनाने का प्रयास करता है, जब तक कि परीक्षण पास नहीं हो जाते तब तक एक लूप बनाता है। इस तरीके से AI को शामिल करके, डेवलपर्स यह सुनिश्चित कर सकते हैं कि उनके कोड का पूरी तरह से परीक्षण और सत्यापन किया गया है, जिससे त्रुटियों का जोखिम कम हो जाता है।
आधिकारिक चित्र 2024-11-04 13.29.43.png

टीडीडी में जनरेटिव एआई का उपयोग करने के लाभ

कोड निर्माण और परीक्षण प्रक्रिया को स्वचालित करने से विकास चक्रों में उल्लेखनीय रूप से तेज़ी आ सकती है। साथ ही, परीक्षण मामलों और कोड लेखन में मानवीय त्रुटि की संभावना को कम किया जा सकता है। ऐसा करते समय, यह सुनिश्चित करना कि सभी परीक्षण व्यापक रूप से और लगातार कवर किए गए हैं और मैन्युअल कार्यभार को बढ़ाए बिना विकास प्रक्रिया को आसानी से बढ़ाया जा सकता है।

संभावित चुनौतियां और समाधान

टी.डी.डी. में जनरेटिव ए.आई. को एकीकृत करने से कई लाभ मिलते हैं, लेकिन यह चुनौतियों से रहित नहीं है। टी.डी.डी. के लिए ए.आई. सिस्टम का प्रारंभिक सेटअप कभी-कभी जटिल और समय लेने वाला हो सकता है। डेवलपर्स को ए.आई. उपकरणों का प्रभावी ढंग से उपयोग करने और उन पर भरोसा करने के लिए प्रशिक्षण की आवश्यकता हो सकती है। लेकिन भले ही डेवलपर्स इसे संभालने के लिए तैयार हों, लेकिन ए.आई. अद्वितीय या किनारे के मामलों से जूझ सकता है जो प्रशिक्षण डेटा में अच्छी तरह से प्रस्तुत नहीं किए गए हैं, इसलिए यह पूछे गए परिदृश्यों को भ्रमित कर सकता है। जनरेटिव ए.आई. सभ्य कोड के साथ प्रतिक्रिया करता है लेकिन यह बढ़िया और सबसे अच्छा विकल्प नहीं है। क्योंकि फिर भी कोड कोई फीडबैक तंत्र लागू नहीं करता है। बढ़िया कोड बनाने के लिए हमें डेवलपर्स के कोड समीक्षा दृष्टिकोण की तरह ए.आई. पर फीडबैक तंत्र लागू करना चाहिए। हम जटिल परिदृश्यों को संभालने के लिए ए.आई. को मानवीय निरीक्षण के साथ जोड़ सकते हैं, कम से कम अभी के लिए.. :)

फीडबैक टीडीडी में जनरेटिव एआई लागू किया गया

आधिकारिक चित्र 2024-11-04 13.31.52.png

प्रतिपुष्टि व्यवस्था

प्रक्रिया को और बेहतर बनाने के लिए, एक फीडबैक तंत्र शुरू किया जा सकता है। डेवलपर्स यूनिट टेस्ट लिखते हैं, और एक डेवलपर एजेंट कोड तैयार करता है। कोड समीक्षक एजेंट के साथ जांच की एक नई परत जोड़ी जाती है, जो कोड की समीक्षा करता है और डेवलपर एजेंट को फीडबैक प्रदान करता है।

पुनरावृत्तीय सुधार

डेवलपर एजेंट समीक्षक एजेंट की प्रतिक्रिया के आधार पर कोड को संशोधित करता है और समीक्षा के लिए इसे फिर से सबमिट करता है। यह पुनरावृत्त प्रक्रिया तब तक जारी रहती है जब तक कोड समीक्षा में सफलतापूर्वक पास नहीं हो जाता।

अंतिम परीक्षण

एक बार जब कोड समीक्षक एजेंट द्वारा स्वीकृत हो जाता है, तो यूनिट परीक्षण चलाए जाते हैं। यदि वे पास हो जाते हैं, तो कोड सहेज लिया जाता है। यदि वे विफल हो जाते हैं, तो एक त्रुटि रिपोर्ट तैयार की जाती है, और प्रक्रिया कोड जनरेशन पर वापस लौट जाती है।

संक्षेप में, कार्यप्रवाह इस प्रकार होगा:

  1. डेवलपर यूनिट परीक्षण लिखता है.ev
  2. एआई इन परीक्षणों को पढ़ता है और आवश्यक कोड तैयार करता है।
  3. यदि परीक्षण सफलतापूर्वक चलते हैं, तो कोड सहेज लिया जाता है। यदि नहीं, तो एक त्रुटि रिपोर्ट तैयार की जाती है, और AI लूप में कोड को सही करने का प्रयास करता है।
  4. यह प्रारंभिक स्वचालन ऐसे कोड का निर्माण कर सकता है जिसमें त्रुटि होने की संभावना रहती है, और यहीं पर फीडबैक तंत्र काम आता है।
  5. डेवलपर्स यूनिट परीक्षण लिखते हैं, और डेवलपर एजेंट आवश्यक कोड और विधियां उत्पन्न करता है।
  6. कोड समीक्षक एजेंट कोड की समीक्षा करता है और डेवलपर एजेंट को फीडबैक भेजता है।
  7. डेवलपर एजेंट फीडबैक के आधार पर कोड को परिष्कृत करता है और समीक्षा के लिए पुनः प्रस्तुत करता है।
  8. यह चक्र तब तक चलता रहता है जब तक कोड समीक्षक एजेंट कोड को अनुमोदित नहीं कर देता।
  9. एक बार स्वीकृति मिलने के बाद, यूनिट परीक्षण चलाए जाते हैं। यदि सफल हो, तो कोड सहेजा जाता है; यदि नहीं, तो एक त्रुटि रिपोर्ट तैयार की जाती है, और लूप जारी रहता है।

फीडबैक तंत्र को शामिल करने से, उत्पन्न कोड की गुणवत्ता में उल्लेखनीय सुधार होता है, जिससे यह सुनिश्चित होता है कि यह आवश्यक मानकों को पूरा करता है और सभी परीक्षणों को विश्वसनीय रूप से पास करता है।

निष्कर्ष

टेस्ट-ड्रिवेन डेवलपमेंट (TDD) में जेनरेटिव AI को एकीकृत करने से सॉफ्टवेयर डेवलपमेंट में क्रांति लाने की क्षमता है। यूनिट टेस्ट और संबंधित कोड के निर्माण को स्वचालित करके, डेवलपर्स उच्च कोड गुणवत्ता सुनिश्चित कर सकते हैं, त्रुटियों को कम कर सकते हैं और अपने वर्कफ़्लो को सुव्यवस्थित कर सकते हैं। हालाँकि चुनौतियों का सामना करना पड़ता है, लेकिन लाभ शुरुआती बाधाओं से कहीं अधिक हैं, जिससे यह कोडिंग के भविष्य के लिए एक आशाजनक दृष्टिकोण बन जाता है। आप हमारी जाँच कर सकते हैं कोडर एआई यदि आप जनरेटिव एआई का उपयोग करके प्रोग्रामिंग का समर्थन करने में रुचि रखते हैं तो इस प्रोजेक्ट पर जाएँ। 

भविष्य की रूप रेखा

इस दृष्टिकोण पर आधारित तीन चीजें बनाने की हमारी योजना है:

  • भाषा समर्थन का विस्तार: यद्यपि हम जावा पर ध्यान केंद्रित कर रहे हैं, इस पद्धति को अन्य भाषाओं जैसे पायथन, जावास्क्रिप्ट आदि तक विस्तारित किया जा सकता है।

  • स्वचालित परीक्षण निर्माण: हम मैन्युअल रूप से परीक्षण लिखने के बजाय, डेवलपर्स द्वारा प्रदान की गई उच्च-स्तरीय आवश्यकताओं के आधार पर परीक्षण लिखने के लिए जनरेटिव एआई को प्रेरित कर सकते हैं। 

  • एजेंटिक एआई टीम का विस्तार: एक साधारण कोड समीक्षक से आगे बढ़कर, हम अधिक विशिष्ट एजेंटों को भी शामिल कर सकते हैं, जैसे एज मामलों के परीक्षण के लिए क्यूए एजेंट, कोड प्रदर्शन को अनुकूलित करने के लिए प्रदर्शन एजेंट, इत्यादि।

हम प्रत्येक सॉफ्टवेयर डेवलपर को सलाह देते हैं कि वे अपना समय अधिक मजबूत और सटीक परीक्षण मामलों को लिखने में लगाएं और फिर उच्च गुणवत्ता वाला कोड तैयार करने के लिए जेनरेटिव एआई की शक्ति से लाभ उठाएं।

 

संबंधित आलेख