2008-10-18 7 views
71

पहले से मौजूद एक बड़े कोडबेस के साथ मौजूदा टीम में शामिल होना मुश्किल हो सकता है। सबसे अच्छा तरीका क्या है;बड़े कोडबेस से परिचित होने का सबसे अच्छा तरीका क्या है?

  • ब्रॉड; कोड
  • संहिता से कोड सब कुछ एक साथ कैसे लिंक करता है, इसका एक सामान्य अवलोकन प्राप्त करने का प्रयास करें; एक समय में कोड के छोटे वर्गों पर ध्यान केंद्रित करने, कैसे समझ वे पूरी तरह से काम करते हैं
  • एक सुविधा उठाओ को विकसित करने और सीखने के रूप में आप के साथ
  • कोशिश जाना वर्ग चित्र से जानकारी हासिल करने के लिए और यूएमएल, उपलब्ध (और तारीख तक) अगर
  • कुछ और पूरी तरह से?

मैं वर्तमान में लगभग 20k लाइन सी ++ ऐप & लाइब्रेरी (संपादित करें: चीजों की भव्य योजना में छोटा!) पर काम कर रहा हूं। उद्योग में मुझे लगता है कि आपको एक अनुभवी प्रोग्रामर द्वारा परिचय मिलेगा। हालांकि यदि यह मामला नहीं है, तो आप जितनी जल्दी हो सके मूल्य जोड़ने शुरू करने के लिए क्या कर सकते हैं?

-
जवाब का सारांश:

  • डिबग मोड में कोड के माध्यम से चरण को देखने के लिए कि यह कैसे
  • जोड़ी आपके अलावा कोई कोड बेस से अधिक परिचित के साथ काम करता है, बारी-बारी से होने की व्यक्ति कोडिंग और व्यक्ति देख/चर्चा कर रहा है। टीम के सदस्यों के बीच भागीदारों को घुमाएं ताकि ज्ञान चारों ओर फैल जाए।
  • यूनिट परीक्षण लिखें। कोड सोचने के तरीके के बारे में एक अनुमान के साथ शुरू करें। यदि आप अपेक्षा करते हैं तो यह पता चला है, तो आप शायद कोड को समझ चुके हैं। यदि नहीं, तो आपको हल करने के लिए एक पहेली मिल गई है या एक जांच करने के लिए एक पहेली है। (धन्यवाद डोनल, यह एक महान जवाब है)
  • के लिए ऊपर
  • पढ़ें यूएमएल, Doxygen वर्ग चित्र और अन्य दस्तावेज़ तैयार किए गए कोड का एक व्यापक महसूस करने के लिए इसी तरह से, कार्यात्मक कोड के लिए मौजूदा इकाई परीक्षण का अध्ययन करें।
  • छोटे संपादन या बग फिक्स बनाएं, फिर धीरे-धीरे
  • नोट्स रखें, और कूदें और विकास शुरू करें; गन्दा या अनुचित कोड उत्पन्न करने की तुलना में समय समझने के लिए यह अधिक मूल्यवान है।

इस पोस्ट कुछ छोटे काम यदि संभव हो तो साथ the-best-way-to-familiarize-yourself-with-an-inherited-codebase

+4

20K लाइनें बहुत बड़े कोड बेस नहीं हैं। जब यह केवल 20 के लाइनों में है, तो मैं इसे पढ़ूंगा। उन चीजों में से एक जो मैंने विश्वविद्यालय में नहीं सीखा है, बड़े कोड अड्डों के साथ काम कर रहा है। वास्तव में – Paco

+0

। 20k ज्यादा प्रतीत नहीं होता है। हमारे पास प्रत्येक में 10k से अधिक लाइनों वाली सी ++ फ़ाइलें हैं। मुझे पता है, यह बुरा है, लेकिन हमारे पास अभी सफाई के लिए समय नहीं है। (बस मुझे अपनी आंखें घुमाने के बारे में सोचें) हालांकि अधिकांश ब्लोट टिप्पणियों से है। –

