वेब अनुप्रयोग विकास के साथ टीडीडी को एकीकृत करने के लिए सर्वोत्तम अभ्यास?


26

यूनिट परीक्षण और एएसपी.नेट वेब अनुप्रयोग मेरे समूह में एक संदिग्ध बिंदु हैं। अक्सर नहीं, अच्छी परीक्षा प्रथाओं दरारों और वेब अनुप्रयोगों के माध्यम से गिरती है, बिना किसी परीक्षण के कई वर्षों तक लाइव चलती है।

इस दर्द बिंदु का कारण आम तौर पर यूआई स्वचालन मध्य-विकास लिखने की परेशानी के आसपास घूमता है।

वेब एप्लिकेशन विकास के साथ आप या आपके संगठन सर्वोत्तम टीडीडी प्रथाओं को कैसे एकीकृत करते हैं?

18

इकाई परीक्षण प्राप्त हो जाएगा । चूंकि रॉब कूपर ने निहित किया, अपनी प्रस्तुति प्रबंधित करने के लिए तर्क के अलावा अपने वेबफॉर्म में कोई तर्क न डालें। अन्य सभी सामान तर्क और दृढ़ता परतों को अलग-अलग वर्गों में रखा जाना चाहिए और फिर आप अलग-अलग परीक्षण कर सकते हैं।

जीयूआई का परीक्षण करने के लिए कुछ लोग selenium पसंद करते हैं। अन्य शिकायत करते हैं कि स्थापित करने के लिए दर्द है।

+1

अच्छी तरह से, हो सकता है सेलेनियम कुछ के लिए एक दर्द स्थापित करने के लिए .. लेकिन यही कारण है कि दूसरों को एक नौकरी है :) 13 jul. 152015-07-13 12:45:43


4

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

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


2

यह एक अच्छा सवाल है, एक है कि मैं भी सदस्यता लेने की जाएगी :)

मैं अभी भी वेब देव को अपेक्षाकृत नया हूँ है, और मैं भी कोड का एक बहुत कि मोटे तौर पर अपरीक्षित है पर देख रहा हूँ।

मेरे लिए, मैं यूआई जितना संभव हो उतना प्रकाश (आमतौर पर केवल कोड की कुछ पंक्तियां) रखता हूं और बाकी सब कुछ से बकवास का परीक्षण करता हूं। कम से कम मुझे कुछ विश्वास हो सकता है कि यूआई को जो कुछ भी बनाता है वह उतना ही सही हो सकता है जितना हो सकता है।

क्या यह सही है? शायद नहीं, लेकिन कम से कम यह रूप में अभी भी काफी अत्यधिक स्वचालित है और अगर आप अपने परतों उचित रूप से अलग कोर कोड (जहां "जादू" होता है के सबसे) अभी भी बहुत अच्छी कवरेज है ..


2

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

आपका codebehind होगा, जब इस पद्धति के बाद, दो बातें:

  1. ट्रांजिट सभी प्रस्तोता के लिए उपयोगकर्ता क्रियाओं।
  2. प्रस्तुतकर्ता द्वारा प्रदान किए गए डेटा को प्रस्तुत करें।

प्रस्तुतकर्ता का यूनिट परीक्षण छोटा होना चाहिए।

अद्यतन: वेब अनुप्रयोगों (ASP.NET) के साथ काम करने के लिए माइक्रोसॉफ्ट के मुक्त यूआई ऑटोमेशन (.NET फ्रेमवर्क 3.0 में शामिल है) हो रही है पर https://svn.sourceforge.net/svnroot/rhino-tools/trunk/rhino-igloo/ की कोशिश करता


0

किया गया है: राइनो इग्लू यहां पाया जा सकता। आर्टिसो नामक एक जर्मन कंपनी ने ब्लॉग एंट्री लिखी है जो बताती है कि उसे कैसे प्राप्त किया जाए (link)।

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

मैंने थॉमस शिसलर (आर्टिसो) से इसके बारे में पूछा और उन्होंने समझाया कि यह इंटरनेट एक्सप्लोरर पर एक बड़ी कमी थी। उन्होंने माइक्रोसॉफ्ट की एक पुरानी तकनीक (MSAA) का संदर्भ दिया और खुद को उम्मीद कर रहा था कि IE8 यह बेहतर करेगा।

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


0

Ivonna इकाई आपके विचारों का परीक्षण कर सकती है। मैं अभी भी अधिकांश कोड को अन्य भागों में ले जाने की अनुशंसा करता हूं। हालांकि, कुछ कोड केवल से संबंधित हैं, जैसे नियंत्रण या नियंत्रण ईवेंट हैंडलर के संदर्भ।


2

मैं आम तौर पर परीक्षण से बचता हूं जिसमें यूआई तत्वों पर निर्भर होना शामिल है। मैं एकीकरण परीक्षण का पक्ष लेता हूं, जो आपकी डेटाबेस परत से दृश्य परत तक सबकुछ परीक्षण करता है (लेकिन वास्तविक लेआउट नहीं)।

से पहले एक नई परियोजना में वास्तविक कोड की एक पंक्ति लिखने से पहले परीक्षण परीक्षण शुरू करने का प्रयास करें, क्योंकि बाद में परीक्षण लिखना कठिन होता है।

ध्यान से चुनें कि आप क्या परीक्षण करते हैं - ध्यान से सबकुछ के लिए परीक्षण न लिखें। कभी-कभी यह एक उबाऊ काम है, इसलिए इसे कठिन न बनाएं। यदि आप बहुत सारे परीक्षण लिखते हैं, तो आप समय-समय पर रखरखाव रखरखाव के वजन के तहत उस कार्य को त्यागने का जोखिम उठाते हैं।

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

अपने आप को भरोसा न करें। मान लें कि आप हमेशा गलतियां करेंगे, और इसलिए आप अपने जीवन को आसान बनाने के लिए परीक्षण लिखते हैं, कठिन नहीं।

आप परीक्षण लेखन के बारे में अच्छा महसूस नहीं कर रहे हैं, तो आप शायद गलत कर रहे हैं;)