6

स्वचालित परीक्षण वास्तविक समय परियोजना स्थिति को प्रतिबिंबित करने के लिए तेज़ होना चाहिए। विचार यह है कि:स्वचालित परीक्षणों को तेज़ रखने के लिए कैसे?

  1. रिपोजिटरी स्वचालित निर्माण के लिए किसी भी प्रतिबद्धता के बाद (जितना तेज़ किया जा सकता है) किया जाता है।
  2. यदि स्वचालित स्वचालित परीक्षण शुरू हो गए हैं। तेज़ होना चाहिए।

यह पता लगाने का सबसे अच्छा तरीका है कि आपके परिवर्तन कुछ भी तोड़ते हैं या नहीं।

सबसे पहले ऐसा लगता था कि तेजी से निर्माण करना कठिन है, लेकिन हम इसे लगभग 100 सेकंड तक रखने में कामयाब रहे। 105 (!) परियोजनाओं के समाधान के लिए (एमएसवीएस 2008 सी #)।

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

हमारे एकीकरण परीक्षण वेब/जीत सेवाओं (1 9 अब तक) का उपयोग करते हैं जिन्हें नवीनतम परिवर्तनों को दर्शाने के लिए पुन: नियोजित करने की आवश्यकता है। इसमें पुनरारंभ करने वाली सेवाएं और बहुत सी एचडीडी आर/डब्ल्यू गतिविधि शामिल है।

कोई भी अनुभव कर सकता है कि कैसे स्वचालित परीक्षण चरण को तेज करने के लिए पर्यावरण और कार्य प्रवाह को व्यवस्थित/अनुकूलित किया जा सकता है। "निम्न स्तर" बाधाएं और कामकाज क्या हैं।

पीएस किताबें और व्यापक लेख स्वागत है, लेकिन वास्तविक दुनिया के कामकाजी समाधानों की बहुत सराहना की जाती है।

उत्तर

5

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

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

  1. परीक्षण, या परीक्षण की तैनाती अनुकूलित करें:

    आपके पास दो विकल्प।

  2. अक्सर उन्हें न करें।

मेरे अनुभव में, एकीकरण वातावरण होना बेहतर है जो सही है, और बग पाता है, और अंतिम उत्पादन वातावरण को पर्याप्त रूप से दर्शाता है। मैं आमतौर पर विकल्प 2 (1) चुनता हूं।

यह कहना बहुत मोहक है कि हम हर समय सब कुछ परीक्षण करेंगे, लेकिन वास्तविकता में आपको एक रणनीति की आवश्यकता है।

(1) को छोड़कर अगर वहाँ कीड़े का भार जो केवल एकीकरण में पाए जाते हैं जो मामले में, कर रहे हैं, सब कुछ भूल जाते हैं कि मैंने कहा :-)

+0

पर एक नज़र डालेगा, हम एक राज्य में हैं, जब एकीकरण परीक्षण में बहुत अधिक समय नहीं लगता है, लेकिन उन्हें तैनात करना एक हत्यारा है। इस प्रकार हम इस समय (1) कोशिश करते हैं। – Dandikas

3

हम .NET और NUnit का उपयोग करते हैं, जो श्रेणियों का समर्थन करता है (एक विशेषता जिसे आप परीक्षण पर डाल सकते हैं)। फिर हम लंबे समय तक चलने वाले परीक्षण करते हैं और उन्हें नाइटली श्रेणी में डाल देते हैं ताकि वे केवल रात के निर्माण के दौरान दौड़ सकें और निरंतर निर्माण में नहीं कि हम तेजी से दौड़ना चाहते हैं।

+0

समय लेने वाले परीक्षणों से बचने के कई तरीके हैं। फिलहाल हम किसी भी संभावित अनुकूलन को करने की कोशिश करते हैं और केवल तभी परीक्षणों में देरी शुरू करते हैं, जब आप "मेरे परिवर्तनों को तोड़ने के लिए कुछ भी जवाब देते हैं" का जवाब खो देते हैं। – Dandikas

+0

यह वही है जो हम करते हैं। 30 सेकंड (अंगूठे का नियम) परीक्षण के लिए श्रेणी "नाइटबिल्डटेस्ट" श्रेणी में हैं। अन्य हर समय सक्रिय हैं। –

0

बिल्डबॉट: http://buildbot.net/trac यदि आप निरंतर एकीकरण (स्वचालित परीक्षण) कर रहे हैं तो मैं इसे पर्याप्त अनुशंसा नहीं कर सकता। त्वरित कॉन्फ़िगरेशन के साथ हर बार हमारे यूनिट परीक्षण चलाए जाते हैं, जबकि प्रतिबद्धता होती है, और लंबे समय तक एकीकरण परीक्षण दिन के दौरान समय-समय पर चलाया जाता है (पिछली बार मैंने चेक किया था, लेकिन इसे आसानी से बदला जा सकता है)।

+0

हम CC.net का उपयोग करते हैं, लेकिन मैं buildbot – Dandikas

1

