सर्वोत्तम प्रथाओं का हमेशा एक उद्देश्य होता है, उनके पीछे एक कारण। अपने डिजाइन में इन कारणों पर विचार करना हमेशा एक अच्छा विचार है - खासकर जब आप यह तय करने की कोशिश कर रहे हैं कि इन सर्वोत्तम प्रथाओं का पालन कैसे और कितना कठिन है।
इस मामले में, प्रत्येक परीक्षण को एक ही चीज़ बनाने के पीछे मुख्य तर्क यह है कि यदि पहली चीज़ विफल हो जाती है, तो दूसरा परीक्षण नहीं किया जाएगा। चूँकि बहुत से राय बनाने वाले हर चीज़ को सबसे छोटे बिट्स को तोड़ने में और हर बिट को जितना संभव हो उतना अधिक लपेटने में योग्यता पाते हैं, इसने इस विचार को जन्म दिया कि हर परीक्षा में एक ही जोर होना चाहिए।
आँख बंद करके इसका पालन न करें। यहां तक कि अगर प्रत्येक परीक्षण को एक चीज का परीक्षण करना चाहिए, तब भी आपको यह सोचकर कुछ विचार करना चाहिए कि प्रत्येक "चीज" कितनी बड़ी या छोटी होनी चाहिए, और ऐसा करने के लिए आपको यह ध्यान रखना चाहिए कि आप प्रत्येक परीक्षा को एक चीज का परीक्षण क्यों करना चाहते हैं - यह सुनिश्चित करने के लिए पहली बात में एक बग दूसरी चीज को बेकार नहीं छोड़ रहा है।
तो, आपको अपने आप से पूछने की ज़रूरत है - "क्या मुझे वास्तव में इस गारंटी की आवश्यकता है?"
मान लीजिए कि पहले परीक्षण मामले में एक बग है - HTTP प्रतिक्रिया कोड नहीं है 200
। इसलिए आप कोड को हैक करना शुरू करते हैं, यह पता करें कि आपके पास जो प्रतिक्रिया कोड होना चाहिए वह क्यों नहीं मिला, और समस्या को ठीक करें। और अब क्या है?
- यदि आप मैन्युअल रूप से परीक्षण को फिर से चलाते हैं, तो यह सत्यापित करने के लिए कि आपके फिक्स ने समस्या को हल किया है, आपको पहली विफलता द्वारा छिपी किसी अन्य समस्या में चलना चाहिए।
- यदि आप इसे मैन्युअल रूप से नहीं चलाते हैं (हो सकता है क्योंकि इसमें बहुत लंबा समय लगता है?), और बस अपने फिक्स को धक्का देकर स्वचालित परीक्षण सर्वर के लिए सब कुछ चलाने के लिए प्रतीक्षा करें, तो आप अलग-अलग परीक्षणों में अलग-अलग दावे करना चाहते हैं। इस मामले में चक्र बहुत लंबे हैं, इसलिए प्रत्येक चक्र में कई बगों को खोजने का प्रयास करना सार्थक है।
विचार करने के लिए कुछ और चीजें हैं:
आश्रितों की निर्भरता
मुझे पता है कि आपके द्वारा वर्णित परीक्षण केवल एक उदाहरण हैं, और आपके वास्तविक परीक्षण संभवतः अधिक जटिल हैं - इसलिए मैं जो कहने जा रहा हूं वह वास्तविक परीक्षणों में उतनी ताकत के साथ मान्य नहीं हो सकता है, लेकिन यह अभी भी कुछ हद तक प्रभावी हो सकता है इसलिए आप इस पर विचार करना चाह सकते हैं।
यदि आपके पास REST सेवा (या कोई अन्य HTTP प्रोटोकॉल) है जो JSON प्रारूप में प्रतिक्रियाएं देता है, तो आप आमतौर पर एक साधारण ग्राहक वर्ग लिखते हैं जो आपको नियमित तरीकों की तरह नियमित तरीकों की तरह REST विधियों का उपयोग करने देता है। यह मानते हुए कि क्लाइंट के पास यह सुनिश्चित करने के लिए अलग-अलग परीक्षण हैं कि मैं काम कर रहा हूं, पहले 3 ऐसर्ट्स को डिसाइड किया और केवल 4 को ही रखा!
क्यों?
- पहला जोर निरर्थक है - क्लाइंट क्लास को एक अपवाद फेंक देना चाहिए अगर HTTP प्रतिक्रिया कोड 200 नहीं है।
- दूसरा मुखर निरर्थक है - यदि प्रतिक्रिया खाली है, तो परिणाम वस्तु शून्य होगी या खाली वस्तु का कुछ अन्य प्रतिनिधित्व होगा, और आपके पास कुंजी एक्स लगाने के लिए कहीं भी नहीं होगा।
- तीसरा जोर बेमानी है - यदि JSON अमान्य है, तो जब आप इसे पार्स करने का प्रयास करेंगे तो आपको एक अपवाद मिलेगा।
इसलिए आपको इन सभी परीक्षणों को चलाने की आवश्यकता नहीं है - बस चौथा परीक्षण चलाएं, और यदि कोई भी पहला परीक्षण करने की कोशिश करता है, तो यह पता लगाने की कोशिश करता है कि पहले तीन में से कोई भी बग विफल हो जाएगा।
आप रिपोर्ट कैसे प्राप्त करना चाहते हैं?
मान लीजिए कि आपको परीक्षण सर्वर से ईमेल नहीं मिलते हैं, लेकिन इसके बजाय क्यूए विभाग परीक्षण चलाता है और आपको असफल परीक्षणों के बारे में सूचित करता है।
क्यूए से जैक आपके दरवाजे पर दस्तक देता है। उनका कहना है कि पहला परीक्षण तरीका विफल रहा, और REST पद्धति ने खराब प्रतिक्रिया कोड दिया। आप उसे धन्यवाद देते हैं, और मूल कारण की तलाश शुरू करते हैं।
उसके बाद QA से जेन आता है, और कहता है कि तीसरा परीक्षण तरीका विफल हो गया - REST पद्धति ने प्रतिक्रिया निकाय में एक वैध JSON नहीं लौटाया। आप उसे बताएं कि आप पहले से ही उस पद्धति को देख रहे हैं, और आप एक ही बात मानते हैं कि यह एक बुरा निकास कोड वापस करने का कारण बना, यह भी ऐसा कारण है जो एक वैध JSON नहीं है, और अपवाद स्टैक ट्रेस की तरह दिखता है।
आप काम पर वापस लौट जाते हैं, लेकिन फिर क्यूए से जिम आता है, यह कहते हुए कि चौथी परीक्षा विधि विफल हो गई और प्रतिक्रिया में कोई एक्स कुंजी नहीं है ...
आप इस कारण को भी नहीं देख सकते क्योंकि जब आपके पास कंप्यूटर स्क्रीन नहीं है तो कोड को देखना कठिन है। अगर जिम जल्दी होता तो वह समय पर चकमा दे सकता था ...
यदि आप इसके बजाय सिर्फ यह सूचित नहीं किया जाएगा - परीक्षण सर्वर से ईमेल खारिज करने के लिए आसान कर रहे हैं, लेकिन अभी भी एक बार है कि कुछ परीक्षा पद्धति, और प्रासंगिक परीक्षण लॉग अपने आप को देखो के साथ गलत क्या है?