2011-07-03 18 views
16

सेलेनियम-वेबड्राइवर में वेबड्राइवर उदाहरण बनाने का सबसे अच्छा अभ्यास किला क्या है? एक परीक्षण प्रति विधि, प्रति परीक्षण कक्षा या प्रति परीक्षण चलाने के बाद?प्रति वेब विधि नया वेब ड्राइवर उदाहरण?

वे स्पिन अप करने के लिए महंगे (बहुत!) महंगा लगते हैं, लेकिन परीक्षण विधियों के बीच जानकारी लीक करने के परीक्षणों के बीच इसे खोलते हैं।

या कोई विकल्प है - क्या एक वेबड्राइवर उदाहरण एक ब्राउज़र विंडो (पॉपअप को छोड़कर) है, या किसी दिए गए ड्राइवर उदाहरण से नई विंडो/सत्र शुरू करने के लिए कोई तरीका है?

धन्यवाद मैट

उत्तर

12

मुझे पता चला है कि वास्तविक ब्राउज़र का उपयोग करते समय परीक्षण विधियों के बीच ब्राउज़र उदाहरणों का पुन: उपयोग करना एक बड़ा समय बचा है, उदाहरण के लिए फ़ायरफ़ॉक्स। HtmlUnitDriver के साथ परीक्षण चलाते समय, बहुत कम लाभ होता है।

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

यदि आप ब्राउज़र उदाहरणों का पुन: उपयोग करने जा रहे हैं तो आपको निश्चित रूप से करना चाहिए कि कुकीज़ के बीच कुकीज़ को साफ़/स्टोर करना है।

driver.manage().deleteAllCookies(); 

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

5

स्वचालित एकीकरण परीक्षण के अपने लक्ष्य प्रतिलिपि प्रस्तुत करने योग्य परीक्षण के लिए है, तो मैं हर परीक्षा निष्पादन के लिए एक नया webdriver उदाहरण की सिफारिश करेंगे।

प्रत्येक परीक्षण अकेले खड़े होना चाहिए, किसी अन्य परीक्षण या दुष्प्रभाव से स्वतंत्र होना चाहिए।

व्यक्तिगत रूप से केवल एक चीज जो मुझे बग को पुन: पेश करने के लिए कठिन से अधिक निराशाजनक लगती है, एक गैर-निर्धारिती परीक्षण है जिसे आप भरोसा नहीं करते हैं।

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

हां, अतिरिक्त परीक्षण निष्पादन समय, महंगा है यह लेकिन बेहतर है तो अपने परीक्षण डीबग करने का समय बिताएं।

इस दंड को ऑफ़सेट करने में सहायता के लिए कुछ संभावित समाधान अपने परीक्षण प्रक्रिया को सीधे अपनी निर्माण प्रक्रिया में रोल करना है, निरंतर एकीकरण दृष्टिकोण के निरंतर निर्माण से आगे बढ़ना।

इसके अलावा अपने एकीकरण परीक्षण के दायरे को सीमित करने का प्रयास करें। यदि आपके पास बहुत सारे भारी एकीकरण परीक्षण हैं, तो निष्पादन समय खा रहे हैं, फिर से प्रतिक्रिया करने का प्रयास करें। इसके बजाए, अंतर्निहित सेवा कॉल के आपके अधिक हल्के यूनिट परीक्षणों का कवरेज बढ़ाएं (जहां आपका व्यवसाय तर्क है)।

+1

मैं वास्तव में प्रत्येक परीक्षण के बीच एक नया ड्राइवर लॉन्च करने के लिए अतिरिक्त समय से नापसंद करता हूं। लेकिन विकल्प बदतर है। मैंने एक साझा चालक को साफ तरीके से काम करने के लिए वास्तव में कड़ी मेहनत की कोशिश की, लेकिन मैंने खुद को परीक्षणों के बीच अजीब बातचीत को डीबग करने में इतना समय लगाया कि यह सिर्फ इसके लायक नहीं था। –

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