Erlang 21 - 2. Common Test Basics

2 आम टेस्ट मूल बातें




erlang

2 आम टेस्ट मूल बातें

२.१ सामान्य

Common Test फ्रेमवर्क एक ऐसा उपकरण है जो किसी भी प्रकार की लक्ष्य प्रणालियों के परीक्षण मामलों के कार्यान्वयन और स्वचालित निष्पादन का समर्थन करता है। Common Test सभी परीक्षण- और सत्यापन गतिविधियों में उपयोग किया जाने वाला मुख्य उपकरण है जो एर्लांग / ओटीपी सिस्टम विकास और रखरखाव का हिस्सा है।

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

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

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

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

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

२.२ टेस्ट सूट संगठन

टेस्ट सूट परीक्षण निर्देशिकाओं में आयोजित किए जाते हैं और प्रत्येक परीक्षण सूट में एक अलग डेटा निर्देशिका हो सकती है। आमतौर पर, इन फ़ाइलों और निर्देशिकाओं को स्रोत कोड के अन्य रूपों के समान संस्करण-नियंत्रित किया जाता है (संभवतः एक संस्करण नियंत्रण प्रणाली जैसे जीआईटी या सबमिशन)। हालाँकि, Common Test खुद को संभव फ़ाइल या निर्देशिका संस्करणों पर कोई आवश्यकता नहीं डालता है (या कोई जागरूकता नहीं है)।

2.3 समर्थन पुस्तकालय

समर्थन पुस्तकालयों में ऐसे कार्य होते हैं जो सभी परीक्षण सूट के लिए उपयोगी होते हैं, या एक विशिष्ट कार्यात्मक क्षेत्र या उपतंत्र में परीक्षण सूट के लिए। Common Test ढांचे द्वारा प्रदान की जाने वाली सामान्य सहायता पुस्तकालयों, और एर्लांग / ओटीपी द्वारा प्रदान की गई विभिन्न पुस्तकालयों और अनुप्रयोगों के अलावा, अनुकूलित (उपयोगकर्ता विशिष्ट) समर्थन पुस्तकालयों की आवश्यकता भी हो सकती है।

2.4 सूट और टेस्ट केस

परीक्षण सूट (परीक्षण मामलों के सेट) या व्यक्तिगत परीक्षण मामलों को चलाकर किया जाता है। एक परीक्षण सूट को <suite_name>_SUITE.erl नाम के <suite_name>_SUITE.erl मॉड्यूल के रूप में लागू किया गया है जिसमें कई परीक्षण मामले हैं। एक परीक्षण मामला एक एरलंग फ़ंक्शन है जो एक या अधिक चीजों का परीक्षण करता है। परीक्षण मामला सबसे छोटी इकाई है जिसे Common Test टेस्ट सर्वर डील करता है।

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

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

परीक्षण सूट मॉड्यूल Common Test टेस्ट सर्वर द्वारा निर्दिष्ट callback interface अनुरूप होना चाहिए। विवरण के लिए, अनुभाग Writing Test Suites

एक परीक्षण के मामले को सफल माना जाता है यदि वह कॉलर पर लौटता है, तो कोई फर्क नहीं पड़ता कि रिटर्न मूल्य क्या है। हालाँकि, कुछ वापसी मानों का विशेष अर्थ इस प्रकार है:

  • {skip,Reason} इंगित करता है कि परीक्षण मामला छोड़ दिया गया है।
  • {comment,Comment} परीक्षण मामले के लिए लॉग में एक टिप्पणी मुद्रित करता है।
  • {save_config,Config} Common Test टेस्ट सर्वर को अगले टेस्ट केस में {save_config,Config} करता है।

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

session(_Config) ->
    {started,ServerId} = my_server:start(),
    {clients,[]} = my_server:get_clients(ServerId),
    MyId = self(),
    connected = my_server:connect(ServerId, MyId),
    {clients,[MyId]} = my_server:get_clients(ServerId),
    disconnected = my_server:disconnect(ServerId, MyId),
    {clients,[]} = my_server:get_clients(ServerId),
    stopped = my_server:stop(ServerId).

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

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

2.5 बाहरी इंटरफेस

Common Test टेस्ट सर्वर के लिए आवश्यक है कि टेस्ट सूट निम्नलिखित अनिवार्य या वैकल्पिक कॉलबैक फ़ंक्शन को परिभाषित और निर्यात करे:

all()

सुइट में सभी परीक्षण मामलों और समूहों की सूची देता है। (अनिवार्य)

suite()

सुइट के लिए गुणों को लौटाने के लिए उपयोग किया जाने वाला सूचना फ़ंक्शन। (वैकल्पिक)

groups()

परीक्षण मामले समूहों की घोषणा के लिए। (वैकल्पिक)

init_per_suite(Config)

सुइट स्तर कॉन्फ़िगरेशन फ़ंक्शन, पहले परीक्षण मामले से पहले निष्पादित किया गया। (वैकल्पिक)

end_per_suite(Config)

सुइट स्तर कॉन्फ़िगरेशन फ़ंक्शन, अंतिम परीक्षण मामले के बाद निष्पादित किया गया। (वैकल्पिक)

group(GroupName)

परीक्षण समूह के लिए गुणों को लौटाने के लिए उपयोग किया जाने वाला सूचना फ़ंक्शन। (वैकल्पिक)

init_per_group(GroupName, Config)

समूह के लिए कॉन्फ़िगरेशन फ़ंक्शन, पहले परीक्षण मामले से पहले निष्पादित किया गया। (वैकल्पिक)

end_per_group(GroupName, Config)

एक समूह के लिए कॉन्फ़िगरेशन फ़ंक्शन, अंतिम परीक्षण मामले के बाद निष्पादित किया गया। (वैकल्पिक)

init_per_testcase(TestCase, Config)

एक टेस्टकेस के लिए कॉन्फ़िगरेशन फ़ंक्शन, प्रत्येक परीक्षण मामले से पहले निष्पादित। (वैकल्पिक)

end_per_testcase(TestCase, Config)

एक टेस्टकेस के लिए कॉन्फ़िगरेशन फ़ंक्शन, प्रत्येक परीक्षण मामले के बाद निष्पादित किया गया। (वैकल्पिक)

प्रत्येक परीक्षण मामले के लिए, Common Test परीक्षण सर्वर निम्नलिखित कार्यों की अपेक्षा करता है:

Testcasename ()

सूचना फ़ंक्शन जो परीक्षण केस गुणों की एक सूची देता है। (वैकल्पिक)

Testcasename (कॉन्फ़िग)

परीक्षण मामला कार्य करता है।