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