2009-07-16 11 views
16

मैं मानता हूं कि मेरे पास लगभग अनजान अनुभव का कोई अनुभव नहीं है। मैंने थोड़ी देर पहले डुनिट के साथ प्रयास किया लेकिन छोड़ दिया क्योंकि मेरे आवेदन में कक्षाओं के बीच इतनी सारी निर्भरताएं थीं। यह डेल्फी एप्लिकेशन की बजाय एक बड़ी (लगभग 1.5 मिलियन स्रोत लाइन) है और हम एक टीम है जो इसे बनाए रखती है।यूनिट-टेस्ट पुराने और नए कोड को कैसे प्रारंभ करें?

अब परीक्षण एक व्यक्ति द्वारा किया जाता है जो रिलीज और रिपोर्ट बग से पहले इसका उपयोग करता है। मैंने टेस्टकंपलेट 6 में कुछ जीयूआई-टेस्ट भी स्थापित किए हैं, लेकिन एप्लिकेशन में बदलावों के कारण यह अक्सर विफल रहता है।

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

मुझे नहीं पता कि अनजाने के साथ कहां से शुरू करना है ... कोई अच्छी किताबें, यूआरएल, सर्वोत्तम अभ्यास इत्यादि?

उत्तर

12

ठीक है, यूनिट परीक्षण में चुनौती परीक्षण नहीं है, लेकिन में टेस्टेबल कोड लिखना है। यदि कोड लिखा गया था परीक्षण के बारे में सोचने के बाद, तो आपके पास शायद वास्तव में कठिन समय होगा।

वैसे भी, यदि आप रिफैक्टर कर सकते हैं, तो इसे टेस्ट करने योग्य बनाने के लिए रिएक्टर करें। ऑब्जेक्ट सृजन को जब भी संभव हो तर्क के साथ मिश्रण न करें (मुझे डेल्फी नहीं पता है, लेकिन इसमें कुछ मदद करने के लिए इंजेक्शन इंजेक्शन फ्रेमवर्क हो सकता है)।

This blog में परीक्षण के बारे में बहुत अच्छी जानकारी है।उदाहरण के लिए this article देखें (मेरा पहला सुझाव इस पर आधारित था)।

एक सुझाव के रूप में, पहले अपने कोड के पत्ते नोड्स का परीक्षण करने का प्रयास करें, वे कक्षाएं जो दूसरों पर निर्भर नहीं हैं। उन्हें परीक्षण करना आसान होना चाहिए, क्योंकि उन्हें मोक्स की आवश्यकता नहीं है।

+0

मैं पूरी तरह से सहमत हूं, आपकी टिप्पणियों के लिए धन्यवाद। हमारा पुराना डेल्फी एप्लिकेशन (यह 1 999 के आसपास शुरू हुआ) परीक्षण में दिमाग में लिखा नहीं गया था। शायद यह इसके लिए कभी भी अच्छा यूनिट परीक्षण नहीं होगा क्योंकि इसे लिखने के लिए इतना समय चाहिए। लेकिन जब हम नए सी # एप्लिकेशन से शुरू करते हैं तो हम एक ही गलती फिर से नहीं करना चाहते हैं। –

3

अधिक लोकप्रिय दृष्टिकोणों में से एक यूनिट-टेस्ट लिखना है क्योंकि आप कोड को संशोधित करते हैं। सभी नए कोड यूनिट परीक्षण प्राप्त करते हैं, और आपके द्वारा संशोधित किसी भी कोड के लिए आप पहले अपना परीक्षण लिखते हैं, इसे सत्यापित करते हैं, इसे संशोधित करते हैं, इसे पुनः सत्यापित करते हैं, और फिर अपने संशोधनों के कारण आपको आवश्यक किसी भी परीक्षण को लिखते/ठीक करते हैं।

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

वैकल्पिक दृष्टिकोण मैं कार्यरत गया है आमतौर पर पुनर्रचना का एक बहुत आवश्यकता है सह ऑप्स :) विरासत कोड के लिए

+0

हाँ यह ही सर्वोपरि है, कुछ भी तोड़ने के लिए जब यह ठीक लग रहा है डर के बिना बड़ा परिवर्तन करने के लिए। –

7

लेखन इकाई परीक्षण के माध्यम से मेरी इकाई परीक्षण विकसित करना है। बहुत बढ़िया किताब है कि इस को शामिल किया गया माइकल पंख के "परंपरागत कोड साथ प्रभावी ढंग से कार्य करना" है

एक अतिरिक्त सुझाव: इस काम में अपनी प्रगति को इंगित करने के लिए एक इकाई परीक्षण कवरेज उपकरण का उपयोग। मुझे यकीन नहीं है कि डेल्फी कोड के लिए अच्छे कवरेज टूल क्या हैं। मुझे लगता है कि यह एक अलग सवाल/विषय होगा।

Working Effectively with Legacy Code

+3

पंखों की किताब हाथ की पहुंच के भीतर, मेरे बुकशेल्फ़ पर है। इसके बारे में एक चेतावनी: पंख एक सभ्य इकाई परीक्षणों के बारे में बहुत सख्त हैं और जो यूनिट-टेस्ट शुरुआती लोगों से डर सकते हैं। उसे डराओ मत! इसके अलावा, एक महान किताब! – azheglov

+1

मैं मानता हूं कि यह एक उत्कृष्ट पुस्तक है, हालांकि यह एक सूखा पढ़ा गया है। मैं उस एप्लिकेशन में परीक्षणों को सम्मिलित कर रहा हूं, जिस पर मैं काम कर रहा हूं, इस समय प्रत्येक टेस्ट में कोड का एक बड़ा हिस्सा शामिल होता है, लेकिन जैसा कि मुझे कोड को संशोधित करना है, मैं इसे बेहतर बनाने के लिए इसे अधिक टेस्ट करने योग्य बना रहा हूं पठन स्तर। यदि आप रिफैक्टरिंग के बारे में ज्यादा नहीं जानते हैं, तो आपको इस पर एक किताब या दो भी मिलनी चाहिए। शायद मार्टिन फाउलर द्वारा क्लासिक रिफैक्टरिंग। – Alister

1

नेट unittesting यह पढ़ के लिए: "यूनिट टेस्टिंग की कला: .NET में उदाहरण के साथ":
आप क्या कहा सही है: कभी कभी, यह

बारे में सबसे अच्छा pratices कक्षाओं के बीच निर्भरता की वजह से यूनिट परीक्षण लिखना मुश्किल है ... तो कक्षाओं के कार्यान्वयन के बाद या बस पहले के पहले यूनिट परीक्षण लिखें। इस तरह, यदि आपको परीक्षण लिखने में कुछ कठिनाइयां हैं, तो इसका मतलब है कि आपके पास डिज़ाइन समस्या है!

+0

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

2

जब आप विरासत कोड के साथ काम करते हैं, तो नकली objetcs यूनिट परीक्षण बनाने के लिए वास्तव में उपयोगी हैं।

डेल्फी के बारे में इस सवाल पर एक नजर डालें और मजाक उड़ाता है: What is your favorite Delphi mocking library?

संबंधित मुद्दे