2011-10-26 16 views
9

मैं प्रदर्शन परीक्षणों को स्वचालित करने की सोच रहा हूं, वैसे ही जो हमारे पास वर्तमान में यूनिट परीक्षणों के साथ है।प्रदर्शन परीक्षण स्वचालित करने और सीआई के साथ एकीकृत करने के लिए कैसे?

मुझे पता है कि जेएमटर जैसे टूल्स के साथ प्रदर्शन परीक्षण कैसे चलाएं या एप्लिकेशन के विशिष्ट हिस्सों को ट्रिगर करने के लिए अपना कोड लिखकर। मुझे पता है कि संसाधनों के बारे में जानकारी इकट्ठा करने के लिए समय, jvisualvm, nmon या दूसरों का उपयोग कैसे करें।

मैं आगे बढ़ना चाहता हूं और एक प्रदर्शन परीक्षण लिखना चाहता हूं, अगर यह कुछ पंक्तियों (निष्पादन समय, स्मृति या सीपीयू खपत ...) को पार करता है तो असफल हो जाएगा। उसके बाद मेरा सीआई सर्वर (जेनकींस) नियमित आधार पर परीक्षण चलाएगा ताकि यह सुनिश्चित किया जा सके कि प्रदर्शन अच्छा रहता है।

यह जटिल है क्योंकि प्रदर्शन हार्डवेयर पर निर्भर करता है, और वर्तमान में मैं इसे करता हूं, इसके लिए परिणामों की मानव व्याख्या की आवश्यकता होती है कि यह संतोषजनक है या नहीं।

क्या आप किसी भी उपकरण या ढांचे (यदि संभव जावा आधारित) जानते हैं जो इस तरह से प्रदर्शन परीक्षण स्वचालित करने में मदद करते हैं? यदि नहीं, तो क्या आपके पास सलाह देने के लिए कुछ अच्छा अभ्यास है?

धन्यवाद।

+0

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

+0

दोनों, और कभी-कभी दोनों एक ही समय में। उदाहरण के लिए, मेरे पास एक ऐसा मामला है जहां हमारे पास एक विंडोज क्लाइंट है जो सर्वर से संचार करता है। मैं यह सुनिश्चित करना चाहता हूं कि यह सर्वर पर बहुत अधिक भार नहीं डालता है। तो यह क्लाइंट के कई उदाहरण शुरू करने का संकेत देगा, और सीपीयू खपत, मेमोरी जैसे सर्वर साइड चीजों पर माप देगा ... –

उत्तर

2

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

यदि आपको स्वचालित रूप से व्यक्तिपरक प्रदर्शन परीक्षण की आवश्यकता है, तो मुझे डर है कि इसे बनाना मुश्किल होगा।

+0

तो मुझे लगता है कि आप निष्पादित करने के लिए कोड के टुकड़े द्वारा उठाए गए समय को मापते हैं, और "विफल()" को कॉल करते हैं यह कुछ मूल्य से ऊपर है। स्मृति खपत के बारे में क्या? –

+0

यह सही है। हमें स्मृति खपत को ट्रैक करने की आवश्यकता नहीं थी। –

0

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

3

यदि आपका परीक्षण व्यक्तिपरक है, तो इसे स्वचालित करने के लिए, आपको कुछ विषयपरकता "बाहर" लेनी होगी। इसका मतलब है, कुछ थ्रेसहोल्ड सेट करें जिन्हें आप स्वीकार्य और स्वीकार्य मानते हैं। देखें कि झंडा फेंकने का कोई तरीका है या जेनकिंस किस चीज को उठा सकता है। यदि आपके पास ये सीमाएं हैं, तो आप अपनी इच्छित स्वचालन प्राप्त करने का एक बेहतर मौका खड़े हैं।

+0

मैं उससे सहमत हूं। मुझे लगता है कि इस अभ्यास का हिस्सा यह स्पष्ट करना है कि मैं कौन सी सीमाएं निर्धारित करना चाहता हूं। –

2

जेनकिंस में "प्रदर्शन प्लगइन" है जो जेएमटर और जुनीट से परिणाम कैप्चर करता है। "जेनकिन्स प्रबंधित करें" के तहत "प्लगइन्स" के अंतर्गत "उपलब्ध प्लगइन्स" में इसकी खोज करें

+0

धन्यवाद। ऐसा लगता है कि यह थ्रेसहोल्ड की अनुमति देता है। यह मेरे लिए एक अच्छी शुरुआत होगी। –

1

स्वचालित रूप से पास या विफल होने के लिए, आप बूलियन की संख्या के संदर्भ में पास/असफल मानदंड को परिभाषित करने में सक्षम होना चाहिए। यह औसत प्रतिक्रिया समय हो सकता है, या थोड़ा अधिक उन्नत सांख्यिकीय विश्लेषण, उदा। प्रवृत्ति समारोह या मानक विचलन।

मुझे कोई उपकरण नहीं पता जो क्लाइंट- और सर्वर-दोनों पक्षों के लिए इस तरह की चीजें करता है।

वहां सीमित संख्या में टूल हैं जो क्लाइंट-साइड परिणामों के लिए ऐसा कर सकते हैं।

Jenkins Performance Plugin के साथ आप कॉन्फ़िगर किए गए त्रुटि थ्रेसहोल्ड का उपयोग करके एक बिल्ड को पास/विफल करने में सक्षम होना चाहिए। यह परीक्षण परिणामों का बहुत ही बुनियादी स्वचालित सत्यापन है और निर्माण को पास या विफल करने का एक तरीका है।

जब मैं इसी तरह की चुनौती में आया, तो मैंने प्रदर्शन प्लगइन का मूल्यांकन किया और यह प्रदान की गई कार्यक्षमताओं से पूरी तरह से संतुष्ट नहीं था। इस तरह मैंने जावा-आधारित Lightning प्रोजेक्ट पर काम करना शुरू कर दिया। यह आपको जेएमटर परिणामों का विश्लेषण करने और रेल के पास स्वचालित रूप से बिल्ड करने की क्षमता देता है, उदाहरण के आधार परविशेष लेनदेन प्रकार, या मानक विचलन के लिए औसत प्रतिक्रिया समय।

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

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