मैं वेब प्रपत्र साइट का परीक्षण कैसे करूं?


26

मैं वेब प्रपत्र साइट का परीक्षण कैसे करूं? यह मेरे लिए ऐसा लगता है कि इसमें से बहुत कुछ राज्य और उपयोगकर्ता इनपुट पर निर्भर करता है और यह संभव नहीं होगा।

यदि यह संभव नहीं है तो क्या कोई वैध स्वचालित विकल्प है?


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

जवाबों:


22

हाँ तुम कर सकते हो। आपको बस अपनी चिंताओं को अच्छी तरह से अलग करने के लिए सावधान रहना होगा। संक्षेप में, आपको अपने सभी तर्क को कोड-पीछे से निकालना होगा और इसे अन्य वर्गों में डालना होगा।

ऐसा करने के दो सामान्य तरीके हैं।

सरल तरीका यह है कि आपके सभी ईवेंट हैंडलर को "क्या जानकारी मुझे सिस्टम देता है? मुझे पेज पर पॉप्युलेट करने के लिए क्या जानकारी चाहिए?" और फिर एक सेवा वर्ग प्रदान करें जो कि रूपांतरण करता है।

इस मामले में, सेवा परत को आपकी प्रस्तुति परत की प्रकृति के बारे में बहुत कम जानकारी होनी चाहिए। आपको अभी भी सेवा से लौटाए गए डेटा को लेना है और अपने कोड-बैक में WebForm के सही घटकों को पॉप्युलेट करना है और यह अप्रयुक्त रहता है (कम से कम यूनिट परीक्षणों द्वारा, आप अभी भी एकीकरण परीक्षण नियोजित कर सकते हैं)। लेकिन यह शायद ही कभी होता है जहां कोड गलत हो जाता है, यह तर्क में विफल होने की अधिक संभावना है।

एक और अधिक जटिल, लेकिन अधिक प्रभावी, तरीका है मॉडल व्यू प्रस्तुतकर्ता पैटर्न का उपयोग करना । जब हमने कोशिश की, तो हमने पाया कि प्रस्तुतकर्ता जल्दी से फ्रेमवर्क के लिए बहुत युग्मित हो गए और, जितना अधिक हमने एमवीपी विकसित किया, उतना ही स्पष्ट था कि एमवीपी वास्तव में एमवीसी बनना चाहता था, लेकिन हो नहीं सका।

उस ने कहा, दूसरों ने इसे बहुत सफलतापूर्वक किया है - यहां तक कि भारी उठाने को हटाने के लिए एक वेबफॉर्मस्वाप फ्रेमवर्क भी उपलब्ध है - इसलिए आपका माइलेज अलग-अलग हो सकता है।


1
@jmoreno: अच्छा पकड़! मैं पिछले 5 वर्षों में भी WebForms और MVP भूल गया हूँ।
पीडीआर

16

स्पष्ट रूप से, एक संपूर्ण वेब प्रपत्र पृष्ठ एक इकाई नहीं है, और इस प्रकार इकाई का परीक्षण नहीं किया जा सकता है। हालांकि, कुछ चीजें हैं जो आप स्वचालित परीक्षणों के लिए कर सकते हैं:

  • इकाई परीक्षण पृष्ठ के व्यक्तिगत घटकों (वास्तविक तर्क प्रदर्शन करने वाली कोई भी विधि)
  • इकाई परीक्षण घटक का उपयोग किया जाता है (कस्टम नियंत्रण, अंतर्निहित व्यावसायिक तर्क, आदि)
  • स्वचालित कार्यक्षमता परीक्षण (किसी ब्राउज़र को रिमोट-कंट्रोल करके, या cURL जैसी किसी चीज़ के माध्यम से HTTP अनुरोध भेजना)
  • स्वचालित पैठ परीक्षण (ऐसे उपकरण हैं जो संभव इंजेक्शन बिंदुओं को खोजने की कोशिश करेंगे, और स्वचालित रूप से आपके पृष्ठ पर हानिरहित अभी तक पता लगाने योग्य इंजेक्शन हमलों को चलाएंगे)
  • लोड परीक्षण
  • प्रयोज्य और घर-शैली की बुलेट बिंदुओं की सूची के खिलाफ लेआउट की जांच करना (हालांकि यह स्वचालित करने के लिए बहुत कठिन है; यह आमतौर पर हर बार और फिर मैन्युअल रूप से करने के लिए अधिक संभव है)

-1 क्षमा करें, लेकिन लोड परीक्षण, पैठ परीक्षण और लेआउट जाँच इकाई परीक्षण के साथ करने के लिए कुछ भी नहीं कर रहे हैं
टॉम स्क्वायर्स

