TDD का उपयोग करके जटिल कोड का अच्छा उदाहरण [बंद]


37

बड़े, वास्तविक जीवन, जटिल, परियोजनाओं में टीडीडी के उपयोग का एक अच्छा उदाहरण क्या होगा? मैंने अब तक जितने भी उदाहरण देखे हैं, वे किसी किताब या कागज के उद्देश्य से टॉय प्रोजेक्ट हैं ...

क्या आप एक ओपन-सोर्स प्रोजेक्ट का नाम दे सकते हैं जो टीडीडी का भारी उपयोग करता है? अधिमानतः सी ++ में लेकिन मैं जावा और सी # या अन्य समान भाषाओं को पढ़ सकता हूं।


आपके सवाल का जवाब देना मुश्किल है। कई परियोजनाएं हैं जो स्वचालित परीक्षणों का उपयोग करती हैं, लेकिन यह कहना मुश्किल है कि वे टीडीडी दर्शन का पालन करते हैं क्योंकि वे शायद इसे बढ़ावा नहीं देते हैं। साथ ही c ++, c # और java थोड़े में गुई अनुप्रयोगों में अपनी जड़ें हैं, जिनका परीक्षण करना मुश्किल है। आमतौर पर आप चौखटे या पुस्तकालयों के भीतर अधिक परीक्षण पाएंगे।
iMacUwhAK 19

इस कारण का कारण है कि मुझे एक अच्छा जवाब खोजने में बहुत दिलचस्पी है कि मैं वर्तमान में C ++ इंजन और जावा GUI के साथ एक डेस्कटॉप एप्लिकेशन पर काम कर रहा हूं ...
जेवियर नोडेट

जवाबों:


19
  • JUnit को 100% परीक्षण-संचालित विकसित किया गया था। वास्तव में, यह JUnit में 100% परीक्षण-संचालित विकसित किया गया था , जैसा कि केंट बेक ने कहा है कि एक दो बार वास्तव में दिमाग लगाने वाला व्यायाम था।
  • मेरा मानना ​​है कि सन की ZFS फाइलसिस्टम को टेस्ट-संचालित किया गया था।
  • के लिए ikj दुभाषिया Ioke ही भाषा प्रोग्रामिंग भाषा (JVM), Ioke प्रोग्रामिंग भाषा (CLI), पूरे Ioke कोर और मानक पुस्तकालय के लिए ikc दुभाषिया, और वास्तव में विकसित किया गया था 100% परीक्षण संचालित (वास्तव में व्यवहार पर ही आधारित )।

DUnit - डेल्फी के लिए परीक्षण ढांचा, खुद DUnit के लिए परीक्षणों का एक पूरा सूट के साथ आता है। और मैं केंट से सहमत हूं, यह थोड़ा दिमाग झुकने वाला है। ;-)
निक होजेस

14

SQLite। उनके सभी कोड बहुत, बहुत भारी परीक्षण किए गए हैं :

संस्करण 3.7.14 के अनुसार, SQLite लाइब्रेरी में C कोड के लगभग 81.3 KSLOC शामिल हैं। (KSLOC का अर्थ है हजारों "कोड की स्रोत लाइनें" या, दूसरे शब्दों में, कोड की पंक्तियों को खाली लाइनों और टिप्पणियों को छोड़कर।) तुलना के अनुसार, परियोजना में 1124 बार परीक्षण कोड और परीक्षण स्क्रिप्ट हैं - 91421.1 KSLOC।


1
वाह, उनके बहुत सारे परीक्षण हैं: |
लुका मैटिस

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

1
@ लिंड्स: वे टीडीडी का कड़ाई से पालन नहीं करते हैं, लेकिन उदाहरण के लिए प्रत्येक बग रिपोर्ट के लिए वे सबसे पहले एक परीक्षण करते हैं। साथ ही वे हर कमिटमेंट के लिए टेस्ट चलाते हैं। तो कम से कम आंशिक रूप से यह टीडीडी है।
लियोरी

9

अगर मुझे याद है कि FitNesse को TDD के साथ लिखा गया है, और इस परियोजना में मुख्य योगदानकर्ता अंकल बॉब मार्टिन हैं, तो, यह वास्तव में बहुत साफ कोड है


मैं सिर्फ यह पर एक नज़र था, और यह है वास्तव में स्वच्छ कोड।
रॉबर्ट हार्वे

