किसी भी एक परीक्षण को चलाने के लिए 10 सेकंड बहुत लंबा समय होता है। मेरी आंत की भावना यह है कि आपका कल्पना लक्ष्य एक ही समय में इकाई और एकीकरण परीक्षण दोनों चला रहा है। यह एक विशिष्ट चीज है जो परियोजनाएं गिरती हैं और किसी न किसी स्तर पर, आपको इस तकनीकी ऋण को दूर करने की आवश्यकता होगी यदि आप अधिक उत्पादन करना चाहते हैं, तो तेजी से। ऐसी कई रणनीतियाँ हैं जो आपको ऐसा करने में मदद कर सकती हैं ... और मैं पहले से इस्तेमाल की गई कुछ चीजों की सिफारिश करूँगा।
1. इंटिग्रेशन टेस्ट से अलग यूनिट
पहली बात मैं एकीकरण परीक्षणों से इकाई को अलग करना चाहूंगा। आप ऐसा कर सकते हैं:
- उन्हें ले जाना (विशेष निर्देशिका के तहत अलग-अलग फ़ोल्डर में) - और रेक लक्ष्य को संशोधित करना
- उन्हें टैग करना (rspec आपको अपने परीक्षण टैग करने की अनुमति देता है)
दर्शन हो जाता है, कि आप चाहते हैं कि आपका नियमित निर्माण जल्दी हो - अन्यथा लोग उन्हें चलाने के लिए बहुत खुश नहीं होंगे। तो उस क्षेत्र में वापस आ जाओ। त्वरित चलाने के लिए अपने नियमित परीक्षण प्राप्त करें, और अधिक पूर्ण निर्माण को चलाने के लिए निरंतर एकीकरण सर्वर का उपयोग करें।
एक एकीकरण परीक्षण एक परीक्षण है जिसमें बाहरी निर्भरता (जैसे डेटाबेस, वेब सर्विस, कतार, और कुछ फाइलसिस्टम का तर्क होगा) शामिल है। एक इकाई परीक्षण सिर्फ उस कोड के विशिष्ट आइटम का परीक्षण करता है जिसे आप जाँचना चाहते हैं। यह तेजी से चलना चाहिए (45 सेकंड में 9000 संभव है), अर्थात इसका अधिकांश भाग स्मृति में चलना चाहिए।
2. यूनिट टेस्ट में इंटीग्रेशन टेस्ट कन्वर्ट करें
यदि आपकी इकाई परीक्षणों का थोक आपके एकीकरण परीक्षण सूट से छोटा है, तो आपको एक समस्या है। इसका मतलब यह है कि विसंगतियां अधिक आसानी से दिखाई देने लगेंगी। इसलिए यहां से, एकीकरण परीक्षणों को बदलने के लिए अधिक इकाई परीक्षण बनाना शुरू करें। इस प्रक्रिया में मदद करने के लिए आप जो चीजें कर सकते हैं, वे हैं:
- वास्तविक संसाधन के बजाय एक नकली रूपरेखा का उपयोग करें। Rspec में एक इनबिल्ट मॉकिंग फ्रेमवर्क है।
- अपनी इकाई परीक्षण सूट पर आरसीओवी चलाएं। यह प्रयोग करने के लिए कि आपके यूनिट टेस्ट सूट में कितनी गहराई है।
एक बार जब आपके पास एकीकरण परीक्षण को बदलने के लिए एक उचित इकाई परीक्षण होता है - एकीकरण परीक्षण को हटा दें। डुप्लिकेट परीक्षण केवल रखरखाव को बदतर बनाता है।
3. फिक्स्चर का उपयोग न करें
फिक्स्चर बुरे हैं। इसके बजाय एक कारखाने का उपयोग करें (मशीनिस्ट या factorybot)। ये सिस्टम डेटा के अधिक अनुकूलनीय ग्राफ़ बना सकते हैं, और इससे भी महत्वपूर्ण बात यह है कि वे एक बाहरी डेटा स्रोत से लोड की बजाय इन-मेमोरी ऑब्जेक्ट्स का निर्माण कर सकते हैं, जिनका आप उपयोग कर सकते हैं।
4. यूनिट टेस्ट बनने से रोकने के लिए चेक को जोड़ें एकीकरण टेस्ट
अब जब आपके पास तेजी से परीक्षण हो रहा है, तो इसे फिर से होने से रोकें।
डेटाबेस (UnitRecord) तक पहुँचने का प्रयास करते समय एक त्रुटि फेंकने के लिए बंदर पैच सक्रिय रिकॉर्ड होते हैं।
आप जोड़ी और टीडीडी को भी आजमा सकते हैं जो आपकी टीम को तेज परीक्षण लिखने में मदद कर सकता है क्योंकि:
- किसी की चेकिंग - तो किसी को आलस नहीं आता
- उचित TDD के लिए तेज़ प्रतिक्रिया की आवश्यकता होती है। धीमे-धीमे परीक्षण पूरी बात को दर्दनाक बनाते हैं।
5. समस्या को दूर करने के लिए अन्य पुस्तकालयों का उपयोग करें
किसी ने स्पार्क का उल्लेख किया (रेल्स 3 के तहत परीक्षण सूट के लिए लोड बार), हाइड्रा / समानांतर_टैस्ट - समानांतर में (कई कोर के पार) में यूनिट परीक्षण चलाने के लिए।
यह शायद पिछले का उपयोग किया जाना चाहिए। आपकी वास्तविक समस्या चरण 1, 2, 3 में सभी तरह है। इसे हल करें और आप अतिरिक्त बुनियादी ढांचे की भूमिका के लिए बेहतर स्थिति में होंगे।