2009-12-08 38 views
8

मैं यूनिट परीक्षण के लिए नया हूं इसलिए मैं उन लोगों की राय प्राप्त करना चाहता हूं जो थोड़ा अधिक चिपकने वाले हैं।यूनिट परीक्षण?

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

तो मुझे लगता है कि मेरा असली सवाल यह है कि, मेरे यूनिट परीक्षण के कितने, अगर कोई है, तो इंटरफ़ेस (जिस वेबसाइट पर मैं स्क्रैपिंग कर रहा हूं) के बारे में चिंता करना चाहिए या उससे निपटना चाहिए?

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

तो क्या मैं इन-कोड परीक्षण और अपवाद हैंडलिंग पर ध्यान केंद्रित करता हूं? क्या इसका मतलब रेत में एक रेखा खींचना है और यूनिट परीक्षणों से इस प्रकार के परीक्षण को पूरी तरह से बाहर करना है?

धन्यवाद

+1

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

+0

वैसे मैं सकारात्मक रूप से निश्चित नहीं हूं, लेकिन उदाहरण के लिए मैंने शायद एक विधि को GoogleSearchResult() प्राप्त किया था और उस विधि के लिए मैं एक परीक्षण और दावा कर सकता था। और नहीं, मैं Google SERP को स्क्रैप नहीं कर रहा हूं।:) – Chris

उत्तर

6

यूनिट परीक्षण हमेशा दोहराने योग्य ज्ञात परिणामों के लिए डिज़ाइन किया जाना चाहिए। (आप एक नकली वस्तु का उपयोग कर सकते यह प्रतिनिधित्व करने के लिए)

इसलिए, इकाई परीक्षण एक स्क्रीन-स्क्रेपर के लिए, आप परीक्षण HTML का एक ज्ञात सेट के खिलाफ लेखन किया जाना चाहिए

बात आप के बारे में बात कर रहे हैं नहीं करता है की तरह वास्तव में मेरे लिए इकाई परीक्षण के लिए एक परिदृश्य की तरह लग रहा है - यदि आप यह सुनिश्चित करना चाहते हैं कि आपका कोड यथासंभव मजबूत रूप से चलता है, तो यह है कि, जैसा कि आप कहते हैं, इन-कोड परीक्षण और अपवाद हैंडलिंग के बारे में।

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

+0

हां। मैंने कुछ बहुत समान किया। एचटीएमएल प्राप्त करें जो विभिन्न मामलों से मेल खाता है (सेक्शन उपस्थित, सेक्शन लापता, टेबल रिक्त इत्यादि) और उन तारों को अपने पार्सिंग क्लास में खिलाएं (जो आपके वेब डाउनलोडर क्लास से अलग होना चाहिए)। – TrueWill

+0

धन्यवाद मुझे लगता है कि यह वास्तव में इसके साथ मेरे सटीक संघर्ष के लिए बोलता है। और चेतावनी कोड के बारे में सहमत! – Chris

1

मुझे लगता है कि बात यह है कि इकाई परीक्षण यहाँ लिए उपयोगी हो सकता है अगर आप एक बिल्ड सर्वर वे आपको अग्रिम चेतावनी कोड अब काम नहीं करता दे देंगे है। यह साबित करने के लिए आप यूनिट टेस्ट नहीं लिख सकते हैं कि साइट पर एचटीएमएल बदलने पर स्क्रीनक्रैपिंग अभी भी काम करेगी (क्योंकि आप यह नहीं बता सकते कि वे क्या बदलेंगे)।

आप अपने प्रयासों से कुछ उपयोगी लौटने के लिए एक यूनिट परीक्षण लिखने में सक्षम हो सकते हैं।

+0

यह जांचना कि कुछ उपयोगी (और ज्ञात बाधाओं के भीतर आता है) मूल रूप से मुझे दिमाग में था अगर मैं विभिन्न स्क्रैपिंग विधियों में यूनिट परीक्षण लिख रहा था। – Chris

2

आपको जितना संभव हो सके अपने परीक्षणों को अलग करने की कोशिश करनी चाहिए। वास्तविक कोड निष्पादित करने वाले निम्न स्तर के परीक्षणों के साथ डेटा हैंडलिंग का परीक्षण करें (यानी नकली ब्राउज़र के माध्यम से)।

नकली ब्राउज़र में, बस सुनिश्चित करें कि जब आप फ़ॉर्म सबमिट करते हैं, और जब आप लिंक का पालन करते हैं तो सही चीजें होती हैं।

यह जांचने का प्रयास न करें कि लेआउट सही है या नहीं।

+0

मिश्रण में कोई ब्राउज़र नहीं है। बस कमांड लाइन निष्पादन और कर्ल। – Chris

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