top 15 popular specflow interview questions
सबसे अक्सर पूछे जाने वाले अटकलें साक्षात्कार प्रश्न और उत्तर:
हमारे पिछले अटैची ट्यूटोरियल पर जानकारी दी टेस्ट रिपोर्ट और चुनिंदा परीक्षण कैसे उत्पन्न करें ।
इस ट्यूटोरियल में, हम उनके उत्तरों के साथ सबसे लोकप्रिय स्पेकफ्लो इंटरव्यू प्रश्न पर एक नज़र डालेंगे।
के माध्यम से पढ़ें कम्पलीट स्पेकफ्लो ट्रेनिंग सीरीज अवधारणा की एक आसान समझ के लिए। Specflow .NET फ्रेमवर्क में BDD प्रथाओं का समर्थन करने वाला एक उपकरण है। यह एक ओपन-सोर्स फ्रेमवर्क है जो गीथहब पर होस्ट किया गया है। यह .NET के लिए ATDD (स्वीकृति परीक्षण चालक विकास) का उपयोग करने में सहायता करता है।
शीर्ष अटकलें साक्षात्कार प्रश्न और उत्तर
नीचे सूचीबद्ध, आपकी आसान समझ के लिए उत्तर और उदाहरण के साथ सबसे लोकप्रिय अटैची साक्षात्कार प्रश्न हैं।
क्यू # 1) फ़ीचर फ़ाइल और बाइंडिंग फ़ाइलों के बीच अंतर क्या है?
उत्तर: Specflow में BDD परीक्षण लिखने के 2 प्रमुख घटक हैं, अर्थात्
- फ़ीचर फ़ाइलें: जिनमें डोमेन विशिष्ट भाषा (डीएसएल) में परिदृश्य के रूप में लिखे गए परीक्षण हैं और अनिवार्य रूप से सादे अंग्रेजी फाइलें हैं जो परियोजना के सभी हितधारकों के लिए उपयुक्त और समझने योग्य हैं। वास्तव में, वे वास्तविक परीक्षण फाइलें हैं और बाइंडिंग या चरण परिभाषाओं के माध्यम से व्याख्या की जाती है।
- चरण बाइंडिंग: ये कोड फाइलें परीक्षण निष्पादन के पीछे वास्तविक खुफिया तर्क हैं। एक परिदृश्य में प्रत्येक चरण (जो कि फीचर फ़ाइल का एक हिस्सा है) एक स्टेप डेफिनिशन फ़ाइल को बांधता है, जो वास्तव में परीक्षण चलने पर निष्पादित होता है।
इसलिए, फीचर फाइल और स्टेप डेफिनेशन या बाइंडिंग दोनों का एक संयोजन टेस्ट को चलाने के लिए Specflow (या किसी अन्य BDD) फ्रेमवर्क के लिए संभव बनाता है।
Q # 2) BDD क्या है और यह TDD या ATDD से कैसे भिन्न है?
उत्तर: ये सभी तीन शब्द यानी BDD, TDD और ATDD सामान्य रूप से टेस्ट ड्रिवेन डेवलपमेंट से संबंधित हैं, लेकिन ये वास्तव में बहुत सारे तरीकों से भिन्न हैं
- टीडीडी: टीडीडी मूल रूप से एक डेवलपर के दृष्टिकोण से परीक्षण बना रहा है। सरल शब्दों में, यह परीक्षणों का एक सेट है जो एक डेवलपर अपना कोड पास (या विफल) बनाने के लिए लिखता है। यह अनिवार्य रूप से आपके कोड को विफल करने की एक तकनीक है जब तक कि सभी विशिष्ट आवश्यकताओं को संबोधित नहीं किया जाता है। यह मूल रूप से कोड के लिए एक रिफ्लेक्टर चक्र का पालन करता है जब तक कि परीक्षण सभी हरे नहीं होते।
- BDD: BDD बारीकी से TDD से संबंधित है, लेकिन 'बाहर' के परिप्रेक्ष्य से अधिक प्रासंगिक है जिसका वास्तव में मतलब है कि BDD परीक्षण व्यवसाय / उत्पाद आवश्यकताओं से अधिक बंधा हुआ है और परिदृश्य के रूप में सिस्टम के वांछित व्यवहार को परिभाषित करता है। अधिक दानेदार इकाई परीक्षण स्तर पर विपरीत सौदों में टीडीडी। इसके अलावा, BDD विनिर्देश आम तौर पर सादे अंग्रेजी पाठ होते हैं जो समझना आसान है और परियोजना के सभी हितधारकों के बीच अधिक से अधिक सहयोग की अनुमति देता है।
- ATDD: स्वीकृति परीक्षण-संचालित विकास का ध्यान उपयोगकर्ता की स्वीकृति के दृष्टिकोण से अधिक है। ये परीक्षण ग्राहक व्यवहार को भी परिभाषित करते हैं लेकिन एकीकरण या अंतिम उत्पाद के दृष्टिकोण से जहां ग्राहक का अंतिम उपयोग मामला परीक्षण परिदृश्य में परिवर्तित हो जाता है और विकास संबंधी सभी कार्य इन आवश्यकताओं को पूरा करने के लिए केंद्रित होते हैं।
Q # 3) स्पोकफ़्लो सुविधा के लिए ऑटो-जेनरेट की गई फ़ाइल में क्या निहित है?
उत्तर: अटैची कोड-पीछे की फाइलें '.cs' एक्सटेंशन के साथ ऑटो-जेनरेट की गई फाइलें हैं। इन फाइलों में स्टेप्स से वास्तविक स्टेप डेफिनेशन तक बाइंडिंग लॉजिक है।
स्वतः-जनरेट की गई फ़ाइलों के संबंध में कुछ बिंदु निम्न हैं:
विंडोज 7 के लिए सबसे अच्छा पीसी क्लीनर
- इन फ़ाइलों को संशोधित या मैन्युअल रूप से संपादित नहीं किया जाना चाहिए। यदि आप ऐसा करने की कोशिश करते हैं, तो भी परिवर्तन सहेजे नहीं जाते हैं।
- फीचर फ़ाइल में प्रत्येक परिवर्तन के बाद, कंपाइलर अपडेट को कैप्चर करने के लिए इस फाइल को फिर से जेनरेट करता है।
Q # 4) अलग-अलग स्रोत फ़ाइलों तक फैले चरण बाइंडिंग को कैसे पहुँचा जाता है?
उत्तर: यदि वे अलग-अलग स्रोत फ़ाइलों में मौजूद हैं, तो भी बाइंडिंग फ़ाइलों का पुन: उपयोग किया जा सकता है और बंधन मिलान एक रेगेक्स के माध्यम से होता है।
चरण बाइंडिंग फ़ाइलें अनिवार्य रूप से आंशिक वर्ग द्वारा जिम्मेदार हैं (बंधन) विशेषता। यह सुनिश्चित करता है कि सभी चरण बाइंडिंग वैश्विक स्तर पर उपलब्ध हैं और इसका उपयोग अलग-अलग या समान फीचर फ़ाइलों में परिदृश्य चरणों के साथ किया जा सकता है।
Q # 5) अस्पष्ट कदम बाध्यकारी कार्यान्वयन कैसे हल किया जा सकता है?
उत्तर: स्पेकफ्लो नामक एक अवधारणा का उपयोग करके अस्पष्ट कदम बाध्यकारी कार्यान्वयन से बचने के लिए एक तंत्र प्रदान करता है बिंदियों को अपनाया।
यह उन परिदृश्यों में उपयोगी है जहां आपके पास समान या अलग-अलग फ़ीचर फ़ाइलों में परिदृश्य में समान चरण होते हैं और यदि आप दोनों चरणों का अलग-अलग व्यवहार करना चाहते हैं।
एक सामान्य परिदृश्य में, जैसा कि सभी चरण मिलान रेगेक्स के माध्यम से होता है, और यह एक लालची मैच है, आपको यह सुनिश्चित करना होगा कि आप थोड़ा अलग पाठ लिखें (ताकि वे समान कार्यान्वयन से मेल न खाएं) भले ही वे प्रभाव डालते हों पठनीयता।
स्कोप्ड बाइंडिंग का उपयोग करके, आप एक विशेष बाध्यकारी कार्यान्वयन या संपूर्ण बाइंडिंग फ़ाइल के साथ टैग निर्दिष्ट कर सकते हैं और यह सुनिश्चित कर सकते हैं कि मिलान में श्रेणी का एक अतिरिक्त फ़िल्टर भी है।
जिन चरणों का पालन करने की आवश्यकता है, वे नीचे सूचीबद्ध हैं:
सेवा मेरे) वाक्यविन्यास का उपयोग करते हुए श्रेणी के साथ परिदृश्य को चिह्नित करें - @ टग। उदाहरण: हम नीचे दिए गए परिदृश्य को टैग - @scopedBinding के साथ टैग कर रहे हैं
@scopedBinding Scenario: Youtube should search for the given keyword and should navigate to search results page Given I have navigated to youtube website And I have entered India as search keyword When I press the search button Then I should be navigate to search results page
बी) अब स्टेप बाइंडिंग पर उसी टैग का उपयोग करें जो यह सुनिश्चित करेगा कि रेगेक्स मैच के अलावा, टैग या श्रेणी का मिलान भी होता है (और यह सुनिश्चित करता है कि रेगेक्स मैच सफल होने पर भी यह कदम इस कार्यान्वयन से मेल खाने में विफल रहे)
उपरोक्त उदाहरण में, हम कदम के लिए बाइंडिंग को स्कोप करना चाहते हैं। “ और मैंने खोज कीवर्ड के रूप में भारत में प्रवेश किया है ', हम टैग के रूप में स्कोपिंग पैरामीटर को स्कोपिंग पैरामीटर के साथ जोड़ देंगे।
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
टैग के साथ स्कोपिंग के समान, फ़ीचर और परिदृश्य शीर्षक के साथ स्कॉप्ड बाइंडिंग भी संभव है।
Q # 6) विभिन्न परिदृश्यों को चलाते हुए परीक्षण संदर्भ को कैसे संग्रहीत किया जा सकता है?
उत्तर: परीक्षण संदर्भ को अलग-अलग दृष्टिकोणों का उपयोग करके संग्रहीत किया जा सकता है जबकि सट्टा परीक्षण चल रहा है और प्रत्येक दृष्टिकोण में इसके पेशेवरों और विपक्ष हैं।
- परिदृश्य और सुविधा का उपयोग करना: फ़ीचरकोनटेक्स्ट और सियारियो कोंटेक्स्ट को कुंजी-मूल्य वाले जोड़े के वैश्विक शब्दकोश के रूप में सोचें और क्रमशः सुविधा निष्पादन और परिदृश्य निष्पादन के दौरान सुलभ हैं। मान फ़ील्ड किसी भी प्रकार की ऑब्जेक्ट को संग्रहीत कर सकता है और पुनर्प्राप्ति के दौरान, इसे वांछित के रूप में ऑब्जेक्ट में डालना होगा।
- बाध्यकारी फ़ाइलों में फ़ील्ड का उपयोग करना: यह दृष्टिकोण एक ही नाम स्थान में एक ही और / या अलग-अलग बाध्यकारी फ़ाइलों में बाध्यकारी कार्यान्वयन के संदर्भ को साझा करने की अनुमति देता है। कक्षा चर का उपयोग करके राज्य बनाए रखने में यह अलग नहीं है और आवश्यकतानुसार इसे बाध्यकारी क्रियान्वयन के दौरान सेट या पुनर्प्राप्त किया जा सकता है।
- Specflow के अपने DI ढांचे का उपयोग करना: Specflow एक संदर्भ इंजेक्शन ढांचा प्रदान करता है और इसे साधारण POCO वर्ग / वस्तुओं के रूप में संदर्भ पास करने के लिए इस्तेमाल किया जा सकता है। संदर्भ ऑब्जेक्ट्स / क्लासेस को कंस्ट्रक्टर फ़ील्ड के माध्यम से इंजेक्ट किया जा सकता है और अलग-अलग चरण बाइंडिंग फ़ाइलों के साथ पारित किया जा सकता है।
कंस्ट्रक्टर इंजेक्शन के माध्यम से इंजेक्शन लगाने वाली 2 वस्तुओं के नीचे एक उदाहरण देखें।
.net डेवलपर के लिए साक्षात्कार प्रश्न
(Binding) public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
Q # 7) आमतौर पर स्पेकफ्लो या बीडीडी की सीमाएं क्या हैं?
उत्तर: BDD, जैसा कि नाम से ही स्पष्ट है, व्यवहार को उस अनुप्रयोग के साथ परिभाषित करता है जो अनिवार्य रूप से परिदृश्यों के परीक्षण के लिए उपयोग के मामलों को परिवर्तित कर रहा है।
इसलिए एक व्यवसाय, उत्पाद और / या ग्राहकों जैसे हितधारकों की अनुपस्थिति वास्तविक विनिर्देशों को प्रभावित कर सकती है जो डेवलपर्स के लिए लिखित परीक्षाओं को लागू करने जा रहे हैं और इसलिए इसका वास्तविक मूल्य प्रदान करने में परिणाम हो सकता है कि यह क्या प्रदान कर सकता है और सभी हितधारक थे परिदृश्यों को परिभाषित करते हुए उपलब्ध थे।
यह कहते हुए कि अधिकांश बार बीडीडी के विपक्ष को बहिष्कृत करते हैं और विशिष्टताओं का परीक्षण / सत्यापन करने के लिए वास्तव में एक बहुत ही उपयोगी तकनीक है। चूंकि यह कम या ज्यादा भाषा-अज्ञेयवादी है, क्योंकि लगभग सभी प्रमुख प्रोग्रामिंग भाषाओं के लिए BDD चौखटे उपलब्ध हैं, जैसे जावा के लिए ककड़ी, रूबी के लिए RSpec और .NET के लिए बहिर्वाह।
Q # 8) स्टेप आर्ग्युमेंट ट्रांसफॉर्मेशन क्या हैं?
उत्तर: जैसा कि नाम का अर्थ है कि रूपांतरण कुछ भी नहीं है, लेकिन परिदृश्य कदम को बदल रहे हैं।
इसे मिलान की एक अतिरिक्त परत के रूप में सोचें जो वास्तविक चरण बाइंडिंग मैच से पहले होता है, और यह एक ही प्रकार के इनपुट के लिए अलग-अलग चरण कार्यान्वयन होने के बजाय एक अलग प्रकार के उपयोगकर्ता इनपुट को बदलने के लिए उपयोगी हो सकता है।
किसी भी परिवर्तन कदम के लिए, आवश्यक विशेषता है StepArgumentTransformation
उदाहरण के लिए, नीचे दिए गए कोड नमूने को देखें:
Given I have entered 50 days into the timestamp to minute converter Given I have entered 1 day, 2 hours, 3 minutes into the timestamp to minute converter Given I have entered 1 day, 1 hour, 1 minute, 30 seconds into the timestamp to minute converter
ऊपर दिए गए कोड नमूने का उल्लेख करते हुए, सभी तीन चरण संबंधित हैं। लेकिन, यदि यह सामान्य रेगेक्स मिलान के माध्यम से होता है, तो आपको तीन अलग-अलग चरण कार्यान्वयनों को लिखना आवश्यक होगा।
चरण तर्क परिवर्तनों के स्थान पर, मूल्यों को रूपांतरित करना और बनाना संभव है TIMESTAMP निर्दिष्ट मापदंडों से ऑब्जेक्ट और मूल चरण कार्यान्वयन पर वापस लौटें।
परिवर्तन के कार्यान्वयन पर नजर डालते हैं।
(StepArgumentTransformation(@'(?:(d*) day(?:s)?(?:, )?)?(?:(d*) hour(?:s)?(?:, )?)?(?:(d*) minute(?:s)?(?:, )?)?(?:(d*) second(?:s)?(?:, )?)?')) public TimeSpan convertToTimeSpan(String days, String hours, String minutes, String seconds) { // timestamp conversion logic }
इस प्रकार, यहां हम परिदृश्य इनपुट को एक मध्यवर्ती मान (जैसे टाइमस्टैम्प) में बदल रहे हैं और नीचे दिए गए नमूने में दिखाए गए अनुसार वास्तविक बाइंडिंग कार्यान्वयन के लिए परिवर्तित मान वापस कर रहे हैं।
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
ध्यान दें, टाइपसमैन का परिवर्तित मूल्य अब वास्तविक स्टेप बाइंडिंग कार्यान्वयन विधि में वापस आ गया है।
क्यू # 9) स्पोकफ्लो द्वारा प्रदान किए जाने वाले विभिन्न प्रकार के हुक क्या हैं?
उत्तर:
स्पेकफ्लो बहुत सारे कस्टम हुक या विशेष कार्यक्रम प्रदान करता है जिसके साथ इवेंट हैंडलर (अनिवार्य रूप से विधियाँ / कार्य) कुछ सेटअप / टैडडाउन लॉजिक निष्पादित करने के लिए बाध्य हो सकते हैं।
Specflow निम्नलिखित हुक प्रदान करता है:
- पहले / सुनिश्चित करें: फीचर शुरू होने से पहले और बाद में उठाया गया इवेंट क्रमशः निष्पादन को पूरा करता है।
- इससे पहले: परिदृश्य निष्पादन से पहले और बाद में उठाया गया कार्यक्रम क्रमशः शुरू होता है और पूरा होता है।
- इससे पहलेSenenarioBlock / AfterScenarioBlock: एक परिदृश्य ब्लॉक के पहले और बाद में उठाई गई घटना यानी जब कोई भी परिदृश्य 'दिया गया', 'जब' या 'फिर' से शुरू होता है या पूरा होता है।
- पहले / बाद में: परिदृश्य के प्रत्येक चरण के पहले और बाद में उठाया गया इवेंट।
- इससे पहले इस घटना को पूरे परीक्षण निष्पादन के दौरान केवल एक बार उठाया जाता है और एक बार परीक्षण निष्पादन पूरा होने के बाद।
यहां यह ध्यान रखना महत्वपूर्ण है कि इन घटनाओं को डिफ़ॉल्ट रूप से उठाया जाता है, और यदि इन हुक के लिए बाइंडिंग प्रदान की जाती हैं, तो केवल और केवल इन्हें संभाला जाता है। साथ ही, इन हुक को जोड़े में लागू करना अनिवार्य नहीं है और हर हुक एक दूसरे से स्वतंत्र रूप से मौजूद हो सकता है।
Q # 10) कैसे है परिदृश्य कैन्योरटेक्स्ट फीचरकोटेक्स्ट से अलग है?
उत्तर: परिदृश्यप्रकार और फ़ीचर कॉन्टेक्स्ट दोनों ही स्पेकफ्लो फ्रेमवर्क द्वारा प्रदान की जाने वाली स्थैतिक कक्षाएं हैं और ये वास्तव में बाइंडिंग के बीच जानकारी देने जैसे कार्यों को करने के लिए सहायक हैं, जो महत्वपूर्ण जानकारी प्राप्त कर रहे हैं जैसे फ़ीचर / परिदृश्य के निष्पादन संदर्भ, आदि
आइए देखें कि दोनों कैसे भिन्न हैं:
जैसा कि नाम से पता चलता है कि परिदृश्य कैरोनेट, परिदृश्य निष्पादन स्तर पर डेटा या जानकारी प्रदान करता है, जबकि फ़ीचरकोनटेक्स्ट फीचर स्तर पर चीजों से संबंधित है।
सरलीकृत शब्दों में, फीचर कॉन्टेक्स्ट में संग्रहित कुछ भी उस फीचर फाइल में मौजूद सभी परिदृश्यों के लिए उपलब्ध होगा, जबकि परिदृश्यारोटेक्स्ट केवल बाइंडिंग तक ही उपलब्ध होगा, जब तक कि समय परिदृश्य निष्पादन नहीं हो जाता।
Q # 11) दिए गए, कब और फिर दिए गए आदेश कितने महत्वपूर्ण हैं?
उत्तर: के प्रवाह पर कोई प्रतिबंध नहीं है दिया, कब और फिर । यह एक परीक्षण परिदृश्य की तार्किक अनुक्रमण और सामान्य रूप में किसी भी परीक्षण अभ्यास के बारे में अधिक है, जैसे कि यूनिट परीक्षणों में हम आमतौर पर तीन ए के लिए खड़े होते हैं ' व्यवस्था, अधिनियम और मुखर ”।
तो सट्टा परिदृश्यों के लिए, आदेश देने पर कोई प्रतिबंध नहीं है और यह भी अनिवार्य नहीं है कि सभी तीन खंड मौजूद हों।
अक्सर समय पर, सेटअप न्यूनतम हो सकता है और इसकी आवश्यकता भी नहीं हो सकती है। इसलिए उन परिदृश्यों के लिए, आप बस 'छोड़ सकते हैं' दिया हुआ 'ब्लॉक करें और' के साथ परिदृश्य शुरू करें कब ' खंड मैथा।
Q # 12) परिदृश्य और फ़ीचरइन्फो क्या हैं?
उत्तर: SpecflowContext और FeatureContext आगे नेस्टेड स्टैटिक क्लासेस अर्थात् परिदृश्यो और फ़ीचरइन्फो प्रदान करते हैं।
परिदृश्य परिदृश्य वर्तमान में निष्पादित किए जा रहे परिदृश्य के बारे में जानकारी तक पहुँच देता है।
कुछ चीजें जो आप इस वर्ग के साथ जान सकते हैं, नीचे दी गई हैं:
- शीर्षक: परिदृश्य का शीर्षक। वाक्य - विन्यास: परिदृश्य
- टैग: के रूप में टैग की सूची स्ट्रिंग ()। वाक्य - विन्यास: परिदृश्य
रों के लिए imilar परिदृश्य, फ़ीचरइन्फो वर्तमान सुविधा से संबंधित जानकारी भी प्रदान करता है जिसे वर्तमान में निष्पादित किया जा रहा है।
शीर्षक और टैग के अलावा, यह अन्य उपयोगी चीजें भी प्रदान करता है जैसे कि लक्ष्य भाषा क्या है जिसके लिए फीचर कोड-फाइल के पीछे कोड जनरेट करना है, वह भाषा विवरण जिसमें फीचर फाइल लिखा गया है, आदि।
फ़ीचरइन्फो के लिए मान प्राप्त करने का सिंटैक्स नीचे दिए गए परिदृश्य के समान है:
FeatureContext.Current.FeatureInfo
Q # 13) परिदृश्य रूपरेखा और स्पंदना तालिकाओं के बीच अंतर।
उत्तर:
परिदृश्य मूल रूप से Specflow का उपयोग करके डेटा-संचालित परिदृश्यों को निष्पादित करने का एक तरीका है जहां इनपुट की एक सूची प्रदान की जाती है उदाहरण परिदृश्य में अनुभाग, और प्रत्येक प्रदान किए गए उदाहरणों की संख्या के आधार पर परिदृश्य एक बार निष्पादित होता है।
इसे और अधिक स्पष्ट रूप से समझने के लिए नीचे एक कोड नमूना देखें।
Scenario Outline: Youtube keyword search And I have entered as search keyword When I press the search button Then I should be navigate to search results page Examples: | searchTerm | | India | | America
तालिकाएँ केवल परिदृश्य के किसी भी चरण के साथ सारणीबद्ध डेटा की आपूर्ति करने के लिए साधन हैं और इसे चरण कार्यान्वयन में स्पेकफ्लो टेबल तर्क के रूप में पारित किया जाता है जिसे बाद में वांछित वस्तु प्रकार में पार्स किया जा सकता है।
कृपया अधिक विवरण के लिए नीचे दिए गए कोड नमूने में 'बोल्ड' अनुभाग देखें:
Scenario: Pass data through Specflow tables for StudentInfo object Given I have entered following info for Student | FirstName | LastName | Age | YearOfBirth | | test | student | 20 | 1995 | When I press add Then i student should get added to database and entered info should be displayed on the screen
टैग विशेषता के समान - आप किसी भी चरण के कार्यान्वयन के निष्पादन प्रवाह को नियंत्रित करने के लिए परिदृश्यारो द्वारा प्रदान की गई किसी भी जानकारी का उपयोग कर सकते हैं।
क्यू # 14) परिदृश्यप्रदर्शन के माध्यम से परीक्षण निष्पादन को नियंत्रित करना।
स्कोप बाइंडिंग के समान, जो टैग्स के माध्यम से स्टेप डेफिनेशन को मैच करते हुए एक अतिरिक्त फ़िल्टर मानदंड जोड़ने की अनुमति दे सकता है, आप परिदृश्यियो के साथ प्रदान की गई जानकारी के माध्यम से परीक्षण निष्पादन को नियंत्रित करने का भी लाभ उठा सकते हैं।
उदाहरण के लिए, आपके पास टैग के साथ 2 परिदृश्य हैं अर्थात् @ tag1 और @ tag2 और दोनों में समान चरण परिभाषा है। अब आपको परिदृश्य टैग के आधार पर कस्टम तर्क जोड़ने की आवश्यकता है।
इस प्रकार स्टेप डेफिनिशन इम्प्लीमेंटेशन में, आप बस एक परिदृश्य के उपयोग से जुड़े सभी टैग प्राप्त कर सकते हैं परिदृश्य और निष्पादित होने वाले परिदृश्य में एक टैग की उपस्थिति की जांच करें और तय करें कि आप किस कोड को निष्पादित करना चाहते हैं।
बेहतर समझ के लिए नीचे दिए गए कोड नमूने का संदर्भ लें:
(When(@'I press add')) public void WhenIPressAdd() { String() tags = ScenarioContext.Current.ScenarioInfo.Tags; String expectedTag = 'tag1'; if(tags.Any(s => s == expectedTag)) { // do something } else { // do something else } }
टैग विशेषता के समान - आप किसी भी चरण के कार्यान्वयन के निष्पादन प्रवाह को नियंत्रित करने के लिए परिदृश्यारो द्वारा प्रदान की गई किसी भी जानकारी का उपयोग कर सकते हैं।
Q # 15) लगातार इंटीग्रेशन तरह के सेटअप में स्पेकुलेट टेस्ट कैसे निष्पादित किए जा सकते हैं?
उत्तर:
आधुनिक सॉफ्टवेयर डेवलपमेंट के तरीके के साथ, निरंतर एकीकरण एक प्रकार का मूलमंत्र है और इसे आमतौर पर प्रथाओं के एक सेट के रूप में संदर्भित किया जाता है, जहां स्रोत कोड के लिए प्रत्येक प्रतिबद्ध को उत्पादन रिलीज के लिए एक उम्मीदवार के रूप में माना जाता है।
इसलिए हर प्रतिबद्ध अनिवार्य रूप से गुणवत्ता के द्वार के रूप में विभिन्न प्रकार के परीक्षणों को चलाता है ताकि यह सुनिश्चित हो सके कि जो बदलाव किया जा रहा है वह किसी भी परीक्षण को विफल या तोड़ने का कारण नहीं बनता है।
Specflow - जैसा कि हम जानते हैं, NUnit और MSUnit जैसी ज्ञात रूपरेखाओं के साथ बहुत अच्छी तरह से एकीकृत करता है और इन परीक्षण ढाँचों के कंसोल अनुप्रयोगों के माध्यम से आसानी से चलाया जा सकता है जिसे संकलित परियोजना का DLL दिया गया है जिसमें Specflow विशेषताएँ और चरण कार्यान्वयन हैं।
इसलिए, एक निरंतर एकीकरण सेटअप के भाग के रूप में चल रहे स्पेकफ्लो परीक्षणों को प्राप्त करने के लिए, निम्नलिखित उच्च-स्तरीय चरणों की एक सूची है जो निम्न प्रकार से हो सकती हैं:
# 1) संकलित DLL प्राप्त करने के लिए Specflow सुविधा और चरण परिभाषा वाले प्रोजेक्ट को संकलित करें।
#दो) अब NUnit या MSUnit कंसोल धावकों का उपयोग करें और परीक्षण स्रोत के रूप में संकलित DLL प्रदान करें (ये फ्रेमवर्क अन्य क्षमताओं के साथ-साथ श्रेणियों आदि के आधार पर परीक्षण फ़िल्टर प्रदान करते हैं)।
इस कदम को कंटीन्यूअस इंटीग्रेशन पाइपलाइन के साथ एकीकृत किया जा सकता है और इसे शेल या DOS स्क्रिप्ट के माध्यम से CI टूल के साथ निष्पादित किया जा सकता है जैसे कि जेनकिंस या बांस आदि।
# 3) एक बार जब परीक्षण निष्पादन पूरा हो जाता है, तो उत्पन्न आउटपुट रिपोर्ट (जो उपयोग किए गए कंसोल रनर के लिए विशिष्ट है), का उपयोग करके अधिक पठनीय HTML रिपोर्ट में परिवर्तित किया जा सकता है स्पेसरुन निष्पादन योग्य NugetPackage के भाग के रूप में उपलब्ध है।
इस चरण को कमांड लाइन के माध्यम से भी निष्पादित किया जा सकता है जो सभी प्रमुख निरंतर एकीकरण फ्रेमवर्क द्वारा बॉक्स से बाहर प्रदान किया जाता है।
मेरा राउटर लॉगिन और पासवर्ड क्या है
# 4) एक बार जब उपरोक्त चरण पूरा हो जाता है, तो हम निष्पादित परीक्षणों की रिपोर्ट और परीक्षण निष्पादन विवरणों के सारांश के साथ तैयार हैं।
हम आशा करते हैं कि आपने इस Specflow प्रशिक्षण श्रृंखला में ट्यूटोरियल की पूरी श्रृंखला का आनंद लिया। ट्यूटोरियल की यह श्रृंखला वास्तव में किसी भी शुरुआती या अनुभवी व्यक्ति के लिए सबसे अच्छा मार्गदर्शक होगी, जो अपने ज्ञान को Specflow पर समृद्ध करना चाहता है!
PREV ट्यूटोरियल यावापस जाओ सबसे पहले ट्यूटोरियल
अनुशंसित पाठ
- साक्षात्कार प्रश्न और उत्तर
- उत्तर के साथ स्पॉक साक्षात्कार प्रश्न (सर्वाधिक लोकप्रिय)
- कुछ दिलचस्प सॉफ्टवेयर परीक्षण साक्षात्कार प्रश्न
- 20 सबसे लोकप्रिय TestNG साक्षात्कार प्रश्न और उत्तर
- शीर्ष 30+ लोकप्रिय ककड़ी साक्षात्कार प्रश्न और उत्तर
- शीर्ष 50 सबसे लोकप्रिय CCNA साक्षात्कार प्रश्न और उत्तर
- टॉप 40 पॉपुलर J2EE के इंटरव्यू सवाल और जवाब जो आपको पढ़ने चाहिए
- 25+ सबसे लोकप्रिय ADO.NET साक्षात्कार प्रश्न और उत्तर