मुझे लगभग 100 यूनिट परीक्षण मिलते हैं और% 20 के कवरेज के साथ, जो मैं कवरेज बढ़ाने की कोशिश कर रहा हूं और यह विकास में एक परियोजना है इसलिए नए परीक्षणों को जोड़ना जारी रखें।लंबे समय तक चलने वाले यूनिट टेस्ट से कैसे निपटें?
वर्तमान में प्रत्येक बिल्ड के बाद मेरे परीक्षण चलाना संभव नहीं है, उन्हें लगभग 2 क्षण लगते हैं।
टेस्ट में शामिल हैं:
- फ़ाइल परीक्षण फ़ोल्डरों से पढ़
- (डेटा के आधार पर शैली कुछ HTTP सामान अनुकरण करने के लिए) एक स्थानीय वेब सर्वर करने के लिए वास्तविक HTTP अनुरोध कर रहा है (यह करने के लिए एक बहुत बड़ा दर्द है नकली, तो मैं नहीं करूँगा)
- उनमें से सभी यूनिट-टेस्ट नहीं हैं लेकिन बहुत जटिल मल्टीथ्रेडेड कक्षाएं भी हैं जिन्हें परीक्षण करने की आवश्यकता है और मैं परीक्षण के समग्र व्यवहार का परीक्षण करता हूं। जिसे कार्यात्मक परीक्षण के रूप में माना जा सकता है लेकिन हर बार भी चलाने की आवश्यकता है।
अधिकांश कार्यक्षमताओं में HTTP पढ़ने, टीसीपी करने आदि की आवश्यकता होती है। मैं उन्हें बदल नहीं सकता क्योंकि अगर मैं इन परीक्षणों को बदलता हूं तो यह परियोजना का पूरा विचार है, यह परीक्षण सामग्री के लिए व्यर्थ होगा।
मुझे नहीं लगता कि मेरे पास यूनिट परीक्षण चलाने के लिए सबसे तेज़ टूल हैं। मेरा वर्तमान सेटअप गैलियो और एनयूनीट फ्रेमवर्क के रूप में वीएस टीएस का उपयोग करता है। मुझे लगता है कि वीएस टीएस + गैलियो दूसरों की तुलना में थोड़ा धीमा है।
इस समस्या को हल करने के लिए आप मुझे क्या सलाह देंगे? मैं वर्तमान में बीटीयू में बदलाव के बाद यूनिट-टेस्ट चलाने के लिए चाहता हूं कि यह समस्या मेरे प्रवाह में बाधा डाल रही है।
आगे स्पष्टीकरण संपादित करें:
कोड अत्यधिक युग्मित है! दुर्भाग्यवश और बदलना एक बड़ी refatoring प्रक्रिया की तरह है। और इसमें एक चिकन अंडे सिंड्रोम है जहां मुझे ऐसे बड़े कोड को दोबारा करने के लिए यूनिट परीक्षण की आवश्यकता है, लेकिन अगर मैं इसे दोबारा नहीं मानता तो मुझे और यूनिट परीक्षण नहीं मिल सकते हैं :)
अत्यधिक युग्मित कोड मुझे अनुमति नहीं देता है छोटे टुकड़ों में परीक्षण विभाजित करने के लिए। इसके अलावा मैं निजी सामान का परीक्षण नहीं करता हूं, यह व्यक्तिगत पसंद है, जो मुझे इतनी तेजी से विकसित करने की अनुमति देता है और अभी भी बड़ी मात्रा में लाभ प्राप्त करता है।
और मैं पुष्टि कर सकता हूं कि सभी यूनिट परीक्षण (उचित अलगाव के साथ) वास्तव में काफी तेजी से हैं, और मेरे पास उनके साथ प्रदर्शन समस्या नहीं है।
आगे स्पष्टीकरण:
कोड अत्यधिक युग्मित है! दुर्भाग्यवश और बदलना एक बड़ी refatoring प्रक्रिया की तरह है। और इसमें एक चिकन अंडे सिंड्रोम है जहां मुझे ऐसे बड़े कोड को दोबारा करने के लिए यूनिट परीक्षण की आवश्यकता है, लेकिन अगर मैं इसे दोबारा नहीं मानता तो मुझे और यूनिट परीक्षण नहीं मिल सकते हैं :)
अत्यधिक युग्मित कोड मुझे अनुमति नहीं देता है छोटे टुकड़ों में परीक्षण विभाजित करने के लिए। इसके अलावा मैं निजी सामान का परीक्षण नहीं करता हूं, यह व्यक्तिगत पसंद है, जो मुझे इतनी तेजी से विकसित करने की अनुमति देता है और अभी भी बड़ी मात्रा में लाभ प्राप्त करता है।
और मैं पुष्टि कर सकता हूं कि सभी यूनिट परीक्षण (उचित अलगाव के साथ) वास्तव में काफी तेजी से हैं, और मेरे पास उनके साथ प्रदर्शन समस्या नहीं है।
तो मुझे लगता है कि सही कदम होगा: कोड को ऐसे तरीके से दोबारा दोहराएं जहां मेरे पास यह अधिक युग्मन नहीं है। फिर रोज़ाना कार्यात्मक परीक्षण चलाते हैं लेकिन प्रत्येक निर्माण के बाद इकाई परीक्षण चलाते हैं? –
इसके अलावा मैंने आपके उत्तर के बारे में प्रश्न अपडेट किया है। –
आप निरंतर एकीकरण के साथ प्रत्येक चेकइन पर सभी कार्यात्मक परीक्षण भी चला सकते हैं। जब मैं यूनिट परीक्षण लिख रहा हूं, तो मैं उन लोगों को स्थानीय रूप से चलाने के लिए प्रवृत्त करता हूं जो मैं अक्सर काम कर रहा हूं, फिर बड़े सेट कम बार-बार, और सब कुछ करने से पहले। –