2009-09-06 26 views
157

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

मैं रूबी ऑन रेल (संभवतः 2.3 का उपयोग कर) का उपयोग करके एक परियोजना के विकास को शुरू करने वाला हूं। इस एप्लिकेशन का उपयोग डेटा, उपयोगकर्ता और कुछ फ़ाइलों को प्रबंधित करने के लिए किया जाएगा। यह पहले बहुत जटिल नहीं होगा लेकिन अगले 6 महीनों में बहुत कुछ हो सकता है, इसलिए मुझे लगता है कि यह टीडीडी में और अधिक पाने का सही समय है।

मैं इसे कैसे करना है पर एक बुनियादी विचार मिल गया है, लेकिन मैं अभी भी कुछ संकेत और सलाह की जरूरत है:

  • क्या रूबी ऑन रेल्स TDD 101 लेख पर मैं पढ़ना चाहिए?

  • मुझे परीक्षण करने की क्या ज़रूरत है?

  • मुझे किस मणि/प्लगइन का उपयोग करना चाहिए?

  • क्या मुझे rspec का उपयोग करना चाहिए? कुछ और?

  • एक बार मुझे अपने सभी परीक्षण कक्षाएं मिल गईं, तो मैं उन्हें कैसे और तैनात कर सकता हूं? (उदाहरण: निरंतर एकीकरण)

  • वास्तव में कितना समय लेने वाला टीडीडी है?

  • क्या मुझे इसके बारे में एक पुस्तक पढ़ने की ज़रूरत है या क्या मैं बस इसके साथ खेलकर और ऑनलाइन ट्यूटोरियल पढ़कर सबकुछ प्राप्त कर सकता हूं? अगर मुझे एक किताब पढ़ने की ज़रूरत है, तो कौन सी किताब?


मैं उदाहरण के साथ सीखने तो किसी ने मुझे बता सकते हैं मैं कैसे जा सकते हैं और इस समस्या को हल करने के लिए एक TDD दृष्टिकोण ले जाएगा की तरह:

मैं कंपनियों की है। मेरे पास संपर्क हैं संपर्क 1 कंपनी से जोड़ा जा सकता है। कंपनी के पास एकाधिक संपर्क हो सकते हैं। मैं संपर्क, कंपनियों और लिंक संपर्क कंपनियों को बनाने के तरीके बनाने के तरीके बनाना चाहता हूं।

आप अपने उत्तर में इस उदाहरण का उपयोग करने की जरूरत नहीं है, लेकिन यह :)

उत्तर

192

रेल टीडीडी 101 लेख पर रूबी क्या पढ़ा जाना चाहिए?

मैं a guide to testing rails applications से शुरू करूंगा।

भी Railscast में विभिन्न परीक्षण टूल का उपयोग करने के बारे में कुछ उत्कृष्ट स्क्रीनकास्ट हैं।

मुझे परीक्षण करने की क्या ज़रूरत है?

मैं मॉडल के साथ शुरू करूंगा, क्योंकि वे परीक्षण करना आसान हैं। सरल नियम यह है कि आपको अपने परीक्षण में प्रत्येक कथन को कवर करने की आवश्यकता है।

आपको विधि के उद्देश्य (यह सुनिश्चित करने के लिए कि यह अपेक्षित रूप से कार्य कर रहा है) के साथ-साथ सभी किनारे के मामलों का परीक्षण करना चाहिए।

यह भी सुनिश्चित करें कि आप परीक्षण खत्म नहीं कर पाएंगे।

मुझे किस मणि/प्लगइन का उपयोग करना चाहिए? क्या मुझे आरएसपीईसी का उपयोग करना चाहिए? कुछ और?

जब आप प्रारंभ करते हैं, तो बस Test Unit का उपयोग करें। मूल बातें से परिचित होने के बाद आप rspec या cucumber का उपयोग कर सकते हैं।

