2009-03-19 14 views
5

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

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

कुछ विचार:

  1. मैन्युअल सेलेनियम परीक्षण में डेटाबेस से कनेक्ट डेटा
  2. DBUnit की तरह कुछ का उपयोग करें यह प्रबंधन करने के लिए साफ करने के लिए?
  3. बस डेटा जोड़ने और इसे (उर्फ, आलसी दृष्टिकोण)

धन्यवाद सफाई के बारे में चिंता नहीं है!

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

उत्तर

4

मैं सेलेनियम का उपयोग रेल अनुप्रयोग के साथ करता हूं, और मैं परीक्षण डेटाबेस से डेटा लोड और अनलोड करने के लिए स्थिरता तंत्र का उपयोग करता हूं। यह डीबीयूनीट दृष्टिकोण के समान है, हालांकि मैं डेटा की मात्रा के कारण परीक्षणों के बीच अनलोड और पुनः लोड नहीं करता हूं। (यह something I'm working on है, हालांकि।)

2

हमारे पास डेटाबेस पुनर्स्थापना दिनचर्या का वेब फ्रंट एंड है। सबसे पहले हमारे परीक्षण करते हैं एक "अच्छी तरह से ज्ञात" शुरुआती बिंदु बहाल है।

0

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

0

आलसी दृष्टिकोण से बचें। यह अच्छा नहीं है और अंत में आप असफल हो जाएगा। इस separate StackOverflow question में इस विषय पर मेरी पिछली प्रतिक्रिया देखें।

0

अन्य उत्तरों के साथ सहमत हैं। मैंने पिछले 3 परियोजनाओं में सेलेनियम और डीबीयूनीट परीक्षणों में काम किया है जिन पर मैंने काम किया है। पहली परियोजना पर हमने आलसी दृष्टिकोण की कोशिश की, लेकिन अनुमानतः यह एक ढेर में गिर गया, इसलिए हमने डीबीयूनीट का इस्तेमाल किया और मैंने पीछे नहीं देखा।

मुझे एहसास है कि आप PHP का उपयोग कर रहे हैं, इसलिए कृपया अपने PHP समकक्षों को डीबीयूनीट/जुनीट का अनुवाद करें।

अंक की एक जोड़ी:

संभव के रूप में छोटे से डेटा के रूप में
  • का प्रयोग करें। कई सेलेनियम परीक्षण चल रहे हैं, आप डीबीयूनिट लोड जितनी जल्दी हो सके चाहते हैं। इसलिए आपके द्वारा लोड किए जा रहे डेटा की मात्रा को कम करने का प्रयास करें।
  • केवल उस डेटा को लोड करें जो बदलता है। अक्सर आप उन तालिकाओं को छोड़ सकते हैं जो कभी भी वेब ऐप द्वारा परिवर्तित नहीं होते हैं। रेफरी डेटा टेबल और इतने पर। हालांकि आप मामले में इस डेटा को गलती से खोने के लिए एक अलग डीबीयूनीट xml फ़ाइल/डीबी बैकअप बनाना चाहते हैं।
  • ज्यूनिट सेलेनियम परीक्षण चुनने दें कि उन्हें पुनः लोड करने की आवश्यकता है या नहीं। कुछ सेलेनियम परीक्षण किसी भी डेटा को नहीं बदलेंगे, इसलिए डेटाबेस चलाने के बाद डेटाबेस को फिर से लोड करने का कोई बिंदु नहीं है। मेरे प्रत्येक सेलेनियम परीक्षण I वांछित डीबीयूनीट व्यवहार को वापस करने के लिए एक विधि को ओवरराइड/कार्यान्वित करें।

    @Override संरक्षित DBUnitRunConfig getDBUnitRunConfig() {

    return DBUnitRunConfig.RUN_ONCE_FOR_THIS_TEST_CASE; 
    

    }

(कि टुकड़ा फ़ॉर्मेट करने के लिए प्राप्त नहीं कर सका सही ढंग से।) जहां DBUnitRunConfig है:

public enum DBUnitRunConfig { 
    NONE, 
    RUN_IF_NOT_YET_RUN_IN_ANY_TEST_CASE, 
    RUN_ONCE_FOR_THIS_TEST_CASE, 
    RUN_FOR_EACH_TEST_IN_TEST_CASE 
}; 

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

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