बीडीडी "बाहरी-इन" पद्धति है, जैसा कि मैं इसे समझता हूं, इसका मतलब है कि आप जो जानते हैं उससे शुरू करते हैं। आप अपनी कहानियों और परिदृश्यों को लिखते हैं, और फिर बाहरीतम डोमेन ऑब्जेक्ट्स को कार्यान्वित करते हैं, जो "अंदरूनी" और "जानबूझकर" सहयोगियों को खोजते हैं - जैसे आप सेवा परतों, डोमेन परतों आदि के माध्यम से नीचे जाते हैं। एक सहयोगी के लिए जो अभी तक मौजूद नहीं है, जब तक आप इसे बनाते हैं तब तक आप इसे मजाक करते हैं (या "नकली")। (मैं सीधे डेन नॉर्थ और केंट बेक से इन शर्तों में से कुछ चोरी कर रहा हूं)।बीडीडी वास्तव में यूआई परत पर लागू है?
तो, यूआई इस में कैसे फिट बैठता है?
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 निकटतम हो जाता है, लेकिन मैं यूआई को एक अलग कहानी में अलग करने के बारे में बात नहीं कर रहा हूं; बल्कि, मैं पूरी तरह से बीडीडी के प्रयोजनों के लिए इसे अनदेखा करने के बारे में बात कर रहा हूं।
प्रतिक्रिया के लिए धन्यवाद, लिज़। मैं आपके ब्लॉग और वीडियो का भी संदर्भ दे रहा हूं। यह मुझ पर खो नहीं गया है कि बीडीडी किसी और चीज से अधिक संचार के बारे में है, जो मुझे लगता है कि जीयूआई को शामिल करने के लिए मेरी अव्यवस्था को रेखांकित करता है। मेरे हितधारक आम तौर पर जीयूआई के मामले में कहानियां व्यक्त नहीं करते हैं। –
"चाचा" बॉब मार्टिन [ट्वीट] [https://twitter.com/unclebobmartin/status/207282123835588608) इस विषय पर सप्ताहांत में दो बार, आग में ईंधन जोड़ना: "टेस्ट कोड हैं! सभी कोड की तरह उन्हें होना चाहिए डिज़ाइन किया गया! यूआई में अपने परीक्षण बाध्य न करें! " –
स्पष्ट रूप से प्रति टिप्पणी केवल एक HTML लिंक की अनुमति है। [यहां है] (https://twitter.com/unclebobmartin/status/207281655130488832) दूसरा लिंक: "बीडीडी _through_ यूआई करने वाले लोग बीडीडी नहीं कर रहे हैं। वे एमडीडी कर रहे हैं: मेस संचालित विकास।" –