+2

हे, वास्तव में! मेरा मतलब यह नहीं था कि 20k एक बड़ा कोड बेस था (मैंने कभी यह नहीं कहा था), सिर्फ सामान्य, स्केलेबल, सलाह की तलाश में था। अब तक महान जवाब; के बारे में सोचने के लिए बहुत कुछ। – RJFalconer

उत्तर

24

प्रारंभ की एक आंशिक डुप्लिकेट, आपकी समस्या को हल कोड डीबग है। डीबग मोड में कोड के माध्यम से कदम उठाना सीखने का सबसे आसान तरीका है कि कुछ कैसे काम करता है।

+2

यह सोचने का भुगतान करता है कि आप डिबगिंग के दौरान एक चर को क्या उम्मीद करते हैं, और यदि डीबगर अलग दिखाता है, तो पता लगाएं क्यों। मैं व्यक्तिगत रूप से डिबगर्स पसंद नहीं करता लेकिन प्रिंट स्टेटमेंट पसंद करता हूं जो आपको पहले से सोचने के लिए मजबूर करता है। अग्रिम में सोचने के लिए मजबूर करने के अलावा – extraneon

+1

@extraneon, प्रिंट स्टेटमेंट आपको बड़ी मात्रा में इनपुट देखने के लिए अधिक आसानी से अनुमति देता है। तो उदाहरण के लिए यदि एक चर आमतौर पर 2 होता है, और 100 लूप में 10 बार हो जाता है, तो आप इसे प्रिंटफ स्टेटमेंट के साथ स्पॉट करने में सक्षम होंगे, लेकिन डीबगर के साथ इसका पता लगाना मुश्किल है। –

2

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

जब आपके पास ऐसा करने की आवश्यकता होती है, तो खुद को एक संकीर्ण ध्यान दें और इसे पूरा करें।

9

यह शिक्षार्थी किस तरह और प्रोग्रामर किस तरह आप कर रहे हैं पर काफी निर्भर है, लेकिन:

  • ब्रॉड पहले - आप गुंजाइश और आकार की एक विचार की जरूरत है। यदि वे अच्छे हैं तो इसमें स्किमिंग डॉक्स/उमल शामिल हो सकते हैं।यदि यह एक दीर्घकालिक परियोजना है और आपको सबकुछ की पूर्ण समझ की आवश्यकता होगी, तो मैं वास्तव में दस्तावेज़ों को सही ढंग से पढ़ सकता हूं। दोबारा, यदि वे अच्छे हैं।
  • संकीर्ण - कुछ प्रबंधनीय चुनें और इसे समझने का प्रयास करें। कोड के लिए "स्वाद" प्राप्त करें।
  • एक सुविधा चुनें - संभावित रूप से एक अलग व्यक्ति जिसे आपने देखा है, अगर आप आत्मविश्वास महसूस कर रहे हैं, और कुछ छोटे बदलाव करना शुरू करें।
  • Iterate - आकलन करें कि चीजें कितनी अच्छी तरह से चली गई हैं और देखें कि क्या आप अधिक गहराई से प्रारंभिक चरण को दोहराने से लाभ उठा सकते हैं।
5

मैं एक अद्यतित कक्षा आरेख प्राप्त करने के लिए डॉक्सिजन चलाने का सुझाव दूंगा, फिर थोड़ी देर के लिए व्यापक रूप से जा रहा हूं। यह आपको एक त्वरित बड़ी तस्वीर देता है जिसका उपयोग आप कोड के साथ करीबी और गंदे होने के रूप में कर सकते हैं।

17

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

+0

मैंने हमेशा सोचा है कि यह किसी और के कोड से परिचित होने का सबसे अच्छा तरीका था। –

3

एक अन्य प्रोग्रामर के साथ काम करें जो नई सुविधा विकसित करने या बग को ठीक करने के लिए सिस्टम से अधिक परिचित है। यह वह तरीका है जिसे मैंने सबसे अच्छा काम देखा है।