मैंने Turbo-Charged Test Suites पर एक प्रेजेंटेशन एक साथ रखा है। दूसरा आधा पर्ल डेवलपर्स के लिए है, लेकिन पहली छमाही आपके लिए उपयोगी साबित हो सकती है। मुझे पता है कि यह उचित है या नहीं, यह जानने के लिए आपके सॉफ़्टवेयर के बारे में पर्याप्त जानकारी नहीं है।

असल में, यह परीक्षण सूट में डेटाबेस उपयोग को तेज करने और पुस्तकालयों के निरंतर पुनः लोड होने से बचने के लिए एक ही प्रक्रिया में परीक्षण चलाने के लिए तकनीकों से संबंधित है।

1

मैं कई उच्च स्तर अंत परीक्षण समाप्त करने के लिए होने का सुझाव चाहते हैं, और यदि उनमें से कोई भी विफल रहता है, तो 'उच्च रिज़ॉल्यूशन' परीक्षण चलाएं।

फोन पर तकनीकी सहायता करने का सोचें ...

आपके कंप्यूटर काम करता है? यदि हां, तो किया गया। यदि नहीं, तो क्या आपका कंप्यूटर बिल्कुल चालू है? ...

मेरे यूनिट परीक्षण के लिए, मेरे पास कुछ तेज परीक्षण हैं जैसे "मेरा कंप्यूटर काम करता है?" अगर वे पास करते हैं, तो मैं अपने बाकी सूट को निष्पादित नहीं करता हूं। यदि इनमें से कोई भी परीक्षण विफल रहता है, तो मैं निचले स्तर के परीक्षणों के संबंधित सूट निष्पादित करता हूं जो मुझे उस विफलता में उच्च रिज़ॉल्यूशन व्यू देता है।

मेरा विचार यह है कि शीर्ष स्तर के परीक्षणों का एक व्यापक सूट चलाने से आधे सेकेंड से कम समय लेना चाहिए।

यह दृष्टिकोण मुझे गति और विस्तार दोनों देता है।

+0

निश्चित रूप से इसके साथ समस्या यह है कि यदि आपके शीर्ष-स्तरीय परीक्षण कुछ ऐसी स्थिति को याद करते हैं जिन्हें परीक्षण विफल करना चाहिए। अपने समानता का उपयोग करने के लिए, "क्या आपका कंप्यूटर काम करता है?" - क्या होगा यदि माउस टूटा हुआ है - यह * परीक्षण में विफल होना चाहिए, लेकिन "कंप्यूटर काम करता है" – dbr

+0

मैं सहमत हूं, परीक्षणों को ध्यान से समाप्त करने के लिए अपना अंत चुनें, और चलाएं जब आप सोते हैं तो सभी विवरण परीक्षण। यदि आपके विवरण परीक्षण एक बग दिखाते हैं कि आपके अंत परीक्षणों का अंत नहीं होता है, तो देखें कि आप अंत परीक्षणों के अंत में कैसे सुधार कर सकते हैं। कहीं शुरू करें, फिर सुधार करें। – shapr

1

तथ्य वातावरण होना चाहिए कि की स्थापना की जो काफी धीमी (एटीएम ~ 1000 सेकंड) है!

कम से कम आप जानते हैं कि कहां ध्यान केंद्रित करना है ... क्या आप जानते हैं कि वह समय कहां खर्च किया जा रहा है?

जाहिर है कि कोई समाधान यहां विनिर्देशों पर निर्भर करेगा।

  1. अधिक मशीनों का उपयोग करें:

    तीन समाधान है कि मैं इस स्थिति की इस तरह का उपयोग किया है रहे हैं। शायद आप अपनी सेवाओं को दो मशीनों पर विभाजित कर सकते हैं? क्या इससे आपको अपना सेटअप समय 1/2 में छोड़ देगा?

  2. तेज मशीनों का उपयोग करें? एक परिस्थिति में मुझे पता है कि टीम ने हार्डवेयर (कई सीपीयू, फास्ट RAID स्टोरेज, अधिक रैम, काम) को अपग्रेड करके 18 घंटे से 1 घंटे तक कुछ निष्पादन परीक्षण को निष्पादित करने के लिए अपने एकीकरण परीक्षण को काट दिया है। निश्चित रूप से यह उन्हें $ 10k अमरीकी डालर के आदेश पर खर्च किया लेकिन यह इसके लायक था।

  3. एकीकरण परीक्षण के लिए मेमोरी डेटाबेस में उपयोग करें। हां, मुझे पता है कि आप असली डेटाबेस के खिलाफ भी परीक्षण करना चाहते हैं, लेकिन शायद आप तेजी से प्रतिक्रिया प्राप्त करने के लिए शुरुआत में स्मृति संस्करण के खिलाफ परीक्षण चला सकते हैं।

1

स्थिति के लिए सबसे अच्छा समाधान पर्यावरण की भूत छवियों का बैक अप लेना और पर्यावरण को रीसेट करने से पहले छवि को पुनर्स्थापित करना है। यह समय बिताए जाने के लिए और अधिक समझ जाएगा।

संबंधित मुद्दे