क्या एक डेवलपर को एक परीक्षक के रूप में भी कार्य करना चाहिए? [बन्द है]


60

हम 3 डेवलपर्स, 1 डिजाइनर, स्क्रैम मास्टर और उत्पाद के मालिक की एक टीम हैं। हालाँकि, हमारी टीम में आधिकारिक परीक्षक नहीं हैं। एक समस्या जो हमेशा हमारे साथ होती है, वह यह है कि, एप्लिकेशन का परीक्षण करना और उन परीक्षणों को पास करना और बग्स को दूर करना एक ऐसा मानदंड है जिसे PBI (उत्पाद बैकलॉग आइटम) माना जाता है।

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

एक उपाय के रूप में, हमने सिफारिश की कि कंपनी एक नया परीक्षक रखे। कोई है जो नौकरी, परीक्षण और केवल परीक्षण होगा। एक आधिकारिक पेशेवर परीक्षक।

हालांकि, समस्या यह है कि, स्क्रैम मास्टर और हितधारकों का मानना ​​है कि एक डेवलपर (या एक डिजाइनर) एक परीक्षक भी होना चाहिए।

क्या वे सही हैं? क्या हमें डेवलपर्स (डिजाइनरों को भी) परीक्षक होना चाहिए?


1
प्रोग्रामर के संभावित डुप्लिकेट ।stackexchange.com/questions/ 100637/… , हालांकि किसी ने विपरीत दृष्टिकोण से पूछा है।
एडम लेअर

मैं जिस स्क्रम टीम में था, उनमें से सभी स्मार्टफोन या टैबलेट ऐप का परीक्षण कर रहे थे और सभी को बहुत मदद मिली।
ott--

लेखकों को एक संपादक की आवश्यकता होती है।
जेएफओ

जवाबों:


59

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

डेवलपर परीक्षक हो सकते हैं, लेकिन वे परीक्षक नहीं होने चाहिए । डेवलपर्स अनजाने में / अनजाने में आवेदन को इस तरह से उपयोग करने से बचते हैं जो इसे तोड़ सकते हैं। ऐसा इसलिए है क्योंकि उन्होंने इसे लिखा है और ज्यादातर इसे उसी तरह से परखते हैं जिस तरह से इसका इस्तेमाल किया जाना चाहिए।

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

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

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

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

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


9
जोरदार और जोरदार तरीके से असहमत ... डेवलपर्स अत्यधिक प्रभावी परीक्षक हो सकते हैं लेकिन एक फीचर के डेवलपर को भी उसी फीचर का परीक्षक नहीं होना चाहिए। तीन अलग-अलग विशेषताओं पर काम कर रहे तीन लोगों द्वारा कई छोटी-छोटी टीमें दोनों भूमिकाएँ निभाती हैं, फिर अन्य तीन डेवलपर्स में से एक को टेस्टिंग सौंपती हैं। यह बहुत अच्छी तरह से काम करता है जब एक टीम में क्यूए परीक्षक नहीं होता है।
maple_shaft

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

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

4
@ डेडलनिक्स: यह वास्तव में मुझे याद दिलाता है कि लोग मेरे जवाब को पढ़े और समझे बिना भी क्यों नीचे गिरते हैं। खुद को उद्धृत करने के लिए: "सॉफ़्टवेयर को यूनिट परीक्षणों द्वारा समर्थित किया जाना चाहिए और परीक्षक को सॉफ़्टवेयर सौंपने से पहले तकनीकी त्रुटियों को कम से कम किया जाना चाहिए।"
फाल्कन

2
"दूसरी ओर एक अच्छा परीक्षक, आवेदन को प्रताड़ित करने की कोशिश करता है। उसका प्राथमिक उद्देश्य इसे तोड़ना है।" - पूरी तरह से असहमत। मेरे पास एक टेस्टर है जो लगातार कीबोर्ड को नीचे या ओवरफ्लो करने के लिए मैश करने की कोशिश करता है। ज़रूर, ये बग हैं, लेकिन एक $ 1 ट्रिलियन ट्रिलियन चालान जो एक त्रुटि फेंकता है, मेरी टू-डू सूची में इतना कम है जितना कि पंजीकरण नहीं है। एक GRE परीक्षक सभी परिदृश्यों का परीक्षण करता है जो विभिन्न उपयोगकर्ता ऐप का उपयोग करेंगे। एक अच्छा डेवलपर यह सुनिश्चित करता है कि सभी कोड रास्तों का परीक्षण किया गया है और जब यह ऐप इस्तेमाल किया जाता है।
पॉल

42

डेवलपर्स टेस्टर हो सकते हैं - अन्य डेवलपर्स के कोड के।

