आपको कोड कॉपी करने की आवश्यकता क्यों है? डिच कैसिनी और विजुअल स्टूडियो को आपके लिए वर्चुअल निर्देशिका बनाने दें। निश्चित रूप से देवताओं को वेब परीक्षण चलाने से पहले निर्माण करना याद रखना चाहिए यदि वेब ऐप बदल गया है। हमने पाया है कि यह एक बड़ा सौदा नहीं है, खासकर यदि आप सीआई में वेब परीक्षण चलाते हैं।
डेटा एक बड़ी चुनौती है। जहां तक मैं देख सकता हूं, आपको अपूर्ण विकल्पों के बीच चयन करना होगा। यहां बताया गया है कि हम इसे कैसे संभालते हैं। सबसे पहले, मुझे समझाया जाना चाहिए कि हम एक बड़ी जटिल विरासत WebForms ऐप के साथ काम कर रहे हैं। साथ ही मुझे यह भी उल्लेख करना चाहिए कि डोमेन कोड परीक्षण परियोजना के भीतर से टेस्ट डेटा बनाने के लिए उपयुक्त नहीं है।
इससे हमें कुछ विकल्पों के साथ छोड़ दिया गया। हम कर सकते हैं: (ए) निर्माण के तहत डेटा सेटअप स्क्रिप्ट चलाएं, या (बी) वास्तविक वेब साइट का उपयोग करके वेब परीक्षणों के माध्यम से सभी डेटा बनाएं। विकल्प (ए) के साथ समस्या यह है कि परीक्षण एक मिनट के स्तर पर स्क्रिप्ट के साथ मिलकर बन जाते हैं। यह टी-एसक्यूएल के साथ वेब टेस्ट कोड सिंक्रनाइज़ करने के बारे में सोचने के लिए मेरा सिर थ्रोब बनाता है। तो हम साथ गए (बी)।
(बी) का एक लाभ यह है कि आपका सेटअप एप्लिकेशन व्यवहार को भी मान्य करता है। समस्या है ... समय।
आदर्श परीक्षणों को अस्थायी युग्मन (किसी भी क्रम में चलाया जा सकता है) के बिना स्वतंत्र होना चाहिए और किसी भी संदर्भ (उदा।, सामान्य परीक्षण डेटा) साझा नहीं करना चाहिए। इसे संभालने का सामान्य तरीका प्रत्येक परीक्षण के साथ डेटा सेट अप और फाड़ना है। कुछ सावधान विचारों के बाद, हमने इस नियम को तोड़ने का फैसला किया।
हम गैलियो (एमबीयूनीट 3) का उपयोग करते हैं, जो हमारी रणनीति का समर्थन करने वाली कुछ अच्छी सुविधाएं प्रदान करता है। सबसे पहले, यह आपको स्थिरता और परीक्षण स्तर पर निष्पादन आदेश निर्दिष्ट करने देता है। हमारे पास चार "सेटअप" फिक्स्चर हैं जिन्हें ऑर्डर किया गया है -4, -3, -2, -1। ये निर्दिष्ट क्रम में और सभी "गैर सेटअप" फिक्स्चर से पहले चलते हैं, जो डिफ़ॉल्ट रूप से 0.
हमारी वेब टेस्ट प्रोजेक्ट केवल एक चीज़ के लिए बिल्ड स्क्रिप्ट पर निर्भर करता है: एक प्रसिद्ध उपयोगकर्ता नाम/पासवर्ड । यह एक युग्मन है जिसके साथ मैं रह सकता हूं। चूंकि सेटअप परीक्षण चलते हैं, वे एक "डेटा संदर्भ" ऑब्जेक्ट बनाते हैं जिसमें डेटा (कंपनियां, उपयोगकर्ता, विक्रेता, क्लाइंट इत्यादि) के पहचानकर्ता होते हैं जिन्हें बाद में उपयोग किया जाता है (लेकिन कभी नहीं बदला जाता है) अन्य सभी फिक्स्चर में। (पहचानकर्ताओं द्वारा, मुझे जरूरी चाबियाँ नहीं हैं। ज्यादातर मामलों में हमारा वेब यूआई अद्वितीय कुंजी का पर्दाफाश नहीं करता है। हमें सही पहचानकर्ताओं के लिए नाम या अन्य प्रॉक्सी का उपयोग करके ऐप पर नेविगेट करना होगा।)
गैलियो भी आपको यह निर्दिष्ट करने की अनुमति देता है कि एक परीक्षण या स्थिरता किसी अन्य परीक्षण या स्थिरता पर निर्भर करती है। जब कोई उदाहरण विफल रहता है, तो आश्रित छोड़ दिया जाता है। इससे "कैस्केडिंग असफलताओं" को रोककर अस्थायी युग्मन की बुराई कम हो जाती है जो बहुत भ्रम पैदा कर सकती है।
प्रत्येक परीक्षण से पहले एक बार बेसलाइन परीक्षण डेटा बनाना, चीजों को बहुत तेज करता है। हालांकि, सेटअप परीक्षणों को अभी भी चलाने में 10 मिनट लग सकते हैं। जब मैं नए परीक्षणों पर काम कर रहा हूं तो मैं उन्हें अक्सर चलाने और फिर से चालू करना चाहता हूं। एक और शांत गैलियो सुविधा दर्ज करें: परिवेश। परिवेश डीबी 4 के चारों ओर एक रैपर है जो वस्तुओं को बनाए रखने के लिए एक बहुत ही सरल तरीका प्रदान करता है। हम डेटा संदर्भ को स्वचालित रूप से जारी रखने के लिए इसका उपयोग करते हैं। इस प्रकार सेटअप परीक्षण केवल डेटाबेस के पुनर्निर्माण के बीच ही चलाना चाहिए। इसके बाद आप बार-बार किसी भी या सभी अन्य फिक्स्चर चला सकते हैं।
तो परीक्षण डेटा को साफ करने के बारे में क्या?क्या हमें किसी ज्ञात राज्य से शुरू करने की ज़रूरत नहीं है? यह एक नियम है जिसे हमने इसे तोड़ने के लिए उपयुक्त पाया है। एक रणनीति जो हमारे लिए काम कर रही है, कंपनी नाम, उपयोगकर्ता नाम इत्यादि जैसी चीजों के लिए लंबे यादृच्छिक मूल्यों का उपयोग करना है। हमने पाया है कि लॉजिकल "डेटा स्पेस" के अंदर परीक्षण चलाने में बहुत मुश्किल नहीं है, जैसे कि यह टक्कर नहीं लेता अन्य डेटा में। निश्चित रूप से मैं उस दिन से डरता हूं कि मैं एक प्रेत विफल परीक्षण का पीछा करने में घंटों खर्च करता हूं ताकि यह पता चल सके कि यह कुछ डेटा टकराव है। यह एक व्यापार बंद है जो वर्तमान में हमारे लिए काम कर रहा है।
हम वाटिन का उपयोग कर रहे हैं। मुझे यह पसन्द आया। सफलता की एक और कुंजी स्कॉट बेलवेयर के बारे में बताई गई है। जैसे-जैसे हम परीक्षण करते हैं, हम अपने यूआई का एक अमूर्त मॉडल बना रहे हैं। तो बजाय इस की:
browser.TextField("ctl0_tab2_newNote").TypeText("foo");
आप हमारे परीक्षणों में यह देखेंगे:
User.NotesTab.NewNote.TypeText("foo");
यह दृष्टिकोण तीन लाभ प्रदान करता है। सबसे पहले, हम कभी जादू स्ट्रिंग दोहराते हैं। यह बहुत कमजोरता को कम करता है। दूसरा, परीक्षण पढ़ने और समझने के लिए बहुत आसान हैं। आखिरकार, हम अपने स्वयं के अवशेषों के पीछे अधिकांश वाटिन ढांचे को छुपाते हैं। दूसरे उदाहरण में, केवल टाइपटेक्स्ट एक वॉटन विधि है। ढांचे में परिवर्तन के रूप में यह बदलना आसान हो जाएगा।
उम्मीद है कि इससे मदद मिलती है।
क्या आप अपने परिनियोजन पर्यावरण पर कुछ जानकारी जोड़ सकते हैं, उदा। आपके द्वारा उपयोग किए जाने वाले वेब और/या एप्लिकेशन सर्वर, चाहे आप अपना ऐप एक WAR फ़ाइल के रूप में तैनात करते हैं, आदि? –
मैंने कुछ और विवरण जोड़े। – Haacked
आप इस एएसपी.नेट (गैरेथ_बॉल्स टिप्पणी, और मेट्रॉइडफ़ान 2002 से जवाब दोनों आरई: जावा) को टैग करना चाहते हैं) – defeated