2
@TomSquires: बेशक वे नहीं हैं, और यदि आप मेरे उत्तर को ध्यान से पढ़ें, तो आप देखेंगे कि मैंने कभी नहीं कहा कि वे थे। लेकिन यह सवाल सामान्य तौर पर यूनिट परीक्षणों और स्वचालित परीक्षण की अवधारणाओं को भ्रमित करने के लिए लगता है, यही कारण है कि मैंने विभिन्न सार्थक स्वचालित परीक्षण सूचीबद्ध किए हैं जिन्हें आप एक वेब फॉर्म पर फेंक सकते हैं।
tdammers

सहमत हों, वेब पेज का परीक्षण करने से एकीकरण परीक्षण के कुछ रूप होने की संभावना है, फिर सख्त परिभाषाओं द्वारा एक इकाई परीक्षण, हालांकि इसका अभी भी अच्छा है कि आप जो भी कर सकते हैं उसे स्वचालित करें
jk।

6
@TomSquires: पूरी तरह से अनुचित डाउनवोट। आपका अपना प्रश्न पूरी साइट के परीक्षण से शुरू होता है, जिसका इकाई परीक्षण से कोई लेना-देना नहीं है। टेडमर्स ने पूरे और भागों का परीक्षण करने के विभिन्न तरीकों की पहचान की और पहचान की कि यूनिट परीक्षण कहां फिट बैठता है। +1
azheglov

3
काफी उचित। मैं इसे वापस लेता हूं
टॉम स्क्वायर्स

9

मुझे प्रश्न के "यूनिट" के भाग के लिए खेद है ...

सेलेनियमएचक्यू फ्रंट एंड से टेस्ट के लिए आपका दोस्त है। यह एक इकाई परीक्षण नहीं है, एक ब्लैक बॉक्स परीक्षण की तरह है। आपको अभी भी मान्य परीक्षण मामलों पर विचार करने की आवश्यकता है ...


1
+1 आपका उत्तर सामने आया क्योंकि मैं "पोस्ट आपके उत्तर" को बिल्कुल वैसा ही कहने के लिए दबा रहा था।
यानिस २५'११ को

2
इसके अलावा, चूंकि ऑप यूनिट टेस्टिंग के बारे में पूछ रहा है, तो बस यह जोड़ें कि प्रश्न वास्तव में क्या है कार्यात्मक (ity) परीक्षण , जो उपयोगकर्ता इनपुट तत्वों का परीक्षण करते समय अधिक उपयुक्त (समझदार, व्यवहार्य) है।
यानिस २५'११

+1 cos मैं इसका उपयोग करने के लिए अर्थ रखता हूं, लेकिन कभी भी इसके लिए गोल नहीं हुआ। क्या किसी ने इसका इस्तेमाल किया है, क्या यह अच्छा है और लागू करने लायक है?
निमचिंप्सकी

6
सेलेनियम एक शानदार उपकरण है, लेकिन इसका इकाई परीक्षण के साथ कुछ भी नहीं है।
पीडीआर

यह सच है, लगता है कि मैंने इस जानकारी को प्रश्न में छोड़ दिया है: /
वॉरेनफिथ

6

अनुभव से बोलना: केवल अगर यह सही है। "सही" से मेरा मतलब है न्यूनतम कोड-पीछे और उपर्युक्त मॉडल-व्यू-प्रस्तोता की तरह कुछ वेब फॉर्म को "गूंगा" बनाने के लिए। यह आमतौर पर ब्राउनफ़ील्ड अनुप्रयोगों के साथ बहुत मुश्किल साबित होता है क्योंकि वे इसे ध्यान में रखते हुए डिज़ाइन नहीं किए गए थे और इसका उपयोग करने के लिए पृष्ठों को फिर से लिखने / फिर से लिखने के लिए एक निकट-हर्कुलियन प्रयास है।


1

Watin

मुझे लगता है कि यूनिट वेब परीक्षण बेहद उपयोगी हैं, भले ही यह एक प्रतिगमन बग का एक सामान्य विचार देने के लिए या नई परियोजनाओं के लिए हो।

जहां तक ​​राज्य का संबंध है, आप अपने यूनिट परीक्षण बनाते हैं जैसा कि आप गैर-यूआई परीक्षणों के साथ करेंगे - वे परीक्षण की शुरुआत में डेटाबेस को साफ करते हैं और डेटाबेस को फिर से बनाते हैं जिसमें स्टार्ट राज्य को छोड़कर कुछ भी नहीं होता है। प्रत्येक इकाई परीक्षण तब एक पृष्ठ, या आमतौर पर एक पृष्ठ पर एक अलग कार्य 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 आधारित है, लेकिन फ़ायरफ़ॉक्स और क्रोम के लिए कुछ प्रयोगात्मक समर्थन है। आप मैन्युअल रूप से परीक्षण में कुछ भी स्वचालित कर सकते हैं, जिसमें जावास्क्रिप्ट इंटरैक्शन भी शामिल है।


