क्या किसी के पास सेलेनियम जैसे एकीकरण परीक्षण ढांचे से बने डेटाबेस लेनदेन को रोल करने के सर्वोत्तम अभ्यास या पसंदीदा तरीके के लिए कोई सुझाव है?एकीकरण के बाद रोलबैक डेटाबेस (सेलेनियम) परीक्षण
यहां हमारी वर्तमान स्थिति है: हमारे पास एक यूनिट वेब प्रोजेक्ट है जिसमें कई यूनिट परीक्षण हैं जो हमारे यूनिट टेस्ट पर्यावरण में ठीक काम करते हैं - प्रत्येक परीक्षा में एक अभिभावक वर्ग होता है जो [सेटअप] और रोल में लेनदेन खोलता है [TearDown] में लेनदेन वापस। प्रत्येक परीक्षण के बाद, हमारे यूनिट परीक्षण डेटाबेस को मूल स्थिति में वापस बहाल कर दिया जाता है।
हालांकि, एक बार जब हम अपने एकीकरण वातावरण में जाते हैं तो चीजें बदलती हैं। हमारा निरंतर एकीकरण सर्वर स्वचालित रूप से हमारे कामों को संकलित करता है और उन्हें एक परीक्षण सर्वर पर धक्का देता है, ताकि सर्वर हमेशा सबसे अद्यतित कोड पर चलता है। हमने साइट के साथ उपयोगकर्ता इंटरैक्शन को स्वचालित करने के लिए सेलेनियम इंस्टेंस भी सेट किया है। सेलेनियम परीक्षण मूल रूप से मौजूदा सेलेनियम सर्वर के साथ संवाद करते हैं, और सर्वर की चीजों को बताते हैं, "ब्राउज़र लॉन्च करें और http://testsite/TestPage.aspx पर जाएं - आईडी 'def' के साथ फॉर्म फ़ील्ड में टेक्स्ट 'abc' दर्ज करें - नए पृष्ठ पर टेक्स्ट 'xyz' '
प्रत्येक परीक्षण हमारे वेनिला यूनिट परीक्षणों के समान तरीके से चलाया जाता है, लेकिन एक महत्वपूर्ण अपवाद के साथ: सेलेनियम द्वारा किए गए किसी भी बदलाव को पूरी तरह से अलग थ्रेड/एप्लिकेशन में किया जाता है, और इसलिए हम नहीं कर सकते (मुझे लगता है कि हम कम से कम नहीं, टेस्ट टियरडाउन में उन्हें वापस रोल कर सकते हैं।
हमें अभी तक इसके लिए एक अच्छा समाधान नहीं आया है। अभी हम एक बिंदु पर हैं जहां हम डेटाबेस के बैकअप के लिए एक एसक्यूएल कथन निष्पादित करने के लिए एक एसक्यूएल कॉमांड का उपयोग कर रहे हैं, फिर परीक्षण के अंत में, हम डेटाबेस को एकल उपयोगकर्ता को सेट कर रहे हैं, वर्तमान डीबी छोड़ रहे हैं, और बहाल कर रहे हैं पुरानी प्रतिलिपि - यह आदर्श से कम है, क्योंकि यह प्रभावी रूप से डीबी से जुड़ी हुई एप्लिकेशन को मार देती है, और हमें फिर से ऐप को दोबारा शुरू करने की आवश्यकता होती है।
क्या यह एक समस्या है जिसे हल किया गया है? कोई सलाह बहुत बढ़िया होगी।
धन्यवाद!
धन्यवाद स्टीफन, यह सबसे अच्छा समाधान लगता है - हम सिर्फ छोटा टेबल का सहारा लिया और दिया है फिर से लोड हो रहा है प्रत्येक परीक्षण के बाद फिक्स्चर, जो वास्तव में * वह * कर नहीं है, और ऐसा लगता है कि यह अच्छी तरह से काम कर रहा है। फिर से धन्यवाद! – matt
ओरेकल पर छंटनी काफी तेज़ है, क्योंकि आप इस ऑपरेशन को रोलबैक नहीं कर सकते हैं। हमारी स्थिति में स्क्रिप्ट आसान हैं, स्क्रिप्ट पहले से ही उपलब्ध हैं, हमें कुछ और बनाए रखने की ज़रूरत नहीं है। –
क्या यह स्क्रिप्ट प्रत्येक परीक्षण विधि या परीक्षण मामले से पहले चलती है? मैं हर टेस्ट विधि मानूंगा .... यह स्क्रिप्ट कैसे चलती है? क्या आपके पास बैक एंड में एक सेवा एपीआई है? – HDave