Autotest यदि आप वास्तव में परीक्षण संचालित होना चाहते हैं तो यह एक अच्छा टूल है। लेकिन यह एक 'अच्छा है' की आवश्यकता नहीं है।

एक बार मुझे अपने सभी परीक्षण वर्ग मिल गए हैं, मैं उन्हें कैसे चला सकता हूं और तैनात कर सकता हूं?

प्रश्न के बारे में निश्चित नहीं है। आप आम तौर पर परीक्षणों को तैनात नहीं करते हैं। एक बार जब आपके सभी परीक्षण वर्गों को आपके सभी परीक्षण चलाने के लिए सरल प्रकार 'रेक टेस्ट' मिल जाए।

वास्तव में कितना समय लेने वाला टीडीडी है?

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

मैं इस या मैं सिर्फ इसके साथ चारों ओर खेल रहे हैं और ऑनलाइन ट्यूटोरियल पढ़ कर सब कुछ प्राप्त कर सकते हैं के बारे में एक किताब पढ़ने के लिए की जरूरत है? अगर मुझे एक पुस्तक पढ़ने की जरूरत है, कौन सी किताब?

आपको एक पुस्तक की आवश्यकता नहीं है। कुछ सीखने का सबसे प्रभावी तरीका यह है: बस इसे करें। एक प्रश्न या समस्या का सामना करने के बाद पुस्तक या ऑनलाइन संसाधनों पर वापस जाएं। यह भी चुस्त है।

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

class CompanyTest <Test::Unit 
    def test_relationship # test associations/relationships 
     c = companies(:some_company) 
     assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts 
    end 
end 

class ContactTest<Test::Unit 
    def test_relationships 
     c = contact(:some_contact) 
     assert_equal some_company, c.company # make sure the contact link to 1 company 
    end 

    def test_create/add 
     # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly 
    end 
end 
+0

इस वास्तव में पूर्ण उत्तर के लिए धन्यवाद! – marcgg

+0

बहुत बहुत धन्यवाद। मैं एक नौसिखिया हूं और यह वास्तव में मुझे टीडीडी – qasimzee

+3

के उद्देश्य को समझने में मदद करता है लेख का लिंक टूटा हुआ है, लेकिन इसे यहां मिला: http://web.archive.org/web/20100325215651/http://bloritsch.d -haven.net/articles/2008/07/03/test-driven-development-101 – fivetwentysix

5

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

आपको इस Rails guide में भी रुचि हो सकती है।

+0

उत्तर के लिए धन्यवाद, रेल गाइड लिंक विशेष रूप से सहायक है – marcgg

5

मैं का उपयोग करें:

  1. Shoulda और परीक्षण के लिए rspec
  2. मोचा कोड विश्लेषण के लिए तेजी से परीक्षण
  3. metric_fu के लिए
  4. Factory_girl मजाक कारखानों
  5. parallel_specs के लिए के लिए
3
क्या मणि

/प्लगइन उपयोग करना चाहिए?

मैंने हमेशा shoulda का आनंद लिया है।

वास्तव में समय लेने वाला टीडीडी कितना समय लगता है?

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

13

मैंने 6-एपिसोड वीडियो श्रृंखला बनाई है जिसे 2010 की गर्मियों में सैन फ्रांसिस्को में सार्वजनिक कक्षा के रूप में पढ़ाया गया था। सामग्री आरएसपीसी 1.3 का उपयोग कर रेल 2.3 में परीक्षण और डेवलपर दक्षता को कवर करती है। थोड़ा दिनांकित है, लेकिन मुख्य अवधारणाओं Rspec 2.x

http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html

9

मैं इस पुस्तक की सिफारिश के साथ 3 रेल पर लागू होते हैं: Ruby on Rails Tutorial। मैं लगभग इसके साथ कर रहा हूँ। पुस्तक टीडीडी पूरी पुस्तक का उपयोग करती है। कोशिश करो!

+0

लिंक काम नहीं कर रहा है –

+0

@ दीपक फिर कोशिश करें! – sivabudh

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