{"id":59,"date":"2011-03-04T09:21:00","date_gmt":"2011-03-04T09:21:00","guid":{"rendered":"https:\/\/wdev-blog.azurewebsites.net\/index.php\/2011\/03\/04\/behavior-driven-development\/"},"modified":"2011-03-04T09:21:00","modified_gmt":"2011-03-04T09:21:00","slug":"behavior-driven-development","status":"publish","type":"post","link":"http:\/\/panahy.nl\/index.php\/2011\/03\/04\/behavior-driven-development\/","title":{"rendered":"Behavior Driven Development"},"content":{"rendered":"<p>Dan North in his <a href=\"http:\/\/dannorth.net\/introducing-bdd\/\">blog <\/a>about Behavior Driven Development write the following:<\/p>\n<div><\/div>\n<div>&#8220;<span style=\"color: rgb(85, 85, 85); font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px; \"> If we could develop a consistent vocabulary for analysts, testers, developers, and the business, then we would be well on the way to eliminating some of the ambiguity and miscommunication that occur when technical people talk to business people.<\/span>&#8220;<\/div>\n<div>He describes BDD as follows:<\/div>\n<div><\/div>\n<div>&#8220;<span style=\"font-family: sans-serif; font-size: 13px; line-height: 19px; \">BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.<\/span>&#8220;<\/div>\n<div><\/div>\n<div><span style=\"font-size: 13px; line-height: 19px; font-family: sans-serif; \"><\/p>\n<p style=\"margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; \">The practices of BDD include:<\/p>\n<ul style=\"line-height: 1.5em; list-style-type: square; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-image: url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAYAAABhPKSIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUeF7NjbEJAAAIw7zRu\/w5ouBUBEeHDM2QGiA8kObBULuFcJbSXN8T78SqnpKltAIAAAAASUVORK5CYII=); \">\n<li style=\"margin-bottom: 0.1em; \">Establishing the goals of different stakeholders required for a vision to be implemented<\/li>\n<li style=\"margin-bottom: 0.1em; \">Drawing out features which will achieve those goals using <a href=\"http:\/\/en.wikipedia.org\/wiki\/Behavior_driven_development#Feature_injection\" style=\"text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; \">feature injection<\/a><\/li>\n<li style=\"margin-bottom: 0.1em; \">Involving stakeholders in the implementation process through <a href=\"http:\/\/en.wikipedia.org\/wiki\/Outside-in_software_development\" title=\"Outside-in software development\" style=\"text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; \">outside-in software development<\/a><\/li>\n<li style=\"margin-bottom: 0.1em; \">Using examples to describe the behavior of the application, or of units of code<\/li>\n<li style=\"margin-bottom: 0.1em; \">Automating those examples to provide quick feedback and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Regression_testing\" style=\"text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; \">regression testing<\/a><\/li>\n<li style=\"margin-bottom: 0.1em; \">Using &#8216;should&#8217; when describing the behavior of software to help clarify responsibility and allow the software&#8217;s functionality to be questioned<\/li>\n<li style=\"margin-bottom: 0.1em; \">Using &#8216;ensure&#8217; when describing responsibilities of software to differentiate outcomes in the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Scope_(programming)\" title=\"Scope (programming)\" style=\"text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; \">scope<\/a> of the code in question from side-effects of other elements of code.<\/li>\n<li style=\"margin-bottom: 0.1em; \">Using <a href=\"http:\/\/en.wikipedia.org\/wiki\/Mock_object\" title=\"Mock object\" style=\"text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; \">mocks<\/a> to stand-in for collaborating modules of code which have not yet been written<\/li>\n<\/ul>\n<div><\/div>\n<p><\/span><\/div>\n<div>Se also: <a href=\"http:\/\/en.wikipedia.org\/wiki\/Behavior_driven_development\">http:\/\/en.wikipedia.org\/wiki\/Behavior_driven_development<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dan North in his blog about Behavior Driven Development write the following: &#8220; If we could develop a consistent vocabulary for analysts, testers, developers, and the business, then we would be well on the way to eliminating some of the ambiguity and miscommunication that occur when technical people talk to business people.&#8220; He describes BDD &hellip; <a href=\"http:\/\/panahy.nl\/index.php\/2011\/03\/04\/behavior-driven-development\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Behavior Driven Development&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[55],"tags":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"Pouya Panahy","author_link":"http:\/\/panahy.nl\/index.php\/author\/pouya\/"},"uagb_comment_info":0,"uagb_excerpt":"Dan North in his blog about Behavior Driven Development write the following: &#8220; If we could develop a consistent vocabulary for analysts, testers, developers, and the business, then we would be well on the way to eliminating some of the ambiguity and miscommunication that occur when technical people talk to business people.&#8220; He describes BDD&hellip;","_links":{"self":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts\/59"}],"collection":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/comments?post=59"}],"version-history":[{"count":0,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts\/59\/revisions"}],"wp:attachment":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/media?parent=59"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/categories?post=59"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/tags?post=59"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}