2010-01-31 19 views
5

यूनिट और एकीकरण परीक्षण आमतौर पर विकास प्रक्रिया के हिस्से के रूप में किया जाता है। मैं में मौजूदा सिस्टम के कॉन्फ़िगरेशन में इस पद्धति का उपयोग करने के तरीकों की तलाश में हूं।इकाई/एकीकरण परीक्षण तारांकन विन्यास

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

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

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

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

उत्तर

2

यह स्पष्ट रूप से एक पुराना सवाल है, इसलिए एक अच्छा मौका है कि जब मूल उत्तर यहां पोस्ट किए गए थे कि एस्टेरिस ने यूनिट/एकीकरण परीक्षण का समर्थन नहीं किया है, जो आज करता है (हालांकि यूनिट टेस्ट फ्रेमवर्क एपीआई चालू है 12/22/09, ताकि, कम से कम, अस्तित्व में था)।

यूनिट परीक्षण ढांचा (देव सूची here से डेविड का ई-मेल) आपको सीधे एस्टरिस्क के भीतर यूनिट परीक्षण निष्पादित करने देता है। टेस्ट फ्रेमवर्क के साथ पंजीकृत हैं और सीएलआई के माध्यम से निष्पादित/देखे जा सकते हैं। चूंकि यह एस्टेरिस्क का हिस्सा है, परीक्षण निष्पादन योग्य में संकलित किए जाते हैं। आपको एनेरिस्क को --enable-dev-mode विकल्प के साथ कॉन्फ़िगर करना होगा, और मेन्यूसेलेक्ट टूल का उपयोग करके संकलन के लिए परीक्षणों को चिह्नित करना होगा (कुछ एप्लिकेशन, जैसे app_voicemail, स्वचालित रूप से परीक्षण पंजीकृत करें - लेकिन वे अल्पसंख्यक हैं)।

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

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

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

ध्यान दें कि टेस्ट सूट सेट अप करने में थोड़ा मुश्किल हो सकता है - लीफ ने टेस्ट सूट here स्थापित करने पर एक अच्छा ब्लॉग पोस्ट लिखा था।

+0

अगर मैं गलत हूं, तो मुझे सही करें, लेकिन टेस्ट सूट एस्टेरिक डेवलपर्स के लिए एस्टेरisk का परीक्षण करने के लिए है, जबकि सवाल एस्टेरisk – nafg

+0

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

3

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

मैंने एक एस्टेरिस कॉल लिखा फाइल लाइब्रेरी जो इस तरह के परीक्षण को बेहद आसान बनाता है। इसमें बहुत सारे दस्तावेज/उदाहरण भी हैं, इसे यहां देखें: http://pycall.org/। यह आपकी मदद कर सकता है।

शुभकामनाएं!

+1

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

+0

उस स्थिति में, आप एएमआई (एस्टेरisk प्रबंधक इंटरफेस) का उपयोग करना चाहेंगे, क्योंकि आप लाइव स्टेटस इवेंट्स वापस प्राप्त कर सकते हैं कि कॉल सफलतापूर्वक किया गया था या नहीं, आदि यहां दस्तावेज़ देखें: http: //www.voip-info.org/wiki/view/Asterisk+manager+API – rdegges

0

आप विशिष्ट परिदृश्यों का एक सेट बना सकते हैं और इन कॉल रिकॉर्ड करने के लिए एस्टेरisk के MixMonitor कमांड का उपयोग कर सकते हैं। यह आपको ध्वनि परीक्षणों का एक सेट स्थापित करने में सक्षम बनाता है जो इन परीक्षणों के लिए आपके सिस्टम के लिए मानक थे, और परिणाम की जांच करने के लिए स्वचालित ध्वनि फ़ाइल तुलना टूल (शायद comparing-sound-files-if-not-completely-identical से कुछ) का उपयोग करें। एक विचार है।

+0

यह काम नहीं करेगा। कॉल पर ध्वनि से निपटने के दौरान बहुत सारे चर हैं। स्थिर, समय, और अन्य मुद्दों से यह लगभग असंभव हो जाएगा। – rdegges

+0

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

0

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

एकीकरण परीक्षण के लिए, अपने आवेदन को चलाने के लिए स्क्रिप्ट linphonec, और तारांकन कंसोल को यह देखने के लिए कि यह क्या कर रहा है। आप डॉकर का उपयोग कर सकते हैं, और प्रत्येक परीक्षण के लिए अस्थायी तारांकन उदाहरणों को फायर कर सकते हैं।

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