2013-10-31 8 views
8

मैं एक परिदृश्य एक निम्नलिखित (यह एक सरलीकृत संस्करण है, लेकिन मेरी समस्या का एक अच्छा संकेत देता है) के लिए इसी तरह की रूपरेखा बना रहा हूं में बाह्यरेखाएं डेटा की आवश्यकता है, लेकिन मैं विभिन्न ऑपरेटरोंबहु आयामी परिदृश्य Specflow

Examples: 
    | operator | 
    | op_numb_1 | 
    | op_numb_2 | 
    | op_numb_3 | 

आदेश में एक ही परिदृश्य रूपरेखा दोहरा तीन बार से बचने के लिए के लिए परीक्षण को दोहराने के लिए में बस ऑपरेटरों (MyOperatorName के बजाय) के नाम के साथ एक और उदाहरण तालिका जोड़ना होगा कि ; मुझे पता है कि यह संभव नहीं है लेकिन मैं सोच रहा हूं कि सुविधा के अंदर तीन अलग-अलग परिदृश्य रूपरेखाओं का उपयोग करने से बचने के लिए सबसे अच्छा तरीका क्या है जो ऑपरेटर नाम के अलावा काफी समान है। मुझे पता है कि मैं एक ही चरण परिभाषा का पुन: उपयोग कर सकता हूं लेकिन मैं यह समझने की कोशिश कर रहा हूं कि इस परिदृश्य के साथ सुविधा को अव्यवस्थित करने के लिए सबसे अच्छा अभ्यास है या नहीं।

उत्तर

8

खुशी है कि आप यह संभव पता नहीं है ... तो विकल्प क्या हैं? लगता है वहाँ 5 रहे हैं जैसे:

एक: हर विकल्प (पार उत्पाद)

Examples: 

| type  | description      | amount | operator | 
| Negative | An amount that is negative  | -1.0 | op_numb_1 | 
| Zero  | An amount that is equal to zero | 0  | op_numb_1 | 
| Negative | An amount that is negative  | -1.0 | op_numb_2 | 
| Zero  | An amount that is equal to zero | 0  | op_numb_2 | 
| ......... | ..........      | .... | ...  | 

ख के साथ एक मेज बनाओ। प्रत्येक ऑपरेटर के लिए परिदृश्य दोहराएं, इनपुट पंक्तियों की एक तालिका - लेकिन आपने कहा था कि आप ऐसा नहीं करना चाहते थे।

सी। ऑपरेटर की एक तालिका के साथ प्रत्येक इनपुट पंक्ति के लिए परिदृश्य दोहराएं - मुझे यह विकल्प पसंद है, क्योंकि प्रत्येक नियम एक अलग परीक्षण है। यदि आप वास्तव में, वास्तव में यह सुनिश्चित करना चाहते हैं कि आपके "ऑपरेटर" रणनीति के प्रत्येक अलग-अलग कार्यान्वयन एक ही सत्यापन परिदृश्य में गुजरता है और विफल रहता है, तो प्रत्येक सत्यापन परिदृश्य को एक परिदृश्य रूपरेखा के रूप में क्यों न लिखें: उदा।

Scenario Outline: Operators should fail on Negative inputs 
Given I have a valid operator such as 'MyOperatorName' 
When I provide a valid phone number for the operator 
And I send a request with the amount "-1.0" 
Then the following validation message will be displayed: 'The Format of Amount is not valid' 
And the following Status Code will be received: 'AmountFormatIsInvalid' 

Scenario Outline: Operators should fail on Zero inputs 
...etc... 

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

ई। इस विचार के आधार पर एकीकरण/इकाई परीक्षण लिखें कि आपका "ऑपरेटर" सत्यापन तर्क केवल एक ही स्थान पर लागू होता है। यदि प्रत्येक ऑपरेटर पर सत्यापन समान है, तो इसे एक बार परीक्षण क्यों न करें, और फिर सभी ऑपरेटरों को उनकी रचना में वही वैधता वर्ग से प्राप्त या शामिल किया गया है?

+1

निष्पक्ष होने के लिए, 'जब मैं ऑपरेटर के लिए एक वैध फोन नंबर प्रदान करता हूं' विकल्प सी में अनावश्यक है। - जब आप एक वैध फोन नंबर और राशि "-1.0" के साथ अनुरोध भेजते हैं तो आप लिख सकते हैं। – perfectionist

+2

अच्छा जवाब, मैं निश्चित रूप से दूसरा @perfectionist होगा और आपको विकल्प डी दबाएगा। अपने परीक्षण को दूर करने के लिए बस उदाहरण का चयन करें, हर संभव संयोजन का परीक्षण न करें। यदि आपको संपूर्ण परीक्षण की आवश्यकता है तो कुछ ऐसा तार करें जो संयोजक परीक्षण उत्पन्न कर सकता है (mbUnit देखें) या शायद केवल एक कंसोल ऐप जो आपके स्पेकफ़्लो बाइंडिंग का पुन: उपयोग करता है ... – AlSki

+0

धन्यवाद @ प्रभावकारिता, मैं वास्तव में आपके उत्तर की सराहना करता हूं; यह निश्चित रूप से पूर्ण और संपूर्ण है। –

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