लेकिन अपने स्वयं के कोड का परीक्षण करना एक अच्छा कदम नहीं है - डेवलपर्स के पास अपने स्वयं के कोड के बारे में मानसिक अवरोध हैं, और इसलिए व्यापक या उपयुक्त परीक्षण डिजाइन करने में कठिनाई होती है।

हमेशा ऐसे डेवलपर होंगे जो सोचते हैं कि वे यह अच्छी तरह से करते हैं, लेकिन आमतौर पर वे ऐसा नहीं करते हैं (और मुझे यकीन है कि मुझे बहुत सारे अंधे धब्बे हैं)।

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

यह सही नहीं है, लेकिन यह एकल डेवलपर से बेहतर है जो सब कुछ करने की कोशिश कर रहा है।

कभी-कभी आपके सहकर्मी आपके सॉफ़्टवेयर को तोड़ने में वास्तव में अच्छे हो सकते हैं, क्योंकि उन्हें इससे आनंद मिलता है और इतनी परवाह नहीं करते - क्योंकि यह उनका कोड नहीं है।


2
अरे हाँ, ज़रूर। पूरी तरह से सहमत हूँ। यह सिर्फ इतना है कि जब आप जो चाहते हैं उसका 100% नहीं प्राप्त कर सकते हैं, तो आपको कम के लिए समझौता करना पड़ सकता है। आप जानते हैं कि कम इतना अच्छा नहीं है लेकिन यह कुछ भी नहीं से बेहतर है।
जल्दी से जल्दी

4
मैं आम तौर पर क्रॉस-परीक्षण से सहमत हूं लेकिन कुछ टीमों पर जो संघर्ष का परिचय देंगे। कुछ लोगों को दूसरों को दोष देने में मज़ा आता है ("मेरा सामान काम करता है, तुम्हारा नहीं, लोल, मैं तुमसे बहुत बेहतर हूं") और यह अस्वीकार्य है। मैंने कई बार देखा है। Crosstesting केवल उन सहयोगियों के बीच की जानी चाहिए जो एक दूसरे का सम्मान करते हैं। मेरी टीम में मैंने ऐसे नॉर्मल डेवलपर को पेश किया है जो हर बग के लिए दोषी ठहराए जाते हैं ताकि कोई भी उसका चेहरा खो दे। कीड़े नामहीन हैं, वे होते हैं।
फाल्कन

5
+1 को अपने स्वयं के कोड को ठीक से जांचना असंभव है। यह आश्चर्यजनक है कि जो चालें आप पर खेल सकती हैं - आप सुनिश्चित होंगे कि आपने 100% कोडित और कुछ फ़ंक्शन का परीक्षण किया है और यह आपको दिखाने के लिए किसी और को ले जाएगा यह वास्तव में बहुत संकीर्ण मामले को छोड़कर काम नहीं करता है और यह होगा एक बार दिखाए जाने के लिए स्पष्ट हो - लेकिन आप इसे कभी नहीं देखेंगे। मन संज्ञानात्मक शॉर्टकट का उपयोग करता है, और परीक्षण में उन लोगों के लिए असंभव बनाता है जिन्होंने इसे ठीक से परीक्षण करने के लिए कोड को डिज़ाइन और विकसित किया है।
StasM

2
@StasM - सहमत, एक छोटी योग्यता के साथ: मैंने पाया है कि महीनों बाद अपने कोड में वापस आ रहा हूं, मैं दोष देख सकता हूं और इसे बेहतर तरीके से परीक्षण करने का काम कर सकता हूं। लेकिन लिखने के बाद अपना खुद का परीक्षण करें वास्तव में बहुत कठिन है।
जल्दी_अगले

1
@ बीन एस्टन: एक डेवलपर को अभी भी यूनिट टेस्ट, इंटीग्रेशन टेस्ट आदि करना चाहिए। अंधे धब्बे सिर्फ इसलिए नहीं जाएंगे क्योंकि आप उन्हें चाहते हैं।
जल्दी से जल्दी

11

क्या पत्रकार को सही तरीके से लिखना चाहिए? मेरा मतलब है, यह सभी व्याकरण संबंधी त्रुटियों को खोजने के लिए सुधारकों और संपादकों का काम है।

फिर भी, पत्रकार अपने द्वारा कुछ वर्तनी प्रदान करते हैं। फिर भी, सुधारक एक अलग और महत्वपूर्ण पेशा है।

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

यदि कोई व्यक्ति, विकास के अलावा, उस काम को भी लगातार कर रहा है, तो इसका सिर्फ एक सरल तथ्य है - वह अंशकालिक परीक्षक है।


10

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

