आप अपने परीक्षण उपकरण का उल्लेख नहीं करते हैं। कई में "गठबंधन" कार्य होते हैं जो आपको कई रन या सूट के परिणामों को एकत्रित करते हैं। यदि आप एक समग्र कवरेज मीट्रिक चाहते हैं, तो अपने कवरेज टूल में संयोजन सुविधा का पता लगाएं।
अब, क्या हम कमरे में हाथी के बारे में बात कर सकते हैं?
कोई चम्मच नहीं है। और कोई "कुल कवरेज प्रतिशत" नहीं है। कम से कम, कोई सरल नहीं।
कवरेज प्रतिशत एक आसानी से समझ में आने वाला मीट्रिक है, जो परीक्षण के दायरे के दायरे, गहराई और सीमा को समझने में मदद करने के लिए प्रस्तुत किया गया है। लेकिन किसी भी साधारण बेंचमार्क की तरह, इस मूल्य पर तय किए गए लक्ष्य को पूरा करना बहुत आसान है, क्योंकि "पूर्ण परीक्षण" के जादुई ताबीज।
मान लीजिए कि आपने "100% परीक्षण कवरेज" की महिमा हासिल की है। वाह! लेकिन इसका क्या मतलब है? 100% कोड लाइनों का परीक्षण किया जाता है, है ना? फिर इस लाइन का क्या?
launch_missile = launch_authorized and launch_cmd_given else previous_launch_status
उस रेखा को "कवर करने" का अर्थ कुछ है - लेकिन पूरी तरह से नहीं, क्योंकि इसमें कई तरह की स्थितियां हैं True
या False
कुछ संभावनाएं हैं, लेकिन यह संभावना नहीं है कि आपने उन सभी स्थितियों के संयोजन का परीक्षण किया हो। भले ही वह रेखा एक दर्जन बार कवर की गई हो, यदि कोई एक स्थिति अपेक्षाकृत असामान्य है, तो आप अभ्यास में आने वाले सभी वास्तविक परिणामों का परीक्षण करने के करीब नहीं आए हैं। उस स्पष्ट करने के लिए, एक अधिक सिंथेटिक उदाहरण:
engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003
कितनी बार आपको उस लाइन को वास्तव में पूरी तरह से परीक्षण करने के लिए कवर करना होगा? कार्यक्रम में अन्य सभी चर के साथ संयोजन में इसे परीक्षण करने के लिए आपको इसे कितनी बार कवर करना होगा (अपनी खुद की, संभवतः इसी तरह की दुर्लभ) संभावनाओं के साथ?
मैं यह नहीं कह रहा हूं कि कवरेज मेट्रिक्स बेकार हैं। वे वास्तव में महान हैं । वे प्रमुख मुद्दों में से एक पर ध्यान केंद्रित करते हैं: मेरे सॉफ्टवेयर सिस्टम का परीक्षण बड़े पैमाने पर कैसे किया जाता है? वे "हमारे पास कुछ परीक्षण हैं" से "हम पूरी तरह से परीक्षण कर चुके हैं" को स्थानांतरित करने में मदद करते हैं।
लेकिन जब आप "संयुक्त स्कोर" पर काम कर रहे होते हैं, तो वास्तविकता यह है कि आपका स्कोर आमतौर पर "स्टेटस कवरेज" के बजाय "स्थिति," "विधेय," या "पथ" कवरेज के लिए होगा । तो जो भी आपके समग्र स्कोर आपको देते हैं, यह संभावना नहीं है कि यह आपको एक सच्ची तस्वीर दे रहा है कि आपके कार्यक्रम संभावित राज्यों और राज्य संयोजनों का कितना परीक्षण किया जा रहा है। जब आप अपना कवरेज प्रतिशत बढ़ाने पर काम कर रहे हों, तो अपने विस्तृत कवरेज को मापने पर भी विचार करें। यह आपको और अधिक यथार्थवादी देगा - और लगभग हमेशा, एक अधिक साहसी - परीक्षा विस्तार का दृश्य।