टीडीडी पर रूबी के साथ रेल पर कैसे शुरू करें? [बन्द है]


167

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

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

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

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

  • मुझे परीक्षण करने की क्या आवश्यकता है?

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

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

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

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

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


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

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

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

जवाबों:


202

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

मैं रेल अनुप्रयोगों के परीक्षण के लिए एक गाइड के साथ शुरू करूंगा ।

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

मुझे परीक्षण करने की क्या आवश्यकता है?

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

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

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

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

जब आप शुरू करते हैं, तो बस उपयोग करें 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

3
लेख का लिंक टूटा हुआ है, लेकिन इसे यहां पाया गया है: web.archive.org/web/20100325215651/http://bloritsch.d-haven.net/…
पांचवॉइंट्सिक्स

13

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

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




5

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

आप इस रेल गाइड में रुचि भी ले सकते हैं



3

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

मुझे हमेशा से ही आनंद लेना चाहिए था

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

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

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