मैं वेब प्रपत्र साइट का परीक्षण कैसे करूं? यह मेरे लिए ऐसा लगता है कि इसमें से बहुत कुछ राज्य और उपयोगकर्ता इनपुट पर निर्भर करता है और यह संभव नहीं होगा।
यदि यह संभव नहीं है तो क्या कोई वैध स्वचालित विकल्प है?
मैं वेब प्रपत्र साइट का परीक्षण कैसे करूं? यह मेरे लिए ऐसा लगता है कि इसमें से बहुत कुछ राज्य और उपयोगकर्ता इनपुट पर निर्भर करता है और यह संभव नहीं होगा।
यदि यह संभव नहीं है तो क्या कोई वैध स्वचालित विकल्प है?
जवाबों:
हाँ तुम कर सकते हो। आपको बस अपनी चिंताओं को अच्छी तरह से अलग करने के लिए सावधान रहना होगा। संक्षेप में, आपको अपने सभी तर्क को कोड-पीछे से निकालना होगा और इसे अन्य वर्गों में डालना होगा।
ऐसा करने के दो सामान्य तरीके हैं।
सरल तरीका यह है कि आपके सभी ईवेंट हैंडलर को "क्या जानकारी मुझे सिस्टम देता है? मुझे पेज पर पॉप्युलेट करने के लिए क्या जानकारी चाहिए?" और फिर एक सेवा वर्ग प्रदान करें जो कि रूपांतरण करता है।
इस मामले में, सेवा परत को आपकी प्रस्तुति परत की प्रकृति के बारे में बहुत कम जानकारी होनी चाहिए। आपको अभी भी सेवा से लौटाए गए डेटा को लेना है और अपने कोड-बैक में WebForm के सही घटकों को पॉप्युलेट करना है और यह अप्रयुक्त रहता है (कम से कम यूनिट परीक्षणों द्वारा, आप अभी भी एकीकरण परीक्षण नियोजित कर सकते हैं)। लेकिन यह शायद ही कभी होता है जहां कोड गलत हो जाता है, यह तर्क में विफल होने की अधिक संभावना है।
एक और अधिक जटिल, लेकिन अधिक प्रभावी, तरीका है मॉडल व्यू प्रस्तुतकर्ता पैटर्न का उपयोग करना । जब हमने कोशिश की, तो हमने पाया कि प्रस्तुतकर्ता जल्दी से फ्रेमवर्क के लिए बहुत युग्मित हो गए और, जितना अधिक हमने एमवीपी विकसित किया, उतना ही स्पष्ट था कि एमवीपी वास्तव में एमवीसी बनना चाहता था, लेकिन हो नहीं सका।
उस ने कहा, दूसरों ने इसे बहुत सफलतापूर्वक किया है - यहां तक कि भारी उठाने को हटाने के लिए एक वेबफॉर्मस्वाप फ्रेमवर्क भी उपलब्ध है - इसलिए आपका माइलेज अलग-अलग हो सकता है।
स्पष्ट रूप से, एक संपूर्ण वेब प्रपत्र पृष्ठ एक इकाई नहीं है, और इस प्रकार इकाई का परीक्षण नहीं किया जा सकता है। हालांकि, कुछ चीजें हैं जो आप स्वचालित परीक्षणों के लिए कर सकते हैं:
मुझे प्रश्न के "यूनिट" के भाग के लिए खेद है ...
सेलेनियमएचक्यू फ्रंट एंड से टेस्ट के लिए आपका दोस्त है। यह एक इकाई परीक्षण नहीं है, एक ब्लैक बॉक्स परीक्षण की तरह है। आपको अभी भी मान्य परीक्षण मामलों पर विचार करने की आवश्यकता है ...
अनुभव से बोलना: केवल अगर यह सही है। "सही" से मेरा मतलब है न्यूनतम कोड-पीछे और उपर्युक्त मॉडल-व्यू-प्रस्तोता की तरह कुछ वेब फॉर्म को "गूंगा" बनाने के लिए। यह आमतौर पर ब्राउनफ़ील्ड अनुप्रयोगों के साथ बहुत मुश्किल साबित होता है क्योंकि वे इसे ध्यान में रखते हुए डिज़ाइन नहीं किए गए थे और इसका उपयोग करने के लिए पृष्ठों को फिर से लिखने / फिर से लिखने के लिए एक निकट-हर्कुलियन प्रयास है।
मुझे लगता है कि यूनिट वेब परीक्षण बेहद उपयोगी हैं, भले ही यह एक प्रतिगमन बग का एक सामान्य विचार देने के लिए या नई परियोजनाओं के लिए हो।
जहां तक राज्य का संबंध है, आप अपने यूनिट परीक्षण बनाते हैं जैसा कि आप गैर-यूआई परीक्षणों के साथ करेंगे - वे परीक्षण की शुरुआत में डेटाबेस को साफ करते हैं और डेटाबेस को फिर से बनाते हैं जिसमें स्टार्ट राज्य को छोड़कर कुछ भी नहीं होता है। प्रत्येक इकाई परीक्षण तब एक पृष्ठ, या आमतौर पर एक पृष्ठ पर एक अलग कार्य encapsulate करता है।
http://watin.org/ एक अन्य वेब परीक्षण उपकरण है, लेकिन C # /। NET के लिए। आप परीक्षण को इकाई परीक्षण के रूप में लिखते हैं:
[Test]
public void SearchForWatiNOnGoogle()
{
using (var browser = new IE("http://www.google.com"))
{
browser.TextField(Find.ByName("q")).TypeText("WatiN");
browser.Button(Find.ByName("btnG")).Click();
Assert.IsTrue(browser.ContainsText("WatiN"));
}
}
यह वर्तमान में IE आधारित है, लेकिन फ़ायरफ़ॉक्स और क्रोम के लिए कुछ प्रयोगात्मक समर्थन है। आप मैन्युअल रूप से परीक्षण में कुछ भी स्वचालित कर सकते हैं, जिसमें जावास्क्रिप्ट इंटरैक्शन भी शामिल है।
आप वास्तव में वेब साइट का परीक्षण नहीं कर सकते हैं, केवल इसलिए कि वेब अनुरोध एक तार पर (या टीसीपी स्टैक के माध्यम से) होते हैं। इस प्रकार, परीक्षण "यूनिट टेस्ट" की परिभाषा में फिट नहीं होते हैं, वे, संभावना, एंड-टू-एंड परीक्षण होंगे।
उन प्रकार के परीक्षणों के लिए, आप सेलेनियम जैसे सूट का उपयोग कर सकते हैं जो पर्दे के पीछे एक वेब ब्राउज़र चलाता है। चेतावनी का एक शब्द हालांकि: आमतौर पर इस तरह का परीक्षण बहुत ही कठिन और अप्रत्याशित होता है, क्योंकि इसमें कई भाग होते हैं!
अधिक दिलचस्प है, हालांकि, यह मुझे थोड़ा परेशान करता है कि आपको वेब रूपों का परीक्षण करने की आवश्यकता क्यों होगी । क्या आप कोड में बहुत अधिक तर्क नहीं दे रहे हैं, और किसी भी संयोग से एनीमिक व्यापार तर्क है?
पिछले 5 वर्षों में जैस्मीन फ्रंट-एंड यूनिट परीक्षणों के लिए एक महत्वपूर्ण उपकरण के रूप में उभरी हैं। इसे अक्सर नोड और एनपीएम के साथ स्वचालित निर्माण परीक्षण में शामिल किया जाता है
प्रति https://en.wikipedia.org/wiki/Jasmine_(JavaScript_testing_framework) :
जैस्मीन जावास्क्रिप्ट के लिए एक खुला स्रोत परीक्षण ढांचा है। [२] इसका उद्देश्य किसी भी जावास्क्रिप्ट-सक्षम प्लेटफ़ॉर्म पर चलना है, न तो एप्लिकेशन और न ही आईडीई पर घुसपैठ करना, और आसानी से पढ़ा जाने वाला वाक्यविन्यास करना। यह अन्य यूनिट टेस्टिंग फ्रेमवर्क, जैसे स्क्रूनाइट, जेएसएसपीईसी, जेस्पेक और आरएसपीईसी से काफी प्रभावित है। [३]
जावास्क्रिप्ट के सभी उल्लेखों के बावजूद इसका उपयोग सादे वेब रूप की इकाई परीक्षण के लिए भी किया जा सकता है।
ASP.NET साइट विकसित करते समय हम इकाई परीक्षण चलाने में सक्षम थे:
आपके आर्किटेक्चर के आधार पर, इन सभी को TDD करना संभव है। केवल एक चीज जिसे आप टेस्ट नहीं कर सकते, वह है मार्कअप फाइल का लेआउट।