3

Microsoft में P & P टीम के साथ मेरी चर्चा से, एंटरप्राइज़ लाइब्रेरी को TDD के साथ लिखा गया था।


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

@ रॉबर्ट - मैं आपको केवल वही बता सकता हूं जो उन्होंने मुझे बताया था ... उन्होंने इसे लिखते समय टीडीडी का इस्तेमाल किया था।
वाल्टर

6
@ रोबर्ट - टेस्ट सूट के लिए खुद के जीवन पर उतारना असामान्य नहीं है। DRY आपके आवेदन और परीक्षण दोनों पर लागू होता है। TDD में आप केवल 4 चीजों में से 1 कर रहे हैं: परीक्षण लिखना, कोड लिखना, परीक्षण फिर से करना, कोड को फिर से भरना। यदि आप इन सभी चीजों को लाल-हरे-रिफ्लेक्टर पैटर्न में कर रहे हैं, तो आप टीडीडी कर रहे हैं।
जेफ केनचैट

1
@ जेफ़: यह स्पष्ट करने के लिए धन्यवाद। मुझे लगता है कि टीडीडी (एक्सटेंडिस्ट, मैकेनिज्म टर्म्स) में जिस तरह से समझाया गया है, उसके बीच कुछ अंतर हैं, और यह वास्तव में वास्तविक दुनिया के परिदृश्यों में उपयोग किया जाता है।
रॉबर्ट हार्वे

3

मैं किसी भी ओपन-सोर्स प्रोजेक्ट्स का नाम नहीं दे सकता, जो टीडीडी का उपयोग करता था, लेकिन मैं आपको बता सकता हूं कि मैंने वास्तविक-विश्व परियोजनाओं पर काम किया है, जहां टीडीडी का उपयोग किया गया था ... और यह एक लाइफसेवर था!


1
क्या आपने - या अन्य - इन अनुभवों को साझा किया है? एक अच्छी युद्ध-कहानी जैसी लगती है।

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

मुझे तुम पर विश्वास है। मुझे सिर्फ कहानियां सुनना पसंद है। आपको क्विकचेक दिलचस्प लग सकता है - en.wikipedia.org/wiki/QuickCheck - मैंने एक प्रस्तुति देखी जिसमें 15 साल पुराने उत्पादन कोड में मल्टीथ्रेडिंग बग पाए गए।

"क्योंकि मैन्युअल परीक्षक हर ऑपरेशन के बाद डेटाबेस की अखंडता की जांच नहीं करते हैं" - बाधाओं और एक अच्छी तरह से डिज़ाइन किए गए DB स्कीमा चट्टानों को और अधिक, और आपने उन सभी को बचाया होगा जो एक दिन परीक्षण खर्च करने की परेशान करते हैं जैसा कि आपने बग को तुरंत देखा होगा। ।
gbjbaanb

@ जीबीजैनब: इस मामले में, 'चेक' सरल स्कीमा अखंडता की तुलना में कहीं अधिक जटिल था, यही कारण है कि इसके लिए एक स्वचालित परीक्षण है
स्टीवन ए लोव

0

टीडीडी में पूरी तरह से किया गया मेरा पहला प्रोजेक्ट 2002 में एक खुला स्रोत था। आप अभी भी इसे यहां पा सकते हैं:

http://sourceforge.net/projects/camelos/

अब मैं ज्यादातर TDD में काम कर रहा हूं, लेकिन हमारी टीम में हर कोई ऐसा नहीं करता है, यह ठीक है कि दिन के अंत में लिखित परीक्षाएं प्रदान करें।

हमने कोर भाग के लिए TDD का उपयोग करके एक पूर्ण gwt-Gae एप्लिकेशन भी लिखा है। http://netnumero.appengine.com/company/mycompany

मैं उस कोड को जारी नहीं कर सकता लेकिन मैं GWT के लिए TDD में किए गए एक पूर्ण उदाहरण प्रोजेक्ट पर काम कर रहा हूं, जो कि TDD का उपयोग UI में भी कर रहा है।

जैसे ही मैं समाप्त करूँगा (क्रिसमस की छुट्टियाँ) मैं इसे यहाँ पोस्ट करूँगा https://github.com/ubertob/gwt-tdd-example

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.