2009-03-19 7 views
5

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

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

अद्यतन: हालांकि गणितीय हर मामले में, जोएल के article on QA should स्पष्ट पर्याप्त हो, वह वास्तव में बहुत one of dogfood है :)

+0

यह सिद्ध कहां है? उस गणितीय साक्ष्य के किसी भी संदर्भ की सराहना की जाती है :) –

+0

@ मेहरदद आप वहां जाते हैं, दो जोएल लेख, प्रत्येक बिंदु –

उत्तर

9

I लगभग गैरी के उत्तर से सहमत हैं - सिवाय इसके कि उनका दावा है कि यह कोड की गुणवत्ता में सुधार करने के बारे में नहीं है। मुझे लगता है कि यह पूरी तरह से है, इसके साथ-साथ उपयोगिता जिसे उन्होंने अपने पहले पैराग्राफ में उल्लेख किया है।

आप एक विस्तृत dogfood हो सकता है, तो आप मिल जाएगा:

  • अधिक यथार्थवादी डेटा की तुलना में गुणवत्ता आश्वासन का उपयोग होने की संभावना है
  • एक व्यापक रेंज की (यह देखते हुए कि यह असली डेटा है!) क्यूए की तुलना में डेटा का उपयोग करने की संभावना है

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

जितना आप कर सकते हैं उतने लोगों को डॉगफूड प्राप्त करें (निश्चित रूप से संभावित समस्याओं के बारे में उचित अपेक्षाएं निर्धारित करना)। यह निश्चित रूप से "केवल डेवलपर" नहीं होना चाहिए (जब तक कि आप एक डेवलपर-केवल उत्पाद का निर्माण नहीं कर रहे हों)। यह क्यूए के मूल्यवान काम से दूर नहीं है - इसमें यह शामिल है।

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

+1

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

+0

मैं कहूंगा कि उपयोगिता परीक्षण और अन्य प्रकार के परीक्षण (बग, असली दुनिया लोड परीक्षण आदि) के बीच विभाजन अलग-अलग होता है। मुझे लगता है कि यह क्यूए का * * * रूप है, क्यूए के लिए सिर्फ एक अलग "समर्पित" है। –

7

dogfooding क्यूए के बारे में बिल्कुल भी नहीं है। यह उस उत्पाद का उपयोग करने के बारे में है जिसे आप स्वयं विकसित कर रहे हैं ताकि आप देख सकें कि कार्यप्रवाह में चीजों में सुधार किया जा सकता है और आम तौर पर आपके सॉफ़्टवेयर का उपयोग करने के दर्द बिंदुओं को महसूस किया जा सकता है।

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

2

दो भूमिकाएं आमतौर पर "क्यूए" के रूप में वर्णित हैं।

  • गुणवत्ता आश्वासन - जो लोग आश्वस्त करते हैं कि गुणवत्ता योजना निष्पादित की जा रही है।

  • परीक्षकों - डेवलपर्स जो कोड नहीं करते हैं।

यदि आपका सवाल "आश्वस्त है कि गुणवत्ता योजना क्रियान्वित किया जा रहा है" पर ध्यान केंद्रित किया गया था, उसके बाद तो यह आसान है: डेवलपर्स काम है कि गुणवत्ता की योजना को पूरा करती है और गुणवत्ता आश्वासन ऑडिट करता है कि गुणवत्ता योजना पीछा किया गया था है।

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

योजना में कुछ स्वतंत्र परीक्षण शामिल हो सकते हैं। डेवलपर बी के लिए डेवलपर ए लिखने के परीक्षण किए जा सकते हैं। यह डेवलपर को लिखकर भी किया जा सकता है एक कोडिंग परीक्षण और सहकर्मी कोडिंग शुरू करने से पहले उन परीक्षणों की समीक्षा करें।

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

क्यूए सुनिश्चित करता है कि डेवलपर वास्तव में लगातार और पूरी तरह से कर रहे हैं।

मुझे एक व्यवहार्य नौकरी के रूप में "डेवलपर जो कोड नहीं करते" नहीं देखते हैं। ये वास्तव में कनिष्ठ स्तर के डेवलपर्स हैं। आप या तो कुछ अतिरिक्त तकनीकी कौशल विकसित करने के लिए उन्हें लाभ उठा सकते हैं; या उन्हें ऐसी स्थिति में खो दें जहां वे उपयोगकर्ताओं द्वारा हराया जा सकता है और डेवलपर्स के साथ बहस कर रहे हैं।

"डेवलपर्स जो कोड नहीं करते हैं" का लाभ उठाने का एक तरीका है उन्हें परीक्षण लिखना शुरू करना; फिर टूटे हुए कोड को ठीक करने के लिए उनका उपयोग करें; फिर किसी और के डिजाइन से कोड; तो अपने आप पर डिजाइन काम करते हैं।