Ack that it is 2016. आज की WatiN साइट पर जाना मुझे इंगित करता है कि WatiN शायद मर चुका है। डॉक्स विरल हैं, अप-टू-डेट नहीं हैं, और वीडियो नहीं चलते हैं। मुझे कोई शिकायत नहीं है - मुझे खुले स्रोत के स्वैच्छिक साधनों के लिए बहुत आभार है - यह टिप्पणी मेरे साथ आने वाले अन्य व्यक्तियों की मदद करने के लिए है। जवाब ठीक है, बस यह इंगित करते हुए कि शुरू होने के लिए स्वयं-संचालित हाथों से सीखने की आवश्यकता हो सकती है।
qxotk

1
WatiN तरीके के बारे में सोचने वाले किसी भी व्यक्ति के लिए और अधिक सहायता, यह स्थिर है + जहां वर्तमान दिन में यहां देखना है: stackoverflow.com/questions/118531/…
qxotk

0

आप वास्तव में वेब साइट का परीक्षण नहीं कर सकते हैं, केवल इसलिए कि वेब अनुरोध एक तार पर (या टीसीपी स्टैक के माध्यम से) होते हैं। इस प्रकार, परीक्षण "यूनिट टेस्ट" की परिभाषा में फिट नहीं होते हैं, वे, संभावना, एंड-टू-एंड परीक्षण होंगे।

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

अधिक दिलचस्प है, हालांकि, यह मुझे थोड़ा परेशान करता है कि आपको वेब रूपों का परीक्षण करने की आवश्यकता क्यों होगी । क्या आप कोड में बहुत अधिक तर्क नहीं दे रहे हैं, और किसी भी संयोग से एनीमिक व्यापार तर्क है?


-1

चमेली

पिछले 5 वर्षों में जैस्मीन फ्रंट-एंड यूनिट परीक्षणों के लिए एक महत्वपूर्ण उपकरण के रूप में उभरी हैं। इसे अक्सर नोड और एनपीएम के साथ स्वचालित निर्माण परीक्षण में शामिल किया जाता है

प्रति https://en.wikipedia.org/wiki/Jasmine_(JavaScript_testing_framework) :

जैस्मीन जावास्क्रिप्ट के लिए एक खुला स्रोत परीक्षण ढांचा है। [२] इसका उद्देश्य किसी भी जावास्क्रिप्ट-सक्षम प्लेटफ़ॉर्म पर चलना है, न तो एप्लिकेशन और न ही आईडीई पर घुसपैठ करना, और आसानी से पढ़ा जाने वाला वाक्यविन्यास करना। यह अन्य यूनिट टेस्टिंग फ्रेमवर्क, जैसे स्क्रूनाइट, जेएसएसपीईसी, जेस्पेक और आरएसपीईसी से काफी प्रभावित है। [३]

जावास्क्रिप्ट के सभी उल्लेखों के बावजूद इसका उपयोग सादे वेब रूप की इकाई परीक्षण के लिए भी किया जा सकता है।


जबकि जावास्क्रिप्ट का उपयोग वेबफॉर्म में किया जाता है, जो यूआई को अपडेट करने की प्राथमिक विधि नहीं है
टॉम स्क्वायर्स

सच। हालाँकि विकल्प है ...? तो इसीलिए, भले ही उद्देश्य के लिए नहीं, जैस्मीन बहुत अच्छी तरह से काम करती है। साथ ही सिंटैक्स RSpec के लगभग समान है जो रूबी प्रोग्रामर को पसंद है।
माइकल डुरंट

-2

ASP.NET

ASP.NET साइट विकसित करते समय हम इकाई परीक्षण चलाने में सक्षम थे:

  • डोमेन
  • बीएल नियंत्रक / प्रस्तुतकर्ता
  • वेब फ़ॉर्म पृष्ठों के कोडबाइंड

आपके आर्किटेक्चर के आधार पर, इन सभी को TDD करना संभव है। केवल एक चीज जिसे आप टेस्ट नहीं कर सकते, वह है मार्कअप फाइल का लेआउट।


3
यह उत्तर कहता है "हाँ यह संभव है" "कैसे" के सवाल पर। बिल्कुल मददगार नहीं।
रबडकॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.