यूआई परीक्षण काम कर, धीमी गति से कमजोर और दर्दनाक बनाए रखने के लिए किया जा सकता है रखने, लेकिन कुछ कीड़े केवल यूआई परीक्षण में पकड़ा जा सकता है। महत्वपूर्ण सवाल यह नहीं है कि यूआई परीक्षण लिखना उचित है, लेकिन अपने यूआई परीक्षणों को उपयोगी, स्थिर और रखरखाव कैसे रखें।
अन्य परीक्षणों के लिए एक विकल्प के रूप में यूआई परीक्षणों का उपयोग करना एक आम गलती है। सैद्धांतिक रूप से, आप यूआई परीक्षणों के माध्यम से बहुत सारी कार्यक्षमता का परीक्षण कर सकते हैं, लेकिन उस दृष्टिकोण के साथ कई समस्याएं हैं। स्टार्टर्स के लिए, यूआई (विशेष रूप से असाधारण स्थितियों) में सीधे परीक्षण करने के लिए कुछ कार्यक्षमता बहुत कठिन हो सकती है। दूसरा, यदि कोई परीक्षण विफल रहता है, तो यह देखना मुश्किल होता है कि समस्या का स्रोत क्या है। अंत में, यूआई परीक्षणों में आपके द्वारा परीक्षण किए जाने वाले अधिक कोड पथ, धीमे यूआई परीक्षण प्राप्त होते हैं। यदि आप केवल धीमी परीक्षणों पर भरोसा करते हैं, तो आपकी उत्पादकता और भी खराब हो जाती है, जो टूटने वाले परीक्षणों को केवल "अस्थायी" करने के लिए प्रलोभन को बढ़ाती है।
मेरी सलाह है कि यूनिट परीक्षणों और एकीकरण परीक्षणों में जितना संभव हो सके परीक्षण करें, अपने यूआई और अपने व्यावसायिक तर्क के बीच एक अच्छा अलगाव बनाएं, और अपने यूआई परीक्षणों का उपयोग उन बग को पकड़ने/रोकने के लिए करें जिन्हें अन्य प्रकारों में परीक्षण नहीं किया जा सकता परीक्षण।
यदि आपके पास कई परीक्षण हैं, तो एकाधिक स्वीट बनाने पर विचार करें। मैं यूआई परीक्षणों के लिए एक सुइट बनाता हूं, एकीकरण परीक्षण के लिए एक और यूनिट परीक्षणों के लिए एक। यूनिट परीक्षण बहुत तेज़ होते हैं, इसलिए मैं उन्हें चलाता हूं क्योंकि मैं अपना कोड विकसित करता हूं (अक्सर टीडीडी के माध्यम से)। ये वे परीक्षण हैं जो मुझे उत्पादक बनने में मदद करते हैं।
एकीकरण परीक्षण मैं अक्सर कम चलाता हूं (शायद मैंने कुछ बदलावों को लागू करने के बाद)। जब मैं एक परिवर्तन सबमिट करने के लिए तैयार हो रहा हूं (या जब मैं अधिक यूआई परीक्षण लिखता हूं, तो स्पष्ट रूप से) यूआई परीक्षण चलाता हूं।
सलाह का एक अंतिम सादा: Domain Specific Language के साथ अपने यूआई परीक्षण लिखने पर विचार करें। इससे परीक्षणों को समझना आसान हो जाता है (क्योंकि वे उपयोगकर्ता चरणों के सेट के रूप में पढ़ते हैं, न कि निम्न स्तर के ब्राउज़र क्रियाओं के समूह के रूप में)। यह कोड को बनाए रखने के लिए आसान बना सकता है। उदाहरण के लिए, उपयोगकर्ता को लॉग इन करने के लिए चरण-दर-चरण ब्राउज़र क्रियाओं के माध्यम से प्रत्येक परीक्षण करने के बजाय, आप देख सकते हैं:
LoginPage loginPage = new LoginPage(selenium);
HomePage homePage = loginPage
.enterUserName(TestUsers.Alice.USER_NAME)
.enterPassword(TestUsers.Alice.PASSWORD)
.submit();
assertThat(homePage.getBreadcrumbs(), equalTo("Home"));