जावा के लिए BDD फ्रेमवर्क के बीच अंतर क्या हैं? [बन्द है]


121

जावा के लिए प्रत्येक व्यवहार संचालित विकास (BDD) ढांचे के पेशेवरों और विपक्ष क्या हैं ?

मैंने उनमें से कुछ को यहां पाया है , उदाहरण के लिए।

अगर मैं पहले से ही एक मॉकिंग लाइब्रेरी (जैसे मॉकिटो ) का उपयोग करता हूं तो क्या यह बीडीडी ढांचे का उपयोग करने के लिए समझ में आता है ?


कृपया बीडीडी या परिभाषा को लिंक करें
जेसन एस

4
BDD = व्यवहार प्रेरित विकास
विन्नी

4
बहुत दुख की बात है कि यह अधिक जवाब नहीं मिला!
पाब्लो फर्नांडीज

Cuke4Duke के लिए मेरी बाउंटी में ककड़ी-जेवीएम पढ़ें। बाउंटी को पुरस्कार देने के लिए मेरे पास अभी भी 22 घंटे हैं ...
सैम हस्लर

जवाबों:


99

मैंने अभी जावा के लिए तीन BDD फ्रेमवर्क की तुलना की है। जाहिर है कि मेरे निष्कर्षों का उपयोग काफी कम है।

Concordion

  • बहुत लचीला
  • बहुत सुंदर रिपोर्ट आउटपुट
  • अच्छा प्लगइन रूपरेखा
  • बेचारा प्रलेखित। मुझे इसका पता लगाने के लिए स्रोत को पढ़ना पड़ा (सौभाग्य से इसकी अत्यंत अच्छी गुणवत्ता)।
  • फिक्स्चर को html में कसकर युग्मित होने की संभावना थी।

