मुझे कैसे पता चलेगा कि एकीकरण इकाई को हटाने के लिए मेरे पास पर्याप्त इकाई परीक्षण कवरेज है?


15

मैं एक विरासत प्रणाली पर काम कर रहा हूं (इसका मतलब है कि यह बिना परीक्षणों के लिखा गया था)। हमने कुछ सिस्टम को एकीकरण परीक्षणों को लिखने की कोशिश की है जो बाहर से कार्यक्षमता का परीक्षण करते हैं।

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

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

मुझे कैसे पता चलेगा कि मेरी अच्छी इकाई परीक्षण एक खराब एकीकरण परीक्षण को पर्याप्त रूप से कवर कर रहे हैं ताकि मैं उस एकीकरण परीक्षण को हटा सकूं?

जवाबों:


18

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

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


3
+1 के परीक्षण की सिफारिश करने के लिए स्वचालित होना चाहिए क्योंकि इससे स्पष्ट प्रश्न होता है कि "स्वचालित परीक्षण क्यों बंद करें?"

1
हाँ, मैं इससे सहमत हूँ। बेशक, यहां तक ​​कि अगर आप पर्याप्त इकाई परीक्षण कवरेज नहीं है, तो भी आपको काटने के लिए आता है। उदाहरण के लिए, हमारे पास वर्तमान में एक एकीकरण परीक्षण सूट है, जिसे चलाने में लगभग 6 घंटे लगते हैं ... लेकिन मुझे नहीं लगता कि संगतता पर मेरी कंपनी के फोकस के कारण कभी भी एक परीक्षण को नष्ट नहीं किया गया है
अर्लज़

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

2
@ टीटीईवाईटी: हां, यह बिल्कुल एक अच्छा विचार लगता है। यूनिट परीक्षण अच्छे हैं; सामान के लिए यूनिट परीक्षण जो आप जानते हैं कि पहले से ही टूट चुके हैं और भी बेहतर हैं।
ग्रेग हेविगिल

7

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


यदि यह परियोजना खरोंच से शुरू हुई जो मेरे लिए अधिक समझ में आएगी। लेकिन मेरा पहला एकीकरण परीक्षण था "जाँच करें कि आप लॉगिन कर सकते हैं" और आखिरकार मैंने बहुत सारे इकाई परीक्षण किए जो कि "जाँच सकते हैं कि आप लॉगिन कर सकते हैं"। यदि आप HTML बदलते हैं तो एकीकरण परीक्षण हर समय क्रैश हो जाता है। यह उदाहरण पूरी तरह से वंचित है, लेकिन क्या एकीकरण परीक्षण को हटाने के लिए यह एक अच्छा मामला नहीं है?
डैनियल कपलान

3
@tieTYT: UI के माध्यम से कुछ का परीक्षण करने से अक्सर बहुत अस्थिर समाधान होता है। फिर भी, यूआई द्वारा परीक्षण महत्वपूर्ण है, बस कभी-कभी ऐसा होता है कि यहां मैनुअल परीक्षण उस परीक्षण को स्वचालित करने और उसे स्थिर रखने की तुलना में कम प्रयास का उत्पादन करते हैं। इसलिए जब आपको लगता है कि यहां ऐसा ही है, तो आप उस "एकीकरण परीक्षण" को स्वचालित परीक्षण की सूची से हटा सकते हैं और इसे मैनुअल परीक्षण की अपनी योजना में जोड़ सकते हैं।
डॉक्टर ब्राउन

@DanielKaplan क्या अधिक स्थिर होने के लिए एकीकरण परीक्षण को अद्यतन करना संभव होगा? क्योंकि एचटीएमएल कभी कभी बदलता है, "प्रवेश के बाद पृष्ठ पर उपयोगकर्ता नाम प्रकट होता है" की तरह तो संभवतः परीक्षण कुछ नहीं बल्कि कुछ की तरह अधिक विशिष्ट की तुलना में "उपयोगकर्ता नाम प्रवेश के बाद इस div के अंदर प्रकट होता है" यदि यह असफल रहने के है
जेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.