4

मैं मानता हूं कि यह पूरी तरह से निर्भर करता है कि आप किस प्रकार के शिक्षार्थी हैं। ऐसा कहकर, मैं दो कंपनियों में रहा हूं जिनके साथ शुरू करने के लिए बहुत बड़े कोड-बेस थे। आमतौर पर, मैं इस तरह काम करता हूं:

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

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

2

सबसे पहले, यदि आपके पास टीम के सदस्य उपलब्ध हैं जिनके पास कोड के साथ अनुभव है तो आपको उनके साथ कोड का अवलोकन करने की व्यवस्था करनी चाहिए। प्रत्येक टीम के सदस्य को आपको विशेषज्ञता के क्षेत्र में जानकारी प्रदान करनी चाहिए। कई लोगों को चीजों को समझाते हुए आम तौर पर मूल्यवान होता है, क्योंकि कुछ दूसरों की तुलना में बेहतर होगा और कुछ दूसरों की तुलना में बेहतर समझ लेंगे।

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

यदि आप संघर्ष करते हैं तो अपने आप पर बहुत कठिन न हों - यह सामान्य है। बड़े कोड बेस को समझने में काफी समय लग सकता है। दरअसल, अक्सर यह मामला है कि वर्षों के बाद भी कोड के कुछ हिस्सों अभी भी थोड़ा डरावना और अपारदर्शी हैं। जब आप परियोजनाओं के बीच डाउनटाइम प्राप्त करते हैं तो आप उन क्षेत्रों में खोद सकते हैं और आप अक्सर पाएंगे कि कुछ प्रयासों के बाद आप उन हिस्सों को भी समझ सकते हैं।

शुभकामनाएं!

1

मुझे लगता है कि कोड में बस कूदना थोड़ा जबरदस्त हो सकता है। यथासंभव डिजाइन पर जितना अधिक दस्तावेज पढ़ने की कोशिश करें। यह उम्मीद करेगा कि प्रत्येक घटक के उद्देश्य और संरचना की व्याख्या होगी। यह सबसे अच्छा है यदि कोई मौजूदा डेवलपर आपको इसके माध्यम से ले जा सकता है लेकिन यह हमेशा संभव नहीं होता है।

एक बार जब आप कोड की उच्च स्तरीय संरचना के साथ सहज हो जाते हैं, तो एक बग या दो को ठीक करने का प्रयास करें। इससे आपको वास्तविक कोड के साथ पकड़ने में मदद मिलेगी।

2

टीम को दो सप्ताह के लिए बग फिक्सिंग पर रखने के लिए प्राप्त करें (यदि आपके पास दो सप्ताह हैं)। उन्हें किसी के लिए ज़िम्मेदारी लेने में खुशी होगी, और इस अवधि के अंत तक आप लाइब्रेरी के साथ समस्या सुलझाने में इतना समय बिताएंगे कि आपको शायद यह बहुत अच्छी तरह से पता चलेगा।

+0

इस तरह मैं चीजों को करने के लिए करता हूं। चीज करने के लिए कोई विकल्प नहीं है। बस कोड/दस्तावेज/परीक्षण पढ़ना वास्तव में इसे कभी भी कटौती नहीं करता है। –

7

सख्त रोटेशन के साथ जोड़ना।

यदि संभव हो, तो दस्तावेज़/कोडबेस के माध्यम से जाने के दौरान, सख्त रोटेशन के साथ युग्मन को नियोजित करने का प्रयास करें। मतलब, आप दोनों एक निश्चित अवधि के लिए एक साथ बैठते हैं (कहते हैं, एक 2 घंटे का सत्र), फिर आप जोड़ों को स्विच करते हैं, एक व्यक्ति उस कार्य पर काम करना जारी रखेगा जबकि दूसरा दूसरे साथी के साथ दूसरे कार्य में चलता है।

