2010-12-22 10 views
8

मैं सी #/नेट में सॉफ्टवेयर विकसित कर रहा हूं लेकिन मुझे लगता है कि प्रश्न अन्य प्रोग्रामिंग भाषाओं के लिए भी पूछा जा सकता है। रिलीज संस्करणों के बीच आप अपने सॉफ्टवेयर के प्रदर्शन का परीक्षण कैसे करते हैं? मुझे कुछ और बताएं।सॉफ्टवेयर रिलीज संस्करणों के बीच कोड के प्रदर्शन का परीक्षण कैसे करते हैं?

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

एक तरीका मैं सोच सकता हूं कि मुख्य शाखा (जिसे वर्तमान रिलीज के लिए उपयोग किया जाता है) और पहले रिलीज शाखा में समान प्रदर्शन परीक्षण जोड़ना है और फिर प्रदर्शन की तुलना करना है। मुझे लगता है कि ऐसा करने में कुछ दर्द शामिल है, लेकिन यह संभव है।

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

अन्य विचारों के लिए धन्यवाद। सी #/.NET विशिष्ट उत्तरों पसंद करेंगे।

संपादित करें 1: This और this कुछ हद तक संबंधित प्रश्न हैं।

+0

यह एक अच्छा विकी प्रवेश होगा। –

+0

मैं इसके साथ ठीक हूं, लेकिन यह सुनिश्चित नहीं करता कि यह कैसे करें। मुझे लगता है कि मेरे पास पर्याप्त अंक नहीं हो सकते हैं। एक मॉडरेटर इसे एक विकी बना सकता है। –

+0

कुछ अच्छे विकल्प मिल गए। चर्चा के लिए धन्यवाद। –

उत्तर

3

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

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

+0

इस मार्ग पर जाने का फैसला किया। धन्यवाद। –

1

आप प्रत्येक नई रिलीज के लिए परीक्षण परिणामों को स्रोत नियंत्रित टेक्स्ट फ़ाइल में जोड़ सकते हैं। इससे आपको हर संस्करण के प्रदर्शन का आसानी से सुलभ इतिहास मिल जाएगा।

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

2

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

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

हम SQL अनुप्रयोगों के साथ हमारे अनुप्रयोगों में ऐसा करते हैं। हमारे पास किसी भी एसक्यूएल कॉल को अधिकतम समय के लिए सीमा तय करना चाहिए और यदि थ्रेसहोल्ड पर SQL कॉल है तो हम इसे चेतावनी के रूप में लॉग करते हैं। हम एक ही http अनुरोध के साथ एक ही http अनुरोध में एसक्यूएल कॉल की संख्या को भी ट्रैक करते हैं। आपका लक्ष्य समय के साथ दहलीज को कम करना चाहिए।

आप इन परीक्षणों को उत्पादन में शामिल करने के लिए #if अनुभागों में लपेट सकते हैं, लेकिन यह उत्पादन में इन्हें वास्तव में उपयोगी भी हो सकता है।

0

हम एक विशेष सेटिंग है कि एक उपयोगकर्ता (या परीक्षक) सक्षम कर सकते हैं। हम इसे सक्षम करते हैं, यह एक CSV फ़ाइल उत्पन्न करता है जिसे हम Excel में फ़ीड कर सकते हैं और प्रदर्शन रिपोर्ट देख सकते हैं।

यह निश्चित संचालनों और कितनी देर तक वे ले लिया के अलग-अलग मायने रखता है: रिपोर्ट करेंगे। एक्सेल इसे हमारे लिए एक अच्छा दृश्य तरीके से दिखाता है।

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

सौंदर्य भी आप अगर वे प्रदर्शन के मुद्दों है कि आप पुन: पेश नहीं कर सकते का सामना कर रहे ग्राहक से अच्छी प्रतिक्रिया मिल सकता है।

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