एक छोटा सा बदलाव कर रहा है, यह परीक्षण, तो "कुल्ला और दोहराने", एक बुरी आदत है?


54

मैं कई वर्षों के अनुभव वाला एक प्रोग्रामर हूं। मुझे एहसास हुआ कि मुझे एक निश्चित आदत है। मुझे यकीन नहीं है कि यह वास्तव में एक बुरी आदत है या नहीं।

मुझे हल करने के लिए कार्यों की एक सूची मिलती है, यहां तक ​​कि छोटे छोटे कार्य भी, उदाहरण के लिए,

  1. इस उपयोगकर्ता नियंत्रण के संसाधन बदलें
  2. दूसरे का आकार बदलें
  3. किसी अन्य उपयोगकर्ता नियंत्रण पर कुछ HTML और कोडिंग जोड़ें

ये सभी कार्य छोटे हैं। मेरा मतलब है कि उन्हें 10 मिनट के भीतर किया जा सकता है, लेकिन मुझे छोटे बदलाव करने की बुरी आदत है और फिर एक वेब ब्राउज़र में बार-बार उनका परीक्षण करें । क्या यह अच्छा अभ्यास है?

या क्या मुझे उन सभी को एक साथ प्रदर्शन करना चाहिए और फिर उन्हें एक साथ परीक्षण करना चाहिए?

यदि यह वास्तव में एक बुरी आदत है, तो मैं इसे कैसे सुधार सकता हूं, क्योंकि यह समय-समय पर छोटे-छोटे परिवर्तनों का परीक्षण करने में बर्बाद करने जैसा लगता है?



3
@gnat आपके शीर्ष मतदान का जवाब राय के साथ-साथ प्रोग्रामर भी है।
गणित

2
यह वह नहीं है। आपके दूसरे सर्वाधिक मत वाले उत्तर के बारे में कैसे - प्रोग्रामर.स्टैकएक्सचेंज. com/questions/ 159964/… - क्या यह राय भी नहीं है?
गणित

7
दृष्टिकोण परीक्षण प्रेरित विकास के समान लगता है जहां आप एक परीक्षण बनाते हैं, परीक्षण पास करने के लिए आवश्यक परिवर्तन करते हैं, फिर अपने परीक्षण चलाते हैं। जब आप इसे दूसरे परीक्षण के लिए दोहराते हैं, तो आपका दूसरा परीक्षण रन पहले शामिल होगा; यह साबित करने के लिए कि आप अभी भी बार-बार काम कर रहे हैं, लेकिन यह स्वचालित है।
केविन हॉग

5
मैं कहूंगा कि आदत के विपरीत, परिवर्तनों का एक गुच्छा बनाना और उसके बाद ही इसका परीक्षण करना, बुरी आदत है।
क्रिस बी। 15

जवाबों:


130
  • यह एक अच्छा अभ्यास है।
  • आप वैज्ञानिक विधि का पालन कर रहे हैं।
  • यदि आप किसी भी परीक्षण से पहले कई चीजों को बदलते हैं, तो प्रत्येक का परीक्षण अधिक कठिन होगा, और शायद विश्वसनीय नहीं, क्योंकि पूर्व शर्त तैयार करना अधिक कठिन होगा और विभिन्न परिवर्तन एक-दूसरे के साथ उन शिष्टाचारों में बातचीत कर सकते हैं जिन्हें आपने नहीं देखा था।
  • जिस समय आपको लगता है कि आप "बर्बाद" कर रहे हैं, आप बाद में फिर से शुरू होने, परीक्षण और चरणों को बनाए रखने के लिए फिर से प्राप्त करेंगे।
  • जाने के लिए रास्ता।

9
AFAIK, UI प्रोग्रामिंग के लिए, यह केवल अच्छा अभ्यास नहीं है, यह एकमात्र स्वीकार्य अभ्यास है। यही कारण है कि सॉफ्टवेयर कंपनियों ने What you see is what you getHTML, CSS, विजेट आदि के साथ काम करने वाले डेवलपर्स के लिए बहुत सारे उपकरण बनाए ...
InformedA

38

बहुत सारे बदलाव करना और हर एक का परीक्षण करना कोई बुरी बात नहीं है। यह आपको प्रत्येक परिवर्तन के प्रभाव को देखने की अनुमति देता है, और फिर जब कोई परिवर्तन किसी समस्या का कारण बनता है, तो यह जानना बहुत आसान है कि किन मुद्दों के कारण परिवर्तन हुआ है - सबसे हाल का!

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

बेशक, इस दृष्टिकोण को चरम पर ले जाना संभव है। संतुलन ढूँढना कुंजी है, और जो आप बदल रहे हैं और परिवर्तन एक दूसरे को कैसे प्रभावित कर सकते हैं, इसकी बेहतर समझ प्राप्त करने के साथ आता है ।


18

