सामान्य रूप में
आपके निरंतर एकीकरण पाइपलाइन में आश्वस्त होने के लिए आपके पास पर्याप्त स्वचालित परीक्षण कब है?
उत्तर शायद स्पष्ट हो जाता है यदि आप इस बारे में सोचते हैं कि आप किस बारे में आश्वस्त होना चाहते हैं। अंततः, यह 1-1 मैप करता है; प्रत्येक परीक्षण आपको एक चीज़ के बारे में आश्वस्त करता है जो वह परीक्षण करता है:
- यूनिट परीक्षण आपको विश्वास दिलाता है कि एक वर्ग (या मॉड्यूल) वह करता है जिसके लिए उसका परीक्षण किया जाता है।
- एकीकरण परीक्षण आपको विश्वास दिलाता है कि जिस तरह से परीक्षण किया गया है उसके लिए कई इकाइयां एक साथ काम करती हैं।
- एंड-टू-एंड परीक्षण आपको यह विश्वास दिलाता है कि संपूर्ण अनुप्रयोग एक निश्चित चीज़ करता है, जिस तरह से परीक्षण में वर्णित है।
जिस तरह से आपने अपना प्रश्न तैयार किया है, आप शायद अभी एक बड़ी तस्वीर वाली व्यावसायिक समझदारी के बारे में सोच रहे हैं, उदाहरण के लिए:
मैं आश्वस्त होना चाहता हूं कि मेरा ऐप एक्स कर सकता है ।
तो आप एक एंड-टू-एंड टेस्ट लिखते हैं जो एक्स और चेक करने की कोशिश करता है कि क्या यह सही ढंग से करता है।
अधिक ठोस
यह सब बहुत आत्म-संदर्भित है, लेकिन ऐसा इसलिए है क्योंकि यह नीचे आता है। वहाँ बस यह अधिक नहीं है।
उदाहरण के लिए, कल्पना कीजिए कि आप खाना पकाने की विधि बनाने के लिए एक ऐप लिखें। एक विशेषता यह है कि, यदि आप कई अलग-अलग प्रकार के पनीर को अलग-अलग मात्रा में जोड़ते हैं, तो यह आपको सही तापमान और समय देता है ताकि वे सभी पिघल जाएं।
तो आप अपने लिए एक यूनिट टेस्ट लिख सकते हैं CheeseMeltCalculator
, जहाँ आप इसे 100 ग्राम गौडा और 200 ग्राम एमेंबल चीज़ देते हैं, और फिर आप जाँचते हैं कि तापमान और समय सही है। इसका मतलब है कि अब आप आश्वस्त हो सकते हैं कि CheeseMeltCalculator
100 ग्राम गौडा और 200 ग्राम पनीर के लिए काम करता है। अब यदि आप 200 ग्राम के बजाय 300 ग्राम गौडा के साथ इस परीक्षण को दोहराते हैं, तो आप बहुत आश्वस्त हो सकते हैं कि यह विभिन्न मूल्यों के लिए सही तरीके से काम करता है। आप के लिए परीक्षण जोड़ सकते हैं 0
, -1
और int.MaxValue
Gouda के जी आश्वस्त हो सकता है कि कोड अजीब यात्रा नहीं करता है (या सही तरीके से ऊपर की ओर यात्राएं) अजीब इनपुट के लिए।
CheeseMeltCalculator
संपूर्ण खाद्य तापमान और समय गणना प्रक्रिया में सही तरीके से शामिल किया गया है, यह जांचने के लिए आप एक एकीकरण परीक्षण लिख सकते हैं । यदि यह गलत हो जाता है, लेकिन CheeseMeltCalculator
ऊपर दिए गए परीक्षण ठीक हैं, तो आप आश्वस्त हो सकते हैं कि बग अन्य कैलकुलेटर में है या अलग-अलग कैलकुलेटर से डेटा संयुक्त है।
और अंत में आप एक पूरी रेसिपी बनाने के लिए एंड-टू-एंड टेस्ट लिख सकते हैं, और आपके द्वारा जांची जाने वाली चीजों में से एक परिणाम तापमान और समय है। यदि परीक्षणों के पिछले 2 स्तर ठीक हैं, लेकिन यह इसके लिए गलत है, तो आप फिर से आश्वस्त हो सकते हैं कि वे हिस्से सही हैं और गलती कुछ इस बारे में है कि आवेदन में तापमान गणना कैसे एकीकृत है। उदाहरण के लिए, शायद उपयोगकर्ता इनपुट को सही तरीके से स्थानांतरित नहीं किया गया है।
और अंत में , यदि वे सभी परीक्षण ठीक हैं, तो आप आश्वस्त हो सकते हैं कि " यदि आप कई अलग-अलग प्रकार के पनीर को अलग-अलग मात्रा में जोड़ते हैं, तो यह आपको सही तापमान और समय देता है ताकि वे सभी पिघल जाएं "
कहानी संक्षिप्त में
मुद्दा यह है कि आपके पास एक परीक्षण नहीं हो सकता है "यह सही ढंग से काम करता है"। आप केवल "अगर मैं एक्स, वाई होता है" का परीक्षण कर सकता हूं।
हालांकि, यह बिल्कुल सामान है जो परियोजना के लिए तकनीकी विशिष्टताओं में होना चाहिए। एक कथन जैसे " यदि आप कई अलग-अलग प्रकार के पनीर को अलग-अलग मात्रा में जोड़ते हैं, तो यह आपको सही तापमान और समय देता है ताकि वे पिघल जाएं " न केवल ग्राहक को यह स्पष्ट उम्मीदें देता है कि तैयार उत्पाद क्या करेगा, बल्कि इसे चालू भी किया जा सकता है। स्वचालित परीक्षणों में।
अतिरिक्त जानकारी
उपयोगकर्ता रिचर्ड ने इस जानकारी को एक संपादन में जोड़ा:
मार्टिन फावलर ने अपनी वेबसाइट पर सबसे आम रणनीतियों के बारे में बहुत अच्छा सारांश दिया है: https://martinfowler.com/articles/microservice-testing/
मैं इसे दूर नहीं करना चाहता, लेकिन मैं यह कहना चाहता हूं: इस उत्तर की तुलना में, यह "सारांश" नहीं है, बल्कि अच्छे ग्राफिक्स और सब कुछ के साथ बहुत अधिक गहराई से स्पष्टीकरण है।
मेरी सलाह होगी: यदि मेरा जवाब पढ़ने के बाद सब कुछ समझ में आता है, तो आप कर रहे हैं। यदि चीजें अभी भी अस्पष्ट लगती हैं, तो थोड़ा समय अलग रखें और लिंक किए गए लेख के माध्यम से पढ़ें।