स्प्रिंट या दो के लिए एक "नियंत्रित रन" प्रदर्शन करने पर विचार करें, देव और ट्रैकिंग प्रयासों को अलग-अलग ट्रैक करें। इस तरह के रन के अंत में, एकत्र किए गए डेटा का विश्लेषण करके पता लगाएं कि आप परीक्षण में कितना प्रयास करते हैं।

तुम बाहर पाते हैं कि परीक्षण बहुत प्रयास लेता है, प्रबंधन करने के लिए कि डेटा पास - यह एक हो जाएगा सम्मोहक सबूत आपके अनुरोध (और अधिक सम्मोहक से आप अब) का समर्थन।

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


... हमने सिफारिश की है कि कंपनी एक नया परीक्षक रखे। कोई है जो नौकरी, परीक्षण और केवल परीक्षण होगा। एक आधिकारिक पेशेवर परीक्षक।

हालांकि, समस्या यह है कि, स्क्रैम मास्टर और हितधारकों का मानना ​​है कि एक डेवलपर (या एक डिजाइनर) एक परीक्षक भी होना चाहिए।

स्वीकार करना होगा, आपकी कंपनी का प्रबंधन मुझे बहुत लंगड़ा लगता है। मेरा मतलब है - ठीक है, यह पता लगाना वास्तव में मुश्किल हो सकता है कि परियोजना के लिए कितने परीक्षक सर्वश्रेष्ठ होंगे, ठीक है।

लेकिन कम से कम एक परीक्षक के लिए सिर्फ एक सुरक्षित शर्त है - वास्तव में मज़ेदार है कि वे खुद को बदमाश / चुस्त होने का दावा करते हुए इसे आज़माने में संकोच करते हैं ।


9

पहले, एक प्रवेश स्क्रीन में कुछ बदलाव करने के बाद, हमारे पास दो डेवलपर्स क्रॉस टेस्ट थे। यह तब था जब हमारे नियमित परीक्षक मातृत्व अवकाश पर थे।

उन्होंने मूल रूप से एक इनवॉइस लिस्टिंग स्क्रीन को बदल दिया, जिसे उपयोगकर्ता "संपादन" बटन के माध्यम से कुछ संपादन करने के लिए ज़ूम इन करने से पहले चालान का चयन करते थे। मूल सूची को बाहर फेंक दिया गया था और एक नया ग्रिडव्यू डाला गया था, जिसमें फ़िल्टरिंग, ग्रुपिंग, सॉर्टिंग और सभी प्रकार की शांत कार्यक्षमता थी।

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

पता चला कि डेवलपर ने चेक बॉक्स (चयन के लिए) और संपादन बटन निकाल लिया और चूंकि डेवलपर्स हमेशा किसी वस्तु का चयन करने के लिए डबल क्लिक करते हैं, उनमें से किसी को भी इसमें कुछ भी गलत नहीं लगा ......

डेवलपर्स और उपयोगकर्ता अलग-अलग दुनिया में रहते हैं, क्रॉस टेस्टिंग होने से बेहतर है कि डेवलपर खुद के काम का परीक्षण करें लेकिन यह अभी भी एक ही बात नहीं है।


3
मैं यह नहीं कहूंगा कि "वे अलग-अलग दुनिया में रहते हैं", लेकिन लोगों की आदतें हैं और एक डेवलपर का कोड काम करेगा अगर यह उसी आदत वाले व्यक्ति द्वारा उपयोग किया जाएगा। मैं गिन नहीं सकता कि मैं कितनी बार एक परीक्षक द्वारा पाई गई बग को पुन: उत्पन्न नहीं कर सका, जब उसने बग को पुन: पेश किया, तो उसके कंधे पर देखा, और कहा "वाह, मैंने कभी ऐसा नहीं किया होगा जो आपने अभी किया था"।
gnasher729

4

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


2

आपको टेस्टबिलिटी को ध्यान में रखते हुए डिजाइन करना चाहिए लेकिन अगर आपके पास डेडिकेटेड टेस्टर नहीं है तो कुछ चीजें बस क्रैक से ही खिसक जाएंगी क्योंकि दिन में पर्याप्त घंटे नहीं होते हैं जो डिजाइन, इंप्लीमेंट और टेस्ट दोनों तरह के होते हैं।


2

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

सबसे ऊपर वह समस्या आती है जो अवचेतन रूप से सॉफ़्टवेयर डेवलपर बग को खोजने के लिए नहीं चाहता है।


1

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

उपयोग के मामले के उल्लेख से मैं मान लूंगा कि आपका 'कोड कवरेज टूल' भी उपयोग कर रहा है? यदि नहीं, तो यह देखने में मदद कर सकता है कि किस कोड का परीक्षण नहीं किया जा सकता है, और कुछ स्थितियों के दौरान अप्रत्याशित कीड़े में पॉपिंग हो सकता है।

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

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