आपके प्रश्न के दो भाग हैं:

  1. क्या मुझे उन सभी को एक बार प्रदर्शन करना चाहिए और फिर उन्हें एक साथ परीक्षण करना चाहिए?

    मुझे लगता है कि आप एक वीसीएस का उपयोग कर रहे हैं ।
    और यह पता लगाने के लिए कि कार्यों की सूची को कमिट की सूची में वितरित करने के लिए क्या कार्य किए गए हैं: एक कार्य, एक प्रतिबद्ध

    इससे वर्तमान कोड आधार के विभिन्न संस्करणों का प्रबंधन करना आसान हो जाता है; आप पिछली स्थिति में वापस आ सकते हैं, मुख्य ट्रंक आदि में आप जो बदलाव दर्ज करना चाहते हैं उसे चेरी-पिक कर सकते हैं।

    उत्तर स्पष्ट है:

    नहीं, केवल एक के बाद एक परिवर्तन करें - एक कार्य एक प्रतिबद्ध

  2. लेकिन मुझे छोटे छोटे बदलाव करने और फिर वेब ब्राउजर में बार-बार परीक्षण करने की बुरी आदत पड़ गई, क्या यह अच्छा अभ्यास है?

    यह परीक्षण कोड / यूआई के लिए एक अच्छा अभ्यास है जो कुछ भी है, लेकिन यह बकवास ब्राउज़र में फिर से अधिक से अधिक यह करने के लिए है। उपकरण हैं, जो आपके लिए स्वचालित रूप से करने के लिए ( सेलेनियम, फैंटमजेएस / कैस्पर, ज़ोंबीजेएस )

    इस मामले का उत्तर है:

    हां, एक से अधिक बार सॉफ्टवेयर का परीक्षण करना अच्छा है, लेकिन स्वचालन का उपयोग करें


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

एक कार्य जो सुनिश्चित करता है कि वीसीएस को "सिंगल टास्क" की विभिन्न परिभाषाओं के लिए एक
असंगत

निर्भर करता है कि आप कितने बारीक काम को परिभाषित करते हैं;) या यदि आप चाहें तो: एक "टिकट" एक कमिट / ब्रांच। गिट का उपयोग करना आसान बनाता है
थॉमस जंक

1
केविन ने जो कहा उस पर विस्तार करने के लिए मेरा मानना ​​है कि यदि आप एक नया फीचर जोड़ रहे हैं जो कि फ्रंट एंड है तो आपको हमेशा इसे मैन्युअल रूप से जांचना होगा (मुझे फ्रंट एंड वर्क के लिए TTD के लिए एक इक्विव ढूंढना है), लेकिन आप अपना ऑटोमेशन भी चाहते हैं यह सुनिश्चित करने में मदद के लिए कि आपने मौजूदा सुविधाओं को नहीं तोड़ा है।
स्क्रैगर

@ सागर हाँ। स्वचालन प्रतिगमन के लिए है।
थॉमस जोड़

6

किसी भी डेवलपर की आदत के लिए 2 मुख्य प्रश्न हैं:

  1. यह आपके द्वारा बनाए गए कोड की गुणवत्ता को कैसे प्रभावित करता है?
  2. यह आपकी उत्पादकता को कैसे प्रभावित करता है?

यदि दोनों का उत्तर "यह इसे बेहतर बनाता है", आदत को पेंच करें, इसे दूसरों को सिखाएं!
यदि एक का उत्तर "बेहतर" है और दूसरा "बदतर" - यह एक शैली है और आपको इसके बारे में सचेत रहना होगा। यह हमेशा लागू नहीं होता है, और आपको इसे हर बार दबाने की कोशिश करनी पड़ सकती है।
यदि दोनों का उत्तर "नकारात्मक" है - तो आपको एक गंभीर समस्या है।

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

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

इसलिए - जब तक कि आपके कार्य दिवस का 90% वास्तव में छोटे बदलाव नहीं कर रहा है - यह पूरी तरह से ठीक आदत है। यदि आपका कार्य दिवस ऐसा है, तो हो सकता है कि आप अपनी कार्यशैली (या कार्यस्थल) की समीक्षा करना चाहें।


4

यह डोमेन पर निर्भर करता है। एक वेब पेज बिछाने के लिए यह ठीक काम करेगा और आप तत्काल प्रतिक्रिया प्राप्त कर सकते हैं (आप इसे सीधे ब्राउज़र में भी कर सकते हैं!)। इसी तरह यह ऐसी किसी भी चीज के लिए अच्छा काम करेगा, जिसे शुरू करने के लिए लंबे समय की आवश्यकता नहीं है। यह पसंद किया जाता है क्योंकि यह आपके मानसिक काम का बोझ कम रखता है और गलतियों की संभावना को कम करता है।

हालांकि, वास्तव में बड़ी परियोजनाओं के लिए जहां आपको कोड संकलित करना होगा और लिया गया समय गैर-तुच्छ (कई मिनट) है, इसके परिणामस्वरूप बहुत अधिक डाउन समय हो सकता है इसलिए आपको अक्सर इसका सहारा लेना होगा:

  • अपने काम के प्रवाह को "समानांतर करना" (जैसे एक साथ कई बिल्ड पर काम), या
  • एक बार में जितनी संभव हो उतनी चीजें करें, या करें
  • काम करने और बाद में बड़ी परियोजना में एकीकृत करने के लिए एक छोटा स्वतंत्र हिस्सा बनाएं।

(शायद अन्य तरीके भी हैं।)


इसे सीधे ब्राउज़र में करने के लिए +1। मैं अक्सर ब्राउज़र में सीएसएस को सही बनाता हूँ, मैं जो असली काम करने जा रहा हूँ, उसका एक प्रोटोटाइप है।
रबरडक

0

जैसा कि दूसरों ने कहा है, यह निश्चित रूप से एक बुरी आदत नहीं है। मैं आमतौर पर एक बार में केवल कुछ संशोधन करना पसंद करता हूं। एकमात्र अपवाद यह है कि अगर मेरे पास परिवर्तनों की एक बड़ी सूची है जो सभी एक दूसरे को प्रभावित नहीं करते हैं (जैसे मामूली शैलियों या प्रतिलिपि में परिवर्तन, विभिन्न पृष्ठों पर परिवर्तन आदि)। यदि आप लेआउट को संशोधित कर रहे हैं, तो एक बार में परिवर्तन करने के लिए छड़ी करें ताकि आप अगले मुद्दे पर जाने से पहले सभी समर्थित ब्राउज़रों में सब कुछ 100% सत्यापित कर सकें।

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