2010-07-23 18 views
25

मैंने ध्यान दिया है कि भले ही मैं जब मैं तरीकों यहाँ वर्णित का उपयोग कर परीक्षण का पता लगाने हमारे पायथन कोड, में doctests की एक बहुत कुछ है:इकाई परीक्षण में कोड कवरेज सुनिश्चित करना?

traceit

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

उत्तर

28

coverage.py एक बहुत ही आसान टूल है। अन्य चीजों के अलावा, यह branch coverage प्रदान करता है।

+11

यह उत्तर अधिक फायदेमंद होगा यदि आपने 'cover.py' का उपयोग करने का संक्षिप्त उदाहरण प्रदान किया है। – SimplyKnownAsG

+6

@SimplyKnownAsG लिंक किए गए पृष्ठ में त्वरित प्रारंभ अनुभाग फ्रंट और सेंटर है, और नमूना उपयोग भी शामिल है। कॉपी-एंड-पेस्ट प्रलेखन की बजाय नए संस्करणों के रूप में बदलने के अधीन है, मुझे लगता है कि बस लिंक करना बेहतर है। –

+1

'cover.py' का उपयोग कैसे करें: https://github.com/audreyr/how-to/blob/master/python/use_coverage_with_unittest.rst – dm295

18

क्या आपके पास अपने परीक्षण मामलों के साथ 100% कोड कवरेज प्राप्त करने के बारे में प्रबंधन से एक जनादेश है? यदि नहीं, तो क्या आपको लगता है कि कोड की हर पंक्ति को छूना आपके कोड में बग खोजने का सबसे प्रभावी तरीका है? मान लीजिए कि आपके पास अनंत समय और लोगों के संसाधन नहीं हैं, आपको शायद उन सभी हिस्सों पर जोर देने के साथ अपने सभी गैर-तुच्छ कोडों का उचित परीक्षण करने पर ध्यान देना चाहिए जो डेवलपर्स को लिखने या त्रुटि प्रवण होने के लिए मुश्किल थे।

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

+7

यह एक उत्कृष्ट टिप्पणी है। मेरी स्थिति में, हमारे पास वैज्ञानिक हैं, प्रोग्रामर नहीं, पायथन कोड लिख रहे हैं। नतीजतन, भले ही वैज्ञानिक बहुत स्मार्ट हैं, कोड बहुत खराब वास्तुकार है। इसका मतलब है कि अंतिम एकीकरण और परीक्षण एक दुःस्वप्न है, और हमें इस चरण के दौरान गंभीर समस्याओं को उजागर करने के लिए बहुत मेहनत करनी है। मैं उन्हें प्रत्येक कोड के लिए जिम्मेदार कोड के लिए बेहतर परीक्षण मामलों को लिखने की कोशिश कर रहा हूं और मैं कोड कवरेज को एकीकृत करने के तरीके के रूप में कोड कवरेज का उपयोग करने की योजना बना रहा हूं। मैं समझ सकता हूं कि 100% कोड को स्पर्श करने की आवश्यकता नहीं है, लेकिन इससे मदद मिलेगी। – reckoner

+0

100% कवरेज होने के पर्याप्त परीक्षणों की कोई गारंटी नहीं है, लेकिन यह आमतौर पर पर्याप्त परीक्षण नहीं होने का संकेत है। आइए यह भी न भूलें कि कवरेज मॉड्यूल '# प्रज्ञा: कोई कवर' और '# प्रगमा: कोई शाखा' जैसी टिप्पणियों की अनुमति नहीं देता है। –

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