EasyB

  • बहुत उथले सीखने की अवस्था (गैर-ग्रोवी डेवलपर्स के लिए भी)
  • अत्यधिक शक्तिशाली DBUnit एकीकरण
  • जाहिरा तौर पर मापदंडों के लिए कोई समर्थन नहीं है (पाठ और कोड के बीच बहुत अस्पष्ट कहानियां या दोहराव की ओर जाता है (संपादित करें: वास्तव में ऐसा है लेकिन इसके लिए प्रलेखन बहुत अच्छी तरह से छिपा हुआ था।)
  • कहानी और कोड बहुत कसकर युग्मित हैं (एक ही फ़ाइल)
  • बहुत बुनियादी रिपोर्ट उत्पादन
  • काम करने के लिए IntelliJ प्लगइन नहीं मिल सका
  • निष्क्रिय समुदाय (Maven प्लगइन तीन महीनों के लिए टूट गया है - कई कोड उदाहरणों को आकर्षित करने के लिए नहीं)

JBehave

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

मेरे पास JDave के Cuke4Duke को आज़माने का मौका नहीं था जैसा कि मुझे पसंद आएगा, लेकिन शायद इस समय JBehave के लिए धक्का होगा।


4
+1: अब तक का सबसे अच्छा उत्तर। लिंक जोड़ना।
ज्येष्ठ

35

"पेशेवरों और विपक्ष" विभिन्न लोगों के लिए अलग-अलग चीजें हो सकती हैं। मैं आमतौर पर एक नज़र है

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

और कुछ चौखटों से मुझे नज़र लगी थी

  • वृत्ति खराब : अंतिम गतिविधि मार्च 2010, अच्छा : एएसएफ लाइसेंस
  • JDave खराब : मैचर्स और मॉक के साथ आता है, अच्छा : अंतिम गतिविधि जनवरी 2011, एएसएफ लाइसेंस
  • ईजीबी खराब : अंतिम गतिविधि अक्टूबर 2010, निश्चित नहीं : यह ग्रूवी का उपयोग करता है। यह ठीक हो सकता है, लेकिन मेरे मामले में गोद लेने के लिए एक समस्या होगी।
  • beanspec bad : 2007 में केवल एक संस्करण, यह मृत है
  • bdoc bad : अंतिम गतिविधि Jan 2010, निश्चित नहीं : यह दूसरे तरीके से जाने जैसा लगता है, कोड से एक रिपोर्ट बनाता है।
  • स्पॉक बुरा : शायद थोड़ा चरम है, यह एक पूरा परीक्षण ढांचे, न केवल BDD, है अच्छा बहुत सक्रिय है, बहुत शांत:।
  • jbehave , जावा में सभी BDD की "माँ", खराब : बहुत शक्तिशाली = जटिल, असंगत लाइसेंस (मेरे लिए), लगभग हर टेस्ट लाइब्रेरी और बहुत कुछ, अच्छे के साथ आता है: RSpec पर आधारित और इसलिए संगत, ग्रहण प्लगइन्स, मावेन एकीकरण , बहुत सक्रिय समुदाय
  • ginkgo4j , जावा का एक BDD ढांचा भी रूबी की RSpec पर आधारित है लेकिन जावा लैम्ब्डा (एनोटेशन के बजाय) का उपयोग करके आपको अत्यधिक प्रासंगिक, उच्च पठनीय परीक्षण बनाने की अनुमति देता है। सरल। बहुत शक्तिशाली। ओपन सोर्स अपाचे 2 लाइसेंस।

मॉक के बारे में: आपको निश्चित रूप से एक मॉकिंग रूपरेखा की भी आवश्यकता है। BDD चौखटे सिर्फ चश्मा लिखने में आपकी मदद करते हैं, लेकिन कुछ परीक्षणों में मोक्स या स्टब्स, esp की आवश्यकता होगी। जब आप ऊपर से नीचे (विस्तार से अवलोकन) डिजाइन करते हैं।


jbehave 3-खंड BSD लाइसेंस प्राप्त है: jbehave.org/license.html । मुझे यकीन नहीं है कि कोई भी इस मुद्दे को क्यों लेगा?
रेमन

रेमन, यह निर्भरता के बारे में है। उनमें से कई हैं। शायद वे सभी अपाचे या बीएसडी हैं, मैंने जांच करने की जहमत नहीं उठाई।
पीटर कॉफ़लर

BDD का अच्छा अद्यतन सूची चौखटे behaviour-driven.org/Implementations
पॉल Verest

आप उस सूची में JGiven जोड़ सकते हैं ।
Jan Schaefer

20

जावा के साथ उपयोग करने के लिए सबसे अच्छा BDD ढांचा क्या है? क्यों? प्रत्येक ढांचे के पेशेवरों और विपक्ष क्या हैं?

यहां कंसॉर्डियन बनाम ककड़ी और जावा आधारित स्वीकृति परीक्षण के बारे में एक दिलचस्प लिंक है

मुझे उनमें से कुछ मिल गए हैं, लेकिन मुझे यकीन नहीं है कि कौन सा चुनना है।

वास्तव में, ऊपर वर्णित एक को देखो।

अगर मैं पहले से ही एक मॉकिंग लाइब्रेरी (जैसे मॉकिटो) का उपयोग करता हूं तो क्या बीडीडी फ्रेमवर्क का उपयोग करना समझ में आता है?

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


आपने जो कहा वह गलत नहीं है, लेकिन इसका मतलब यह नहीं है कि आप अपने यूनिट परीक्षणों को अधिक BDD- फ्रेंडली शैली में नहीं लिख सकते। उदाहरण के आधार पर नहीं, बल्कि एक बेकार सुविधा भी नहीं। docs.mockito.googlecode.com/hg/org/mockito/BDDMockito.html
cwash

7

मैंने मूल रूप से सादे बीयूनाइट के साथ अपना बीडीडी किया था, लेकिन मैं जदवे को हाल ही में देख रहा हूं क्योंकि यह लगभग 1: 1 है जो मैं ज्यूनिट के साथ कर रहा था। यह jUnit के शीर्ष पर भी चलता है इसलिए यह पहले से ही ग्रहण पर काम करता है और हडसन जैसे निरंतर एकीकरण प्रणालियों पर काम करने के लिए कॉन्फ़िगर करना भी आसान है। वास्तव में दूसरों के साथ तुलना नहीं कर सकते, लेकिन JDave के साथ मेरे अनुभव अब तक अच्छे रहे हैं।

ओह, और यह मॉक का उपयोग करने के लिए एक बेवकूफ विचार नहीं है! वे विशेष रूप से टीडीडी / बीडीडी से बंधे नहीं हैं, उनका उद्देश्य सामान्य रूप से परीक्षण के बोझ को कम करना है।


6

वाह, मैं देख रहा हूं कि विषय गर्म है, बहुत अच्छे उत्तर ...

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

व्यवहार प्रेरित विकास लेख अवधारणा और कुछ अच्छे लेख के लिए लिंक को सारांशित (एंड्रयू ग्लोवर द्वारा लिखित एक तरह)। इसके अलावा, इस धागे के विषय के लिए, यह BDD चौखटे के बजाय एक व्यापक (I suppose) लिस्टिंग देता है, उनमें से एक अच्छी संख्या जावा के लिए है।
यह फ्रेमवर्क चुनने की समस्या को हल नहीं करता है लेकिन कम से कम यह खोज को कम करेगा ...

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


4

मैंने ककड़ी-जेवीएम (पहले Cuke4Duke के रूप में विकसित) की कोशिश की। यह विनिर्देशन के लिए गेरकिन डीएसएल का उपयोग करता है, जिसे सादे पाठ के रूप में संग्रहीत किया जाता है।

ग्रहण 4.2 में ककड़ी-जेवीएम उदाहरण

इसे JUnit परीक्षण के रूप में चलाया जा सकता है। तो इसका उपयोग शुरू करने के लिए एकमात्र समस्या व्यापार लोगों या उत्पाद प्रबंधक को पढ़ना / लिखना है। सूत्रों में बताया गया है।

परिणाम


3

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

कुछ समस्याएं भी हैं। हमने जावा 6 को बंद कर दिया है। कभी-कभी निष्पादन के दौरान कुछ परिदृश्य चरणों की अनदेखी की जाती है। यह पता लगा सकता है कि बग कहाँ है।


2
@ आपकी समस्या यह हो सकती है कि चरणबद्ध चरणों को विफल होने के बजाय पास (डिफ़ॉल्ट व्यवहार) के रूप में गिना जाए? यदि यह आपकी समस्या है, तो आप लंबित कार्यसमूह को कॉन्फ़िगर कर सकते हैं: jarvana.com/jarvana/view/org/jbehave/jbehave-core/2.2.1/……
JeffH

3

मेरी टीम ने JBehave का उपयोग सफलता के साथ किया है - हमने EasyB का उपयोग करने के बाद इसे स्थानांतरित किया और इससे निपटने के लिए सादे पाठ परिदृश्य फ़ाइलों को आसान पाया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.