ऐसी परियोजना में जहां गैर-कार्यात्मक आवश्यकताएं होती हैं जो एक विशिष्ट कार्रवाई के लिए अधिकतम निष्पादन समय निर्दिष्ट करती हैं, क्यूए को सटीक भार के तहत सटीक हार्डवेयर का उपयोग करते हुए एक समर्पित मशीन पर इस क्रिया के प्रदर्शन की जांच करनी चाहिए, दोनों आवश्यकताओं में निर्दिष्ट हार्डवेयर और लोड।
दूसरी ओर, स्रोत कोड में कुछ गलत परिवर्तन प्रदर्शन को गंभीर रूप से प्रभावित कर सकते हैं। स्रोत कोड तक पहुँचने से पहले और क्यूए विभाग द्वारा सत्यापित होने से पहले , इस नकारात्मक प्रभाव को ध्यान में रखते हुए , क्यूए विभाग द्वारा इस मुद्दे की रिपोर्टिंग के समय खो जाने के मामले में फायदेमंद हो सकता है, और डेवलपर द्वारा इसे ठीक करने के बाद बाद में कई कमेंट किए जाते हैं।
ऐसा करने के लिए, क्या यह एक अच्छा विचार है:
इकाई परीक्षण का उपयोग करने के समय ही action² को क्रियान्वित करने में खर्च की एक विचार है करने के लिए एन बार,
C # में विशेषता के माध्यम से प्रति-परीक्षण टाइमआउट का उपयोग करने के लिए
[TestMethod, Timeout(200)]
?
मैं इस दृष्टिकोण के साथ कई समस्याओं की उम्मीद करता हूं:
वैचारिक रूप से , यूनिट परीक्षण वास्तव में इसके लिए नहीं हैं: उनसे एक कोड के एक छोटे हिस्से का परीक्षण करने की अपेक्षा की जाती है, इससे अधिक कुछ नहीं: न तो कार्यात्मक आवश्यकता की जांच, न ही एकीकरण परीक्षण, और न ही प्रदर्शन परीक्षण।
क्या विज़ुअल स्टूडियो में यूनिट टेस्ट टाइमआउट वास्तव में मापा जाता है, जिसे मापने की अपेक्षा की जाती है, यह ध्यान में रखते हुए कि इन परीक्षणों के लिए इनिशियलाइज़ेशन और क्लीनअप कोई भी नहीं हैं या परिणामों को प्रभावित करने के लिए बहुत कम हैं?
इस तरह से प्रदर्शन को मापना बदसूरत है। स्वतंत्र रूप से हार्डवेयर, लोड आदि के किसी भी मशीन पर एक बेंचमार्क चलाना एक बेंचमार्क करने जैसा है जो दिखाता है कि एक डेटाबेस उत्पाद हमेशा दूसरे से तेज होता है। दूसरी ओर, मैं उन इकाई परीक्षणों की निश्चित परिणाम होने की उम्मीद नहीं करता, न ही कुछ ऐसा जो क्यूए विभाग द्वारा उपयोग किया जाता है । उन यूनिट परीक्षणों का उपयोग केवल अपेक्षित प्रदर्शन के बारे में एक सामान्य विचार देने के लिए किया जाएगा , और अनिवार्य रूप से डेवलपर को सचेत करने के लिए कि उसका अंतिम संशोधन कुछ टूट गया, प्रदर्शन को बुरी तरह प्रभावित कर रहा है ।
टेस्ट ड्रिवेन डेवलपमेंट (टीडीडी) उन परीक्षणों के लिए असंभव है। कोड लागू करना शुरू करने से पहले, पहली जगह में यह कैसे विफल होगा?
बहुत से प्रदर्शन परीक्षण परीक्षणों को चलाने के लिए आवश्यक समय को प्रभावित करेंगे, इसलिए यह दृष्टिकोण केवल छोटी क्रियाओं तक सीमित है।
उन समस्याओं को ध्यान में रखते हुए, मुझे अभी भी इस तरह के यूनिट परीक्षणों का उपयोग करना दिलचस्प लगता है अगर क्यूए विभाग द्वारा वास्तविक प्रदर्शन मैट्रिक्स के साथ जोड़ा जाए।
क्या मै गलत हु? क्या ऐसी अन्य समस्याएं हैं जो इसके लिए यूनिट परीक्षणों का उपयोग करने के लिए पूरी तरह से अस्वीकार्य हैं?
यदि मैं गलत हूं, तो डेवलपर को सचेत करने का सही तरीका क्या है कि स्रोत कोड स्रोत नियंत्रण तक पहुंचने से पहले स्रोत कोड में गंभीर रूप से प्रभावित प्रदर्शन, और क्यूए विभाग द्वारा सत्यापित है?
¹ वास्तव में, यूनिट परीक्षणों से केवल तुलनीय हार्डवेयर प्रदर्शन वाले डेवलपर पीसी पर चलने की उम्मीद की जाती है, जो सबसे तेज मशीनों के बीच के अंतर को कम करता है जो प्रदर्शन परीक्षण को कभी भी विफल नहीं कर पाएगा, और सबसे धीमी मशीनें जो इसे पारित करने में कभी सफल नहीं होंगी।
Code कार्रवाई से, मेरा मतलब कोड का एक छोटा टुकड़ा है जो चलाने के लिए कुछ मिलीसेकेंड खर्च करता है।