2008-11-03 9 views
6

G'day,इकाई परीक्षण का मतलब आपके लिए क्या है?

मैं ऑफशोर डेवलपर्स के एक समूह के साथ काम कर रहा हूं जो यूनिट परीक्षण शब्द का उपयोग बहुत कम कर रहे हैं।

उनकी इकाई परीक्षण लेखन और फिर प्रणाली की इकाई परीक्षण करने के बारे में गुणवत्ता आश्वासन दस्तावेज़ बात करती है।

यह वही इकाई परीक्षण बिल्कुल है मेरी व्याख्या के साथ नहीं मिलाया गया है।

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

तो फिर तुम प्रणाली कार्यात्मक परीक्षण, एकीकरण परीक्षण, स्वीकृति परीक्षण है, आदि

मैं जानना चाहता हूँ कि यह एक बिट अपनी ओर से पंडिताऊ है? या यूनिट परीक्षण और यूनिट परीक्षण का जिक्र करते समय आप क्या सोचते हैं?

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

+0

मुझे नहीं लगता कि यह पैडेंटिक है: सॉफ़्टवेयर-इंजीनियरिंग परिप्रेक्ष्य से, प्रत्येक प्रकार का परीक्षण अलग होता है (और अधिकांश अलग होते हैं)। –

उत्तर

4

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

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

इस तरह के पैटर्न को लागू करने में आपकी सहायता के लिए बाजार पर कई तृतीय पक्ष टूल हैं। मैंने सुना है कि "राइनो-मॉक" या ऐसा कुछ कहा जाता है ...

संपादित करें: रोब वेल्स। @Charles। इसके लिए धन्यवाद। मैं परीक्षण के तहत एक को छोड़कर अन्य वर्गों का उपयोग करके पूरी तरह से प्रतिस्थापित करने के लिए नकली वस्तुओं का उपयोग करना भूल गया था।

  • वे त्रुटियों शामिल वर्गों द्वारा लौटाए जाने अनुकरण करने के लिए इस्तेमाल किया जा सकता:

    अन्य बातों मैं तुम्हें नकली वस्तुओं का उल्लेख के बाद याद रख लिया है के एक जोड़े हैं।

  • परीक्षण के तहत कक्षा में अपवाद हैंडलिंग की जांच के लिए विशिष्ट अपवादों को बढ़ाने के लिए उनका उपयोग किया जा सकता है।
  • उनका उपयोग उन वस्तुओं को अनुकरण करने के लिए किया जा सकता है जहां सेटअप लागत अधिक है, उदा। एक बड़ा एसक्यूएल डीबी बैक एंड।
  • इनकमिंग अनुरोध की सामग्री को सत्यापित करने के लिए उनका उपयोग किया जा सकता है।

अधिक जानकारी के लिए, मार्टिन फाउलर की कागज "Mocks Aren't Stubs" कहा जाता है पर एक नजर है और व्यावहारिक प्रोग्रामर्स के लेख "Mock Objects"

10

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

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

3

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

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

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

+0

तकनीक जिसे आप पहले अनुच्छेद में संदर्भित करते हैं वह टीडीडी है: टेस्ट संचालित विकास। – Elie

+0

हां, बिल्कुल - धन्यवाद। – JasonMichael

2

Wikipedia यह सुझाव देगा कि इकाई परीक्षण कोड की सबसे छोटी राशि का परीक्षण करने के बारे में है जो ओओ प्रोग्रामिंग के मामले में कक्षा पर एक विधि होगी।

कुछ यूनिट परीक्षणों से उनका क्या मतलब है इसका एक सामान्य शब्द हो सकता है, जहां कुछ यूनिट परीक्षण के रूप में कुछ एकीकरण परीक्षणों के बारे में सोच सकते हैं जहां इकाई घटकों का मिश्रण है।

1

यह लगभग What is a 'Unit'? "प्रश्न का दोहराव है।

"यूनिट" को लचीला रूप से परिभाषित किया जा सकता है। यदि उनके दस्तावेज़ में "इकाई" की परिभाषा नहीं है, तो आपको इसे स्पष्ट करने की आवश्यकता होगी।

ऐसा हो सकता है कि वे इकाई के कोड की एक बड़ी असेंबली के रूप में सोचें। जो सबसे वांछनीय परिभाषा नहीं है।

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

यूनिट संदर्भ पर निर्भर करता है। एक व्यक्तिगत डेवलपर के लिए, इकाई कक्षा होना चाहिए। कभी-कभी, इसका मतलब मॉड्यूल या पैकेज भी होगा।

हालांकि, एक टीम के लिए, उनकी इकाई एक पैकेज या एक पूर्ण आवेदन हो सकती है।

0

इससे कोई फर्क नहीं पड़ता कि हम क्या सोचते हैं? यहां समस्या यह है कि वे दस्तावेज़ में उपयोग की जाने वाली शर्तों के साथ आपकी दुखी हैं। आप उनके साथ चर्चा क्यों नहीं करते?

+0

@ टिम, मैं उनके क्यूए दस्तावेज़ पर अपनी प्रतिक्रिया के साथ होगा। चीयर्स, रोब –

4

कोई कारण नहीं है कि इकाई परीक्षण कई वर्गों या यहां तक ​​कि submodules तक नहीं फैल सकता है, जब तक कि परीक्षण केवल एक सतत व्यापार संचालन का इलाज कर रहा हो। "गणना गणना" के बारे में सोचें, एक बीओ की एक विधि जो किसी व्यक्ति के वेतन की गणना करने के लिए विभिन्न रणनीतियों का उपयोग करती है। यह मेरी राय में एक इकाई परीक्षण है।

3

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

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

यूनिट टेस्ट फ्रेमवर्क का उपयोग करने का संचयी प्रभाव यह है कि कोड का परीक्षण स्वचालित है। सही ढंग से अपनाया गया डेवलपर्स पूर्ण कोड & ए प्रक्रिया के माध्यम से कोड कोड में बेहतर परिवर्तन का मूल्यांकन कर सकता है। क्यू & एक प्रक्रिया के रूप में यह अपना समय अधिक उत्पादक बनाता है क्योंकि विकास से बाहर आने वाले कोड की गुणवत्ता अधिक होनी चाहिए।

समझें कि यह सभी गुणवत्ता वाले मुद्दों का उत्तर नहीं है, यह आपके द्वारा उपयोग किए जाने वाले अन्य उपयोगी टूल है।

2

के हिस्से के रूप में http://en.wikipedia.org/wiki/Software_testing का पारंपरिक दृश्य है। लेकिन मुझे एक चुस्त इकाई परीक्षण का विचार पसंद है: एक परीक्षण एक चुस्त इकाई परीक्षण है यदि यह पर्याप्त तेज़ है ताकि प्रोग्रामर हमेशा इसे चलाएं।

0

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

2

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

0

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

0

यूनिट परीक्षण: एक इकाई या सॉफ़्टवेयर के सबसे छोटे टुकड़े के लिए किया गया परीक्षण। यह सत्यापित करने के लिए किया गया है कि क्या यह इसके कार्यात्मक विनिर्देश या इसकी इच्छित डिजाइन संरचना को संतुष्ट करता है।

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