ETL और रिपोर्टिंग परियोजनाओं के लिए आप TDD तरीकों का परीक्षण कैसे करते हैं?


12

ईटीएल परियोजनाएं ईटीएल (एक्सट्रैक्ट - ट्रांसफॉर्म - लोड) उपकरण जैसे एसएसआईएस, पावरकेंटर आदि का उपयोग करके बनाई गई परियोजनाएं हैं

इनमें आमतौर पर बाहरी स्रोत से डेटा पढ़ना, इसे स्टेजिंग डेटाबेस में लोड करना, कुछ परिवर्तन करना और इसे अंतिम डेटाबेस में लोड करना शामिल होता है

एक सरल उदाहरण SSIS का उपयोग करके स्कूली छात्रों द्वारा प्रदान की गई एक्सेल फाइलों को पढ़ने और उन्हें एक डेटाबेस में लोड करने के लिए SSIS का उपयोग करना होगा। फिर प्रत्येक छात्र के ग्रेड की गणना करने और उस डेटा को डेटा मार्ट वेयरहाउस में लोड करने के लिए संग्रहीत कार्यविधियाँ या अधिक SSIS पैकेज लिखें

फिर आप आउटपुट उत्पन्न करने के लिए मार्ट के शीर्ष पर संग्रहीत कार्यविधियों का निर्माण करते हैं जो विज़ुअलाइज़ेशन उत्पन्न करने के लिए रिपोर्टिंग टूल (SSRS \ Excel \ etc) द्वारा उपयोग किया जाता है।

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

उदाहरण:

स्प्रिंट 1: छात्र तालिका में नाम, आयु, ग्रेड शामिल हैं

आप इस तालिका के लिए परीक्षण डेटा, और उस पर आधारित इकाई परीक्षण बनाते हैं

स्प्रिंट 2: तालिका में एक लिंग फ़ील्ड जोड़ा जाता है।

अब, यदि आप लिंग विशेषता को दर्शाने के लिए छात्र के क्षेत्र में डेटा को ताज़ा करते हैं, तो डेटा बदलने के बाद से परीक्षण मामलों को अमान्य कर दिया जाता है। और यदि आप नहीं करते हैं, तो आप परीक्षण मामलों को बना सकते हैं जिनके लिए लिंग स्तंभ की आवश्यकता होती है


यदि आप पहले से मौजूद टूल का परीक्षण कर रहे हैं तो यह TDD नहीं है। बस साधारण परीक्षण लिखें।
रॉबर्ट हार्वे

@RobertHarvey ETL टूल वास्तव में .Net फ्रेमवर्क से अलग नहीं है जब C # कोड इसे लिखना है? तो, टूल उसी तरह से मौजूद है। नेट फ्रेमवर्क मौजूद है, फिर भी आप सी # में TDD कर सकते हैं
user87166

मैं फ्रेमवर्क विधियों का परीक्षण नहीं करूंगा। मुझे लगता है कि वे पहले से ही काम करते हैं। यदि आप ETL उपकरण के लिए कॉन्फ़िगरेशन का परीक्षण कर रहे हैं, तो आपको ऐसा करने के लिए ETL उपकरण में तर्क को फिर से बनाने की आवश्यकता नहीं है; बस उपकरण का उपयोग करें।
रॉबर्ट हार्वे

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

2
"चूंकि आधार डेटा में उम्र बदल गई है" - इनपुट के रूप में स्थिर परीक्षण डेटा प्रदान करने में क्या मुश्किल है ? यदि समय पर निर्भर गणना शामिल है, तो संदर्भ टाइमर को बाहर मॉक करें।
डॉक्टर ब्राउन

जवाबों:


2

मैंने अतीत में जो किया है वह है एक्सेपटेंस टेस्ट ड्रिवेन डेवलपमेंट । ETL कोड अक्सर विभिन्न चरणों / भाषाओं और प्रौद्योगिकियों और कसकर युग्मित वितरित किया जाता है। अधिकांश ईटीएल प्रक्रिया पाइपलाइन में परिवर्तनों के अनुक्रम पर निर्भर है।

केवल ईटीएल में यूनिट टेस्ट का उपयोग करने में जोखिम यह है कि यह एकीकरण को कवर नहीं करेगा। परिवर्तनों का अनुक्रमण कई ETL में वास्तविक परिवर्तनों के बराबर भाग है। अगर मैं एक स्वचालित परीक्षण सूट बनाने पर संसाधन खर्च कर रहा हूं तो मुझे यकीन है कि यह अनुक्रमण को भी कवर करेगा।

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


0

ETL TDD के साथ किया जा सकता है और अधिकांश परियोजनाओं के समान ही परीक्षण करता है, अर्थात

एक परीक्षण लिखें जो विफल रहता है (लाल) विफलता को ठीक करें (हरा) कोड को छिद्रित करें और बनाए रखने योग्य (रिफ्लेक्टर) बनाएं

ईटीएल के लिए ऐसा हो सकता है:

  • 1 रिकॉर्ड लोड करने के लिए एक स्क्रिप्ट लिखें
  • विफल (कोई डेटा स्रोत परिभाषित नहीं)
  • स्रोत को परिभाषित करें [हरा]
  • रिफ्लेक्टर की जरूरत नहीं
  • केवल 1 फ़ील्ड के साथ 1 रिकॉर्ड लोड करने के लिए एक परीक्षण लिखें
  • विफल (उस फ़ील्ड के लिए कोई कोड नहीं लिखा गया)
  • उस क्षेत्र के लिए कोड विवरण परिभाषित करें
  • refactor
  • मान्य मानों को देखने में विफल परीक्षणों को परिभाषित करें [लाल]
  • आदि

पहले 8 चरणों का टीडीडी से कोई लेना-देना नहीं है, क्योंकि वे किसी भी परीक्षा को पीछे नहीं छोड़ते हैं। शेष स्पष्ट नहीं है।
बुलट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.