इन "डेवलपर्स जो कोड नहीं करते हैं" को हतोत्साहित करने के कई तरीके हैं।एक यह है कि उन्हें अनुमान लगाएं कि उपयोगकर्ताओं का क्या अर्थ है। प्रक्रिया के बारे में अपने ज्ञान को संकुचित करके ऐसा करें जो उन्हें व्यवसाय विश्लेषण दस्तावेज़ों में मिलता है। एक और उन्हें उन पदों पर रखना है जहां उन्हें डेवलपर्स के साथ व्यावसायिक विश्लेषण दस्तावेजों की व्याख्या पर बहस करना है।

+0

के लिए एक मेरा मतलब है टेस्टर्स –

+0

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

1

आम तौर पर डॉगफूडिंग उपयोगी नहीं है, जब तक कि आप डेवलपर टूल विकसित नहीं करते हैं, जिन्हें डेवलपर्स के रूप में भी उपयोग करने की आवश्यकता होती है।

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

+1

यह केवल डेवलपर टूल तक ही सीमित नहीं है। क्या आपके और आपके सहयोगी दिन-प्रतिदिन उपयोग नहीं करते हैं? मान लें कि आप एक ब्राउज़र प्लगइन, या एक चैट उपकरण, या ऐसा कुछ लिख रहे थे - * * * डॉगफूड के लिए उपयोगी नहीं होगा। परीक्षण नहीं है "क्या यह एक डेवलपर टूल है"। (जारी) –

+1

यह "यह उत्पाद मेरी कंपनी में कुछ लोगों (चाहे डेवलपर्स या नहीं) का उपयोग करेगा।" यदि ऐसा है, तो यह dogfoodable है। –

+0

सच है लेकिन यह अभी भी चीजों की समग्र योजना में काफी संकीर्ण है और डेवलपर्स एक विशिष्ट उपयोगकर्ता से अलग तरीके से कंप्यूटर का उपयोग करते हैं। – AnthonyWJones

4

औपचारिक बनाम अनौपचारिक

("अपने कुत्ते का खाना खाने") अपने खुद के उत्पाद का उपयोग करते हुए गुणवत्ता आश्वासन का हिस्सा है और मैं इसे अनौपचारिक परीक्षण श्रेणी के अंतर्गत रखा के रूप में और अधिक औपचारिक परीक्षण आमतौर पर एक के द्वारा किया जाता करने का विरोध किया जाएगा अलग क्यूए विभाग।

गहराई बनाम चौड़ाई

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

छोटे annoyances कि अंतर

वहाँ भी कमियों के एक वर्ग बहुत एक वातावरण है कि केवल निदान किया जा सकता है "फील्ड में" (यह वास्तव में कष्टप्रद तेज़ आवाज़ कि से आ जा रहा है की तरह के लिए विशिष्ट है कहीं भी जब भी आप 72.52 मील प्रति घंटे पर चढ़ रहे हैं और आपको बिल्कुल नट्स चलाते हैं, फिर भी कोई भी मैकेनिक्स सक्षम नहीं है, न ही कार गैराज में होने पर कारण के लिए उतरने को तैयार है)।

नग्न सॉफ्टवेयर बनाम आचरण के अनुप्रयोग + सेट

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

आंतरिक बदलें बनाम बाहरी

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

"बैलेंस" के साथ गलत क्या है?

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

कौन परीक्षण करना चाहिए: भेद

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

आप सबकुछ डॉगफूड नहीं कर सकते! या आप कर सकते हैं

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

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

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

+0

अच्छा पूरा जवाब! –

1

डॉगफूडिंग एक अच्छा समाधान है यदि आप ऐसा कुछ बना रहे हैं जो आपके कर्मचारियों द्वारा दैनिक आधार पर प्रयोग योग्य है, लेकिन दुर्भाग्यवश, मुझे नहीं लगता कि यह हर एप्लिकेशन के लिए संभव है। यदि आप एक त्वरित संदेश क्लाइंट लिख रहे हैं, तो dogfooding आसान है। यदि आप सीवेज ट्रीटमेंट प्लांट के लिए कंट्रोल सिस्टम लिखते हैं, तो शायद नहीं।

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

+0

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

2

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

प्रबंधक को प्रत्येक समूह के परीक्षण के स्तर और समय के साथ tweaks/धुनों को निर्धारित करना चाहिए और शामिल प्रत्येक व्यक्ति के लिए विशिष्ट। जितना खराब कोड वितरित किया जा रहा है, अधिक समय परीक्षण (टीडीडी) डेवलपर को सुधारने के साथ खर्च किया जाना चाहिए।

4

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

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

संबंधित मुद्दे