2012-08-30 8 views
14

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

हमारे पास यूनिट परीक्षण हैं (विशेष रूप से कोड पायथन के तहत किया जाता है और हम py.test का उपयोग करते हैं), पहला विचार यह कहना है कि यदि फ़ंक्शन एक्स एमएस से कम में निष्पादित नहीं होता है, तो परीक्षण को विफल के रूप में चिह्नित करें (या एक चेतावनी उठाओ)।

हालांकि, यह खतरनाक लगता है (उदाहरण के लिए सभी कंप्यूटर एक ही गति नहीं हैं), और मुझे यह भी सुनिश्चित नहीं है कि यूनिट परीक्षण का काम है।

क्या किसी को भी इसी तरह की स्थिति का सामना करना पड़ा है? मेरे लिए गति एक विशेषता है, और मैं यह सुनिश्चित करना चाहता हूं कि कोड विकसित होने के साथ भविष्य में ऐसी सुविधा खो नहीं जाए।

यदि यूनिट परीक्षण उत्तर नहीं है, तो आप कौन से अन्य विकल्पों की सिफारिश करेंगे?

धन्यवाद

उत्तर

4

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

2

आप एक समर्पित निर्माण/परीक्षण सर्वर, या devs के बीच बराबर हार्डवेयर है, तो यह एमएस में एक समय सीमा के लिए ठीक है। पुनरावर्तनीयता महत्वपूर्ण है - आप देवताओं को उनकी मशीनों पर "बेसलाइन" परीक्षण चलाने की अनुमति देने में कुछ लिखने में सक्षम हो सकते हैं जिसके बाद के परिणामों की तुलना की जाती है।

pyunitperf मॉड्यूल उपलब्ध है जिसमें समय सीमा के साथ-साथ लोड परीक्षण भी शामिल है। इसे लंबे समय तक अपडेट नहीं किया गया है (200 9) लेकिन अगर आप अपना खुद का रोल करने जा रहे हैं तो शुरू करने के लिए एक अच्छी जगह होगी।

और याद रखें कि एमएस में एक परीक्षण समय आपको कुछ भी बताने वाला नहीं है - लेकिन जब तक आप केवल संशोधनों में प्रदर्शन की तुलना करने के लिए इसका उपयोग कर रहे हैं, तो यह ठीक होना चाहिए।

+0

हां, हम एक समर्पित परीक्षण सर्वर करते हैं, हालांकि, हम डेवलपर्स को अपनी मशीनों पर परीक्षण चलाने के लिए भी प्रोत्साहित करते हैं, और मैं नहीं चाहता कि उन्हें लगता है कि उन्होंने रिलीज तोड़ दिया क्योंकि शायद उनकी मशीनें थोड़ी सी लोड हो गई हैं। यद्यपि आपने कहा था, प्रतिकृति एक अच्छा विचार प्रतीत होता है। धन्यवाद। –

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