जोड़े में आप दोनों ज्ञान का एक टुकड़ा उठाएंगे, जिसे तब घूर्णन होने पर टीम के अन्य सदस्यों को खिलाया जा सकता है। इसके बारे में भी अच्छा क्या है, यह है कि जब एक नई जोड़ी एक साथ लाई जाती है, तो जिसने कार्य पर काम किया है (इस मामले में, कोड की जांच कर रहा है) तो अवधारणाओं को संक्षेप में समझा सकता है और समझ सकता है। जैसे-जैसे समय बढ़ता है, हर किसी को समझने के समान स्तर पर होना चाहिए, और आशा है कि "ओह, केवल जॉन ही कोड का थोड़ा सा" सिंड्रोम से बचें।

मैं आपके परिदृश्य के बारे में क्या कह सकता हूं, आपके पास इस (3 जोड़े) के लिए एक अच्छी संख्या है, हालांकि, यदि आप वितरित होते हैं, या एक ही समय के लिए काम नहीं कर रहे हैं, तो यह संभव नहीं है।

2

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

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

आपने बताया कि यह एक ऐप और लाइब्रेरी है। पहले उपयोगकर्ता को लाइब्रेरी का उपयोग करने के लिए ऐप और स्टिक बदलें। फिर पुस्तकालय सीखने के बाद इसे बदलना आसान हो जाएगा।

शीर्ष नीचे दृष्टिकोण से, ऐप में शायद मुख्य लूप या मुख्य गुई है जो सभी क्रियाओं को नियंत्रित करता है। आवेदन के मुख्य नियंत्रण प्रवाह को समझने लायक है। ऐप के मुख्य प्रवाह का विस्तृत विवरण देने के लिए कोड पढ़ने के लायक है। यदि यह एक जीयूआई ऐप है, तो एक पेपर तैयार करना जो दिखाता है कि कौन सी स्क्रीनें हैं और एक स्क्रीन से दूसरी स्क्रीन कैसे प्राप्त करें। यदि यह एक कमांड लाइन ऐप है, तो प्रसंस्करण कैसे किया जाता है।

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

10

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

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

2

आप स्रोत कोड रिवर्स इंजीनियरिंग उपकरण पर विचार करना चाह सकते हैं।

दोनों ही टूल समान सुविधा सेट है कि स्थिर विश्लेषण है कि संबंधों के रेखांकन का उत्पादन शामिल प्रदान करते हैं: दो उपकरण है कि मैं के बारे में पता कर रहे हैं सॉफ्टवेयर में मॉड्यूल के बीच।

इसमें ज्यादातर कॉल ग्राफ़ और प्रकार/वर्ग की शर्तें शामिल हैं। इस जानकारी को देखने से आपको एक अच्छी तस्वीर मिलनी चाहिए कि कोड के हिस्सों एक दूसरे से कैसे संबंधित हैं। इस जानकारी का उपयोग करके, आप उन हिस्सों के लिए वास्तविक स्रोत में खोद सकते हैं जिनके बारे में आप सबसे अधिक रुचि रखते हैं और आपको पहले समझने/संशोधित करने की आवश्यकता है।

2

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

फिर ऑब्जेक्ट मॉडल को देखें; पहले से ही एक आरेख हो सकता है या आपको एक इंजीनियर को रिवर्स करना पड़ सकता है (या तो मैन्युअल रूप से या डॉग द्वारा सुझाए गए टूल का उपयोग करके)। इस चरण में आप डेटाबेस (यदि कोई हो) की जांच भी कर सकते हैं, अगर ऑब्जेक्ट मॉडल का पालन करना चाहिए लेकिन यह नहीं हो सकता है, और यह जानना महत्वपूर्ण है। हो, तो एक ऐसा क्षेत्र है कि बिट में पहली देखो एक बहुत ऊपर आता है,

, परिवर्तन इतिहास या बग डेटाबेस पर एक नज़र डालें। इसका मतलब यह नहीं है कि यह बुरी तरह लिखा गया है, लेकिन यह सब कुछ उपयोग करता है।

