2012-09-27 33 views
5

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

मैं एक नया निजी परियोजना मैं अभी शुरू कर (मैं आतंक विरोधी इस्तेमाल करेंगे)

परियोजना बाहरी अनुप्रयोगों से डेटा एकत्र करने के एपीआई प्रदान करेगा, यह एक प्रमाणीकरण प्रदान करेगा पर यह परीक्षण करना चाहते हैं सिस्टम (तैयार), आवश्यकतानुसार डेटा एकत्र करने के लिए कई मॉडल, और सब्सक्रिप्शन खरीदने के लिए एक भुगतान प्रणाली जो कुछ प्रीमियम-केवल सुविधाएं प्रदान करेगी।

इन सभी कार्यक्षमताओं को कवर करने के लिए मैं किस प्रकार के परीक्षण करूँ? लेकिन डीआरवाई?

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

+0

मेरा 2 सेंट। एक सलाहकार खोजें (जिसने इसे पहले किया है और हाथ से चल रहा है)। या अपने प्रश्नों के लिए स्थानीय समूह या मेलिंग सूची में शामिल हों। इसे अपने आप करने की कोशिश न करें या अपना रास्ता तय न करें। – Gishu

उत्तर

8

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

तो, वहां से बाहर निकलें, अपने हितधारकों से बात करें और पर काम करें सिस्टम को चालू करने वाले व्यक्ति को यह करना है।यदि यह एकमात्र प्रयास है, तो आपको कई अलग-अलग टोपी पहनने की आवश्यकता होगी।

आपके बीडीडी परीक्षण सिस्टम के व्यवहार को कवर करेंगे - वांछित कार्यक्षमता की इकाइयां। आपको अभी भी यूनिट परीक्षण करने की आवश्यकता होगी - वहां कोई बदलाव नहीं है।

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

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

उपयोगी संसाधन (और उदाहरण के बहुत सारे):

http://books.openlibra.com/pdf/cuke4ninja-2011-03-16.pdf < भयानक मुक्त eBook - मज़ा पढ़ने के लिए बहुत,।

http://www.slideshare.net/lunivore/behavior-driven-development-11754474 < लिज़ वास्तव में उसकी सामग्री जानता है!

http://dannorth.net/2011/01/31/whose-domain-is-it-anyway/

https://www.google.co.uk/search?q=declarative+vs+imperative+BDD < जाना टीम घोषणात्मक!

+3

+1 संचार के बारे में सब कुछ है ... – Lunivore

+0

हाँ, मुझे लगता है कि यह कैसे काम करता है इसके बजाए केवल काम करने के बारे में चिंता करना मुश्किल होगा ... बस एक प्रश्न: जब आप कहते हैं "वह सामान चरण में है परिभाषाएं। डेवलपर के रूप में, आप सभी चीजों को कैसे परिभाषित कर सकते हैं। " "चरण परिभाषाओं" का उपयोग करके आप ककड़ी जैसी कदम परिभाषाओं के बारे में बात कर रहे हैं? –

+0

मेरा मतलब लक्ष्य-भाषा चरण परिभाषाएं है जो आपके गेरकिन चरणों से मेल खाती है, उदा। "Foo_Steps.cs" विधि में "सार्वजनिक शून्य फिर SomomeAssertionShouldBeMade() {}"। –

1

मुझे यकीन है कि यह अपने सटीक आवश्यकताओं को पूरा नहीं कर रहा हूँ, लेकिन यह (उदाहरण के एक webapp है) कैसे मैं BDD करना है:

मान लें कि आपने अपने आवेदन के एक उपयोगकर्ता के रूप कंप्यूटर के सामने बैठे रहे। चरण उपयोग के मामलों में से एक प्राप्त करने के लिए करने की आवश्यकता को लिख लें, उदाहरण के लिए: प्रणाली का यूआरएल लॉग इन करने के लिए

नेविगेट समारोह आप समारोह निष्पादित करने के लिए प्रासंगिक डेटा दर्ज की आवश्यकता का चयन करें लिए बटन क्लिक करें फ़ंक्शन सिस्टम को का जवाब देने के लिए प्रतीक्षा करें स्क्रीन पर मौजूद डेटा को आपके द्वारा अपेक्षित डेटा से मेल खाता है।

यदि इनमें से कोई भी चरण निष्पादित करने में विफल रहता है, या डेटा गलत है, तो परीक्षण विफल हो गया है।

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

-1

वसीयत के लिए ककड़ी या rspec साथ परीक्षण के लिए कोशिश इस

देखते हैं कि यह - cucumber/rspec या on github