2012-04-27 8 views
19

बीडीडी "बाहरी-इन" पद्धति है, जैसा कि मैं इसे समझता हूं, इसका मतलब है कि आप जो जानते हैं उससे शुरू करते हैं। आप अपनी कहानियों और परिदृश्यों को लिखते हैं, और फिर बाहरीतम डोमेन ऑब्जेक्ट्स को कार्यान्वित करते हैं, जो "अंदरूनी" और "जानबूझकर" सहयोगियों को खोजते हैं - जैसे आप सेवा परतों, डोमेन परतों आदि के माध्यम से नीचे जाते हैं। एक सहयोगी के लिए जो अभी तक मौजूद नहीं है, जब तक आप इसे बनाते हैं तब तक आप इसे मजाक करते हैं (या "नकली")। (मैं सीधे डेन नॉर्थ और केंट बेक से इन शर्तों में से कुछ चोरी कर रहा हूं)।बीडीडी वास्तव में यूआई परत पर लागू है?

तो, यूआई इस में कैसे फिट बैठता है?

Given an unauthenticated user 
When the user tries to navigate to the welcome page 
Then they should be redirected to the login page 
When the user enters a valid name in the Name field 
And the user enters the corresponding password in the Password field 
And the user presses the Login button 
Then they should be directed to the welcome page 
इस में

:

उत्तर के blog entries में से एक से उधार, वह इस पुनर्लेखन

Given an unauthenticated user 
When the user tries to access a restricted asset 
Then they should be directed to a login page 
When the user submits valid credentials 
Then they should be redirected back to the restricted content 

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

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

मैं एक स्वचालित फैशन में यूआई का परीक्षण नहीं करता हूं, और मैं सेलेनियम जैसे जीयूआई स्वचालन उपकरण से सावधान हूं क्योंकि मुझे लगता है कि परीक्षण (1) अत्यधिक भंगुर हो सकता है और (2) निष्पादन की लागत जहां चलती है महानतम। तो मेरा झुकाव सौंदर्यशास्त्र और प्रयोज्यता के लिए यूआई का मैन्युअल रूप से परीक्षण करना है और व्यवसाय तर्क को कम, अधिक आसानी से स्वचालित परतों पर छोड़ना है। (और संभवतः परतों को बदलने की संभावना कम है।)

लेकिन मैं इस पर परिवर्तित होने के लिए खुला हूं। तो, यूआई के लिए बीडीडी है या नहीं?

पीएस। मैंने एसओ पर सभी पोस्ट पढ़ी हैं, मैं इस विषय पर पा सकता हूं, और कोई भी वास्तव में मेरे प्रश्न को संबोधित नहीं करता है। This one निकटतम हो जाता है, लेकिन मैं यूआई को एक अलग कहानी में अलग करने के बारे में बात नहीं कर रहा हूं; बल्कि, मैं पूरी तरह से बीडीडी के प्रयोजनों के लिए इसे अनदेखा करने के बारे में बात कर रहा हूं।

उत्तर

14

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

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

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

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

+0

प्रतिक्रिया के लिए धन्यवाद, लिज़। मैं आपके ब्लॉग और वीडियो का भी संदर्भ दे रहा हूं। यह मुझ पर खो नहीं गया है कि बीडीडी किसी और चीज से अधिक संचार के बारे में है, जो मुझे लगता है कि जीयूआई को शामिल करने के लिए मेरी अव्यवस्था को रेखांकित करता है। मेरे हितधारक आम तौर पर जीयूआई के मामले में कहानियां व्यक्त नहीं करते हैं। –

+0

"चाचा" बॉब मार्टिन [ट्वीट] [https://twitter.com/unclebobmartin/status/207282123835588608) इस विषय पर सप्ताहांत में दो बार, आग में ईंधन जोड़ना: "टेस्ट कोड हैं! सभी कोड की तरह उन्हें होना चाहिए डिज़ाइन किया गया! यूआई में अपने परीक्षण बाध्य न करें! " –

+0

स्पष्ट रूप से प्रति टिप्पणी केवल एक HTML लिंक की अनुमति है। [यहां है] (https://twitter.com/unclebobmartin/status/207281655130488832) दूसरा लिंक: "बीडीडी _through_ यूआई करने वाले लोग बीडीडी नहीं कर रहे हैं। वे एमडीडी कर रहे हैं: मेस संचालित विकास।" –

2

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

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