5

मेरे पास कोड परीक्षण कोड के साथ कई फ़ाइलें हैं (जो "unittest" वर्ग का उपयोग करती हैं)।लाइव डेटा अखंडता परीक्षण और कोड इकाई परीक्षण कैसे व्यवस्थित करें?

बाद में मुझे पता चला कि डेटाबेस अखंडता का परीक्षण करना अच्छा होगा। मैं इसे एक अलग निर्देशिका पेड़ में डाल दिया। (चाबियों की तरह चीजों में सही प्रारूप होता है, माता-पिता और बच्चे नोड सही ढंग से इंगित कर रहे हैं। इस तरह संपादित करें: यह एक nosql प्रोजेक्ट है, जहां मैं डेटाबेस स्तर पर निर्भर नहीं कर सकता, झूठी रेफरेंसियल अखंडता और ऐसे।)

मैं इसका उपयोग करता हूं अखंडता परीक्षण के लिए एक ही unittest कक्षा।

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

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

आप इसे कैसे संभालेंगे? क्या ऐसे सेटअप के लिए मानक हैं? आपका अनुभव क्या है?

मेरी प्रवृत्ति सब कुछ एक ही फाइल में रखना है, जिसके परिणामस्वरूप उत्पादन परीक्षण पर क्रॉन द्वारा कोड परीक्षण भी निष्पादित किए जाएंगे।

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

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

संपादित 3: मैं यह उल्लेख करना भूल गया कि प्रति रन परीक्षणों का चयन इस मामले में वृक्ष संरचना द्वारा निर्धारित नहीं है। परीक्षण एक मास्टर फ़ाइल में उल्लिखित हैं, इसलिए वर्तमान में मेरे पास 2 मास्टर फाइलें "अखंडता" और "कोड परीक्षण" हैं, और परीक्षण एक ही निर्देशक संरचना में रह सकता है।

शायद अधिक लोग जवाब देंगे। मूल्यवान इनपुट के लिए अब तक धन्यवाद, जो पहले से ही मुझे अंतिम संरचना विकसित करने में मदद कर रहा है!

संपादित 4: मैंने अब और अधिक रिफैक्टरिंग किया है। ऐसा लगता है कि मुझे 2 फाइलें रखना चाहिए, लेकिन थोड़ा संशोधित उद्देश्य के साथ। एक उत्पादन सर्वर पर अनुसूचित निगरानी के लिए लक्षित है। और विकास के लिए एक और। लेकिन दोनों फाइलों में अखंडता परीक्षण या कोड परीक्षण हो सकते हैं। और दोनों फाइलों में ऑपरेशन परीक्षण डेटाबेस (जो परीक्षण के बाद मिटा दिए जाते हैं) पर और स्थायी डेटाबेस पर किया जा सकता है (प्रत्येक के पास स्थायी डेटाबेस, उत्पादन सर्वर और डेवेलपमेंट सर्वर होता है)। और एक महत्वपूर्ण बात: मैं खुद को परीक्षण फ़ाइलों से क्लास फाइलों में बहुत से सामान्य कोड को स्थानांतरित करता हूं। इसलिए कक्षाएं भी योग्यता प्राप्त करती हैं जो केवल परीक्षण के लिए होती हैं।मुझे यह अब तक पसंद है, साफ महसूस करता है। मैं परीक्षण के लिए एक लाइब्रेरी नहीं बना रहा हूं जो कि 2 परीक्षण फ्रंटेंड के बीच साझा किया गया है, यह कोड अब के लिए टेबेट किए जाने वाले ओबेजेक्ट की क्लास फ़ाइल में गया है।

कृपया ध्यान दें कि नीचे दी गई मेरी टिप्पणियां "user89021" के साथ हस्ताक्षरित हैं लेकिन यह मैं, कार्लथोरवाल्ड हूं। मैं इसके बारे में कुछ नहीं कर सकता।

उत्तर

4

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

एक अन्य लाभ यह है कि आपके पास दो निर्माण प्रक्रियाएं (त्वरित और रात) हो सकती हैं जो विभिन्न परीक्षण सूट चलाती हैं।

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

4

उन्हें अलग करने का आपका दृष्टिकोण अच्छा है।

कोड डुप्लिकेशन के बारे में आपकी चिंता 100% मान्य है।

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

फिर यूनिट परीक्षण ड्राइवर और अखंडता परीक्षण चालक से स्वतंत्र रूप से उस लाइब्रेरी का उपयोग करें - यदि आप कुशल/भाग्यशाली हैं, तो कॉन्फ़िगरेशन के अलावा अपने स्वयं के बहुत कम कोड हो सकते हैं (उदाहरण के लिए कौन सा डेटाबेस कनेक्ट करना है, कैसे करें रिपोर्ट परिणाम, और कौन से परीक्षण चलाने के लिए)।

इसी प्रकार, यदि आवश्यक हो, तो आम आदानों/डेटासेट आम निर्देशिका में रखा जा सकता है

+0

धन्यवाद। मैं निर्दिष्ट नहीं करता क्योंकि मैं अपने प्रश्नों को भाषाओं से टैग किए जाने से बचना चाहता हूं। लाइब्रेरी, ऑब्जेक्ट्स, विरासत, यहां सबकुछ संभव है। – user89021

+0

उत्तर स्वीकार करना आसान नहीं था क्योंकि वे दोनों बहुत अच्छे हैं और मेरी मदद की। आपका बहुत बहुत धन्यवाद। – user89021

0

एक और उत्तर। आपके पास दो प्रकार के परीक्षण हैं। मैं क्या करना चाहता हूं अखंडता परीक्षण को संबोधित करना है। आप क्या करना चाहते हैं अखंडता परीक्षणउत्पादन कोड के फ़ंक्शन के रूप में शामिल करना चाहते हैं। IOW, प्रणाली के हिस्से के रूप में अखंडता है।

आपने पहले से ही उल्लेख किया है कि डुप्लिकेशन एक मुद्दा है और आप डुप्लिकेशन को हटाने के लिए पुनः प्रतिक्रिया कर रहे हैं। पाठ्यक्रम के रिफैक्टर कोड में विकास परीक्षण हैं?

सिस्टम मॉनीटरिंग उत्पादन कोड हो सकता है। तो आप जो भी कोड लिखते हैं वह सिस्टम का हिस्सा बन जाता है।

इस बारे में अच्छी बात यह है कि आप अपने विकास परीक्षणों के माध्यम से अपना कोड विकसित करते हैं।

+0

धन्यवाद। आपके उत्तर ने वास्तव में मेरी मदद की, विशेष रूप से "सिस्टम निगरानी उत्पादन का हिस्सा हो सकती है"। इन 3 उत्तरों के साथ मेरे विकास में काफी सुधार हुआ है! – user89021

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