मैं एक परीक्षण में परीक्षण कैसे शुरू कर सकता हूं? [बन्द है]


20

मेरे पास बनाने के लिए एक स्वीकारोक्ति है: औपचारिक स्वचालित परीक्षण कभी भी मेरी प्रोग्रामिंग पृष्ठभूमि का हिस्सा नहीं था। अब मैं बहुत सारे डेवलपर्स के साथ एक बहुत बड़ी कंपनी में काम करता हूं (उनमें से ज्यादातर एक प्रकार या किसी अन्य के वेब डेवलपर्स), और यह स्पष्ट है कि उनमें से अधिकांश * या तो परीक्षण नहीं करते हैं। (* मैं औपचारिक रूप से कहने वाला नहीं हूं ; कृपया इसका पता लगा लें।)

यदि मैं परीक्षण शुरू करने के लिए अपने संगठन का समर्थन पाने की प्रतीक्षा करता हूं तो ऐसा कभी नहीं होगा। यदि मैं प्रबंधन पर परीक्षण को धक्का देकर "अंदर से चीजों को बदलने की कोशिश करता हूं" तो परिवर्तन होने से पहले मैं भाप से बाहर चला जाऊंगा। मुझे अब परीक्षण शुरू करने की आवश्यकता है।

लेकिन TDD और इसके ilk के साथ मैं उत्पादन कोड के साथ बहुत सारे परीक्षण कोड को समाप्त करने जा रहा हूं। हमारे संस्करण नियंत्रण प्रणाली (सभी केंद्रीकृत) परीक्षण कोड के भंडारण के लिए व्यवस्थित नहीं हैं। मुझे अपने वर्कस्टेशन पर उन सभी के लिए जगह ढूंढनी होगी।

क्या यह एक संस्कृति में सॉफ्टवेयर परीक्षण का एक व्यक्तिगत अभ्यास शुरू करना संभव है जो इसके लिए उपकरण का मूल्य या प्रदान नहीं करता है? जब आधिकारिक उपकरण और संगठन के पास परीक्षण, रूपरेखा और ऑटोमेशन के लिए जगह नहीं है, तो आपको परीक्षण करने में सक्षम करने के लिए आप किन तकनीकों और उपकरणों का उपयोग करते हैं?


14
आप अपनी कंपनी के VCS में परीक्षण कोड क्यों नहीं संग्रहीत कर सकते हैं? मैं कल्पना करता हूं कि जिस परियोजना में srcउत्पादन कोड के लिए एक निर्देशिका है, उसमें एक testनिर्देशिका भी जोड़ना संभव होगा - या यह किसी कारण से स्पष्ट रूप से मना किया गया है?
पेटर तोर्क


@ PéterTörök आप हमसे बहुत अधिक सहमत हैं। हमारे पास srcनिर्देशिका नहीं है , हमारे पास वेब जड़ें हैं। अपने कोड को केंद्रीय VCS में जांचने के लिए मैं इसे वेब रूट में देखूंगा।
कोजिरो

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

@ScottWylie मैंने ऐसा नहीं कहा। हमारे पास VCS है, हमारे पास इसका परीक्षण करने के लिए व्यवस्थित नहीं है (या वेबरूट के सामान से सीधे संपादन से परे बहुत कुछ)। मुझे लगता है कि किसी के भतीजे ने 1998 में सीवीएस स्थापित किया और किसी ने भी इसे नहीं बदला है।
कोजिरो

जवाबों:


22

मैंने व्यक्तिगत रूप से काफी सफलता के साथ ऐसा किया है। सफलता के प्रमुख कारक:

  • (अस्थायी) प्रबंधन समर्थन प्राप्त करें। स्वचालित परीक्षणों के फायदे अच्छी तरह से प्रलेखित हैं और किसी भी प्रबंधक को कम से कम कोशिश करने के लिए राजी करना चाहिए। जिसमें वीसीएस में स्पॉट ढूंढना और बिल्ड सर्वर शामिल है, क्योंकि
  • स्वचालित परीक्षण केवल अपना पूरा मूल्य प्रदान करते हैं यदि वे अक्सर और स्वचालित रूप से चलाए जाते हैं ताकि आप जल्द ही समस्याओं के बारे में जान सकें और उन्हें चलाने के लिए मत भूलना लोगों पर भरोसा करना पड़े। आपको एक बिल्ड सर्वर की आवश्यकता है जो उन्हें कम से कम दैनिक चलाता है। यह एक पुराना वर्कस्टेशन हो सकता है। जेनकिन्स को दौड़ने में बहुत कम मेहनत लगती है।
  • मिसाल पेश करके। परीक्षण लिखें, आपके द्वारा प्रदान किए जाने वाले लाभ के बारे में बात करें, और जब वे अन्य डेवलपर्स द्वारा पेश की गई त्रुटियों को प्रकट करते हैं, तो इसके बारे में बात करते हैं कि वे संभावित रूप से बहुत अधिक शर्मिंदगी से कैसे सुरक्षित थे।
  • कम लटकने वाले फल के लिए जाएं। आवेदन के कुछ हिस्सों का परीक्षण करना कठिन होगा, अन्य आसान। कुछ मजबूत होंगे, अन्य भंगुर होंगे। भंगुर के लिए परीक्षण लिखना, लेकिन भागों का परीक्षण करना आसान है जो कम से कम समय में सबसे अधिक मूल्य प्रदान करता है।
  • देखें कि क्या आप पुन: प्रयोज्य परीक्षण लिख सकते हैं, उदाहरण के लिए, परीक्षण सम्मेलनों या सुविधाएँ जो सभी मॉड्यूल (वेब ​​पेज, आरईएसटी सेवाओं, जो कुछ भी) के पास होनी चाहिए, लेकिन जो अक्सर भूल जाती है।

7

प्रबंधन के समर्थन के बिना आप पानी में मर चुके हैं। प्रबंधन दावा करेगा कि आप सार्थक काम नहीं कर रहे हैं, आप अपनी समीक्षाओं में दंडित होंगे, और अंत में आपको निकाल दिया जाएगा। यह देखने के लिए प्रबंधन लाने के तरीके हैं कि प्रारंभिक परीक्षण उन्हें कम लागत और वह सब। यह संस्कृति को बदलने के लिए संभव है, लेकिन आप अपनी गर्दन को चॉपिंग ब्लॉक पर रख रहे हैं।

मैं कुछ भी करने से पहले परिवर्तन को पेश करने के बारे में मैकियावेली द प्रिंस अध्याय पढ़ने का सुझाव दूंगा ।


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

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

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

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

3

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

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


1

मुझे नहीं लगता कि आप बहुत दूर तक मिलेंगे जब तक आप एक अच्छा पर्याप्त मामला बना सकते हैं कि एक समस्या है (जो वर्तमान में पहचाना नहीं जा सकता है) कि स्वचालित परीक्षण पता कर सकता है।

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

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


0

एक विचार यह है कि आप एक परीक्षण लिखने का लक्ष्य रखते हैं जो उस कोड को साबित करता है जो किसी और ने लिखा है वह दोषपूर्ण है। कांसेप्ट बेचना चाहिए।

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