आखिरकार, कुछ नोट्स रखें (मैं विकी पसंद करता हूं)।

  • मौजूदा लोग इसे स्वच्छता के लिए उपयोग कर सकते हैं और आपकी मदद कर सकते हैं।
  • आपको बाद में इसका उल्लेख करना होगा।
  • टीम के अगले नए व्यक्ति वास्तव में आपको धन्यवाद देंगे।
1

मुझे सभी उत्तरों पसंद हैं जो कहते हैं कि आपको क्लास आरेख प्राप्त करने के लिए डॉक्सिजन जैसे टूल का उपयोग करना चाहिए, और सबसे पहले बड़ी तस्वीर को समझने का प्रयास करें। मैं इससे पूरी तरह सहमत हूं।

यह कहा गया है कि यह काफी हद तक इस बात पर निर्भर करता है कि कोड कितना अच्छी तरह से शुरू हुआ है।अगर यह एक विशाल गड़बड़ है, तो सीखना मुश्किल होगा। यदि यह साफ है, और व्यवस्थित ढंग से व्यवस्थित है, तो यह बुरा नहीं होना चाहिए।

0

(बेशर्म विपणन आगे)

आप nWire की जांच करनी चाहिए। यह बड़े कोडबेस को नेविगेट करने और विज़ुअलाइज़ करने के लिए एक ग्रहण प्लगइन है। हमारे कई ग्राहक प्रमुख प्रवाहों के विज़ुअलाइज़ेशन को प्रिंट करके नए डेवलपर्स को तोड़ने के लिए इसका इस्तेमाल करते हैं।

2

मेरे पास एक समान स्थिति थी। मैं कहूंगा कि आप इस तरह जाते हैं:

  • यदि यह डेटाबेस संचालित अनुप्रयोग है, तो डेटाबेस से शुरू करें और प्रत्येक तालिका, इसके फ़ील्ड और फिर अन्य तालिकाओं के साथ इसका संबंध बनाने का प्रयास करें।
  • अंतर्निहित स्टोर के साथ ठीक होने के बाद, ओआरएम परत तक जाएं। उन तालिकाओं में कोड में कुछ प्रकार का प्रतिनिधित्व होना चाहिए।
  • एक बार ऐसा करने के बाद इन वस्तुओं से कैसे और कहाँ से आ रहे हैं, इस पर आगे बढ़ें। इंटरफेस? क्या इंटरफ़ेस? कोई सत्यापन? डेटास्टोर जाने से पहले उन पर प्रीप्रोसेसिंग क्या होता है?

यह आपको सिस्टम के साथ बेहतर परिचित करेगा। याद रखें कि इकाई परीक्षण लिखने या समझने की कोशिश करना केवल तभी संभव है जब आप बहुत अच्छी तरह से जानते हों का परीक्षण किया जा रहा है और क्यों इसे में केवल में परीक्षण करने की आवश्यकता है।

  • क्या प्रणाली का मुख्य लक्ष्य:

    और एक बड़ी अनुप्रयोग है कि डेटाबेस की ओर प्रेरित नहीं कर रहा है के मामले में, मैं एक अन्य दृष्टिकोण की सलाह देते हैं?

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

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

दूसरे के लिए उदाहरण के लिए एक वर्ड प्रोसेसर का उदाहरण लें। वहां क्या घटक हैं? आईओ, यूआई, पेज और पसंद है। यह एक-दूसरे के साथ कैसे बातचीत कर रहे हैं? आगे बढ़ने के साथ आगे बढ़ें।

आराम से रहें। लिखित कोड किसी की मानसिकता है, तर्क और सोच शैली जम गया है और उस दिमाग को पढ़ने में समय लगेगा।

1

this answer देखें कि ब्याज की सुविधा के लिए कोड का पता लगाने के लिए परीक्षण कवरेज टूल का उपयोग कैसे करें, उस सुविधा के बारे में कुछ भी जानने के बिना, या यह कई मॉड्यूल में कैसे फैलता है।

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