मैं निम्नलिखित प्रणाली के साथ काम कर रहा हूं:
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
हमारे पास हाल ही में एक मुद्दा था जहां मैंने उस लाइब्रेरी के संस्करण को अपडेट किया था जिसका मैं उपयोग कर रहा था, जो कि अन्य चीजों के अलावा, टाइमस्टैम्प (जो कि तीसरे पक्ष के पुस्तकालय के रूप में वापस लौटता है long
) का कारण बनता है, जिसे युग के बाद के युग से नैनोसेकंड के बाद मिलीसेकंड से बदला जा सकता है।
समस्या:
यदि मैं तीसरे पक्ष के पुस्तकालय की वस्तुओं का परीक्षण करने वाले परीक्षण लिखता हूं, तो यदि मैं तीसरे पक्ष के पुस्तकालय की वस्तुओं के बारे में कोई गलती करता हूं तो मेरा परीक्षण गलत होगा । उदाहरण के लिए, मुझे महसूस नहीं हुआ कि टाइमस्टैम्प ने सटीकता को बदल दिया, जिसके परिणामस्वरूप इकाई परीक्षण में बदलाव की आवश्यकता थी, क्योंकि मेरे नकली ने गलत डेटा वापस कर दिया। यह पुस्तकालय में एक बग नहीं है , यह इसलिए हुआ क्योंकि मैं प्रलेखन में कुछ चूक गया था।
समस्या यह है, मैं इन डेटा संरचनाओं में निहित डेटा के बारे में सुनिश्चित नहीं हो सकता क्योंकि मैं वास्तविक डेटा फ़ीड के बिना वास्तविक उत्पन्न नहीं कर सकता। ये ऑब्जेक्ट बड़े और जटिल हैं और उनमें डेटा के बहुत सारे टुकड़े हैं। तीसरे पक्ष के पुस्तकालय के लिए प्रलेखन खराब है।
प्रश्न:
मैं इस व्यवहार का परीक्षण करने के लिए अपने परीक्षण कैसे सेट कर सकता हूं? मुझे यकीन नहीं है कि मैं इस मुद्दे को एक इकाई परीक्षण में हल कर सकता हूं, क्योंकि परीक्षण स्वयं आसानी से गलत हो सकता है। इसके अतिरिक्त, एकीकृत प्रणाली बड़ी और जटिल है और कुछ को याद करना आसान है। उदाहरण के लिए, ऊपर की स्थिति में, मैंने कई स्थानों पर टाइमस्टैम्प हैंडलिंग को सही ढंग से समायोजित किया था, लेकिन मैंने उनमें से एक को याद किया। सिस्टम मेरे एकीकरण परीक्षण में ज्यादातर सही चीजें कर रहा था, लेकिन जब मैंने इसे उत्पादन के लिए तैनात किया (जिसमें बहुत अधिक डेटा है), तो समस्या स्पष्ट हो गई।
मेरे पास अभी मेरे एकीकरण परीक्षणों के लिए एक प्रक्रिया नहीं है। परीक्षण अनिवार्य रूप से है: इकाई परीक्षणों को अच्छा रखने की कोशिश करें, जब चीजें टूटती हैं तो अधिक परीक्षण जोड़ें, फिर मेरे परीक्षण सर्वर पर तैनात करें और सुनिश्चित करें कि चीजें समझदार हैं, फिर उत्पादन में तैनात करें। इस टाइमस्टैम्प समस्या ने यूनिट परीक्षणों को पारित कर दिया क्योंकि मोक्स को गलत बनाया गया था, फिर इसने एकीकरण परीक्षण पास किया क्योंकि इससे कोई तात्कालिक, स्पष्ट समस्या पैदा नहीं हुई। मेरे पास क्यूए विभाग नहीं है।
Timestamp
वर्ग (किसी भी प्रतिनिधित्व वे चाहते हैं) और प्रदान नामित विधियों ( .seconds()
, .milliseconds()
, .microseconds()
, .nanoseconds()
) और पाठ्यक्रम नामित निर्माताओं की। तब कोई मुद्दा नहीं रहा होगा।