कोडिंगची नवी युद्धाची भूमी: मॉकिंगमुळे तुमचे सॉफ्टवेअर टेस्ट्स खरंच उद्ध्वस्त होत आहेत का?

कोडिंगची नवी युद्धाची भूमी: मॉकिंगमुळे तुमचे सॉफ्टवेअर टेस्ट्स खरंच उद्ध्वस्त होत आहेत का? · Avonetics
सॉफ्टवेअर डेव्हलपमेंटच्या जगात आजकाल एका मोठ्या विषयावर गरम वाद रंगला आहे. तो विषय म्हणजे 'टेस्ट-ड्रिव्हन डेव्हलपमेंट' (TDD) मध्ये कोणत्या पद्धतीचा वापर करावा: मॉकिस्ट की क्लासिसिस्ट?
एका इंजिनिअरने आपला अनुभव सांगताना स्पष्ट केले की, त्यांनी वर्षानुवर्षे C# एंटरप्राइज प्रोजेक्ट्सवर काम करताना प्रत्येक डिपेंडेंसी 'माॉक' (Mock) करण्याची पद्धत वापरली. सुरवातीला हे खूप स्वच्छ आणि पद्धतशीर वाटत होते. परंतु, जेव्हा सिस्टीममध्ये एक मोठा बदल (Refactor) करण्यात आला, तेव्हा कोणताही वास्तविक बग नसताना अचानक ५० युनिट टेस्ट्स नापास झाल्या! यामुळे डेव्हलपमेंट टीमचा बराच वेळ वाया गेला.
Read nextगूगल पिक्सेल वॉच ५ चे लिक्स समोर: क्रांतिकारी डिझाइन की जुनीच दारू नव्या बाटलीत?
या घटनेने सॉफ्टवेअर विश्वात एका जुन्या वादाला पुन्हा तोंड फोडले आहे. क्लासिसिस्ट किंवा 'डेट्रॉईट शाळा' म्हणते की टेस्ट करताना शक्यतो वास्तविक ऑब्जेक्ट्स आणि कोड वापरला पाहिजे. यामुळे कोडचा अंतर्गत भाग बदलला तरी टेस्ट्स तुटत नाहीत. दुसरीकडे, मॉकिस्ट किंवा 'लंडन शाळा' मानते की प्रत्येक युनिट पूर्णपणे वेगळे करून त्याच्या डिपेंडेंसीजचे मॉक्स तयार केले पाहिजेत.
या चर्चेत एका कोडरने सांगितले की, जेव्हा तुम्हाला चाचणीसाठी खूप जास्त मॉक्स वापरावे लागतात, तेव्हा समजावे की तुमचे 'सॉफ्टवेअर डिझाइन' चुकीचे आहे. जर तुम्ही गणना (computations) आणि बाह्य प्रभाव (side-effects) वेगळे केले, तर मॉक्सची गरजच उरणार नाही.
दुसऱ्या एका डेव्हलपरने युक्तिवाद केला की, जेव्हा आपण स्लो थर्ड-पार्टी API किंवा डेटाबेसशी जोडलेले असतो, तेव्हा मॉक्सशिवाय गती मिळणे शक्य नाही. बाह्य प्रणालींच्या संदर्भात मॉक्स हे अत्यंत उपयुक्त ठरतात.
Your brand, right here.Reach story-obsessed listeners in 45+ languages → advertise on Avoneticsआश्चर्याची गोष्ट म्हणजे, काही कंपन्यांमध्ये आजही ऑटोमेटेड टेस्ट्स लिहिण्याऐवजी मॅन्युअली कमांड्स रन करून सिस्टीम तपासली जाते! तिथे टेस्ट्स समाविष्ट करण्याचा प्रस्ताव दिला की डेव्हलपर्स नकार देतात, असेही एका इंजिनिअरने नमूद केले.
तज्ज्ञांच्या मते, हा वाद केवळ टेस्ट्स कसा लिहावा याबद्दल नाही, तर तो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) विरुद्ध फंक्शनल प्रोग्रामिंग (FP) या दोन डिझाइन तत्त्वांमधील संघर्षाचा परिणाम आहे.
या विषयावर आमचे होस्ट 'टेक्नो ट्रेल्स'च्या आजच्या एपिसोडमध्ये अधिक बारकाईने वादविवाद करणार आहेत.