<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>Better Collaboration on Development Projects? Try BDD | Infinum</title>
		<atom:link href="https://infinum.com/blog/want-better-collaboration-on-development-projects-try-bdd/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/want-better-collaboration-on-development-projects-try-bdd/</link>
		<description>Building digital products</description>
		<lastBuildDate>Fri, 24 Apr 2026 14:02:14 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>7944https://infinum.com/uploads/2020/06/want-better-collaboration-on-development-projects-try-bdd-0.webp</url>
				</image>
				<title>Want Better Collaboration on Development Projects? Try BDD</title>
				<link>https://infinum.com/blog/want-better-collaboration-on-development-projects-try-bdd/</link>
				<pubDate>Thu, 04 Jun 2020 15:50:00 +0000</pubDate>
				<dc:creator>Neven Matas</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/want-better-collaboration-on-development-projects-try-bdd/</guid>
				<description>
					<![CDATA[<p>Feel like software development teams often behave like children throwing tantrums? Try behaviour-driven development to improve collaboration.</p>
<p>The post <a href="https://infinum.com/blog/want-better-collaboration-on-development-projects-try-bdd/">Want Better Collaboration on Development Projects? Try BDD</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-230"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	If you’ve engaged in the <a href="https://infinum.com/mobile-web-apps/">software development</a> trade at any level, you’ve probably seen countless examples of <em>x</em>-driven development paradigms and practices.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	Go through a couple of basic articles, and this is the sort of word salad you’ll definitely run into: ATDD, BDD, CDD, DDD, FDD, MDD, TDD, <a href="https://jaxenter.com/yolo-driven-development-methodology-113469.html">YOLODD</a>…</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-103"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-99">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-100'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-36-text js-typography blockquote__quote'
	data-id='es-101'
	>
	These are different answers to the age-old question of how to design, develop, test, and maintain software.</p>
		<div class="blockquote__caption-wrap">
					</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-106"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-104">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-105'
	>
	In the scope of this blog post, we’ll focus on <strong>BDD</strong> or <strong>behavior-driven development</strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-109"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-107">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-108'
	>
	As is the case with most things in software development, it’s not a silver bullet that will fit every team and project.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-112"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-110">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-111'
	>
	However, speaking from experience both in <a href="https://infinum.com/mobile-web-apps/">software testing</a> and product ownership, I believe BDD has the potential to level the playing field and <strong>help team members and business people speak the same language</strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-115"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-113">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-114'
	>
	Development teams behaving badly</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-118"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-116">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-117'
	>
	Do you feel like software development teams often behave like neglected children throwing tantrums?</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-121"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-119">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-120'
	>
	Then you’ve probably heard some of the old tropes a thousand times:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-124"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-122">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-123'
	>
	<li><em>We’re agile, we don’t need no documentation.</em></li><li><em>The testers were supposed to test that.</em></li><li><em>We don’t have time to automate x.</em></li><li><em>We can cover the edge cases later.</em></li><li><em>Users don’t even care about that feature.</em></li><li><em>Wasn’t that out of scope?</em></li><li><em>It works on my machine.</em></li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-129"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-125">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-126'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-36-text js-typography blockquote__quote'
	data-id='es-127'
	>
	When your development process is driven by excuses and compromises, you cannot handle change.</p>
		<div class="blockquote__caption-wrap">
					</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-132"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-130">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-131'
	>
	That’s why <strong>some software projects inevitably slow down</strong> and end up in spaghetti code and rogue bugs after a couple of months or years.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-135"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-133">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-134'
	>
	Why does that happen? More often than not, the problem lies in the <strong>lack of collaboration and mutual understanding</strong>, not a lack of technical expertise. BDD can help with that.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-138"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-136">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-137'
	>
	So, what’s BDD really about?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-141"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-139">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-140'
	>
	Let’s start with the good old user story, the cornerstone of software specification nowadays.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-144"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-142">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-143'
	>
	If you look at BDD from a surface-level perspective, most people think it is just about using <a href="https://cucumber.io/docs/gherkin/reference/">Gherkin</a> to specify user stories.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-147"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-145">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-146'
	>
	You start with specifying some acceptance criteria using Gherkin and store them into <strong>.feature</strong> files.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-php github-light" data-language="php" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">Feature</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #005cc5;">Blog</span><span class="token"> </span><span class="token" style="color: #005cc5;">posts</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #6f42c1;">Scenario</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #005cc5;">Viewing</span><span class="token"> </span><span class="token" style="color: #005cc5;">recent</span><span class="token"> </span><span class="token" style="color: #005cc5;">blog</span><span class="token"> </span><span class="token" style="color: #005cc5;">posts</span><span class="token">
</span></span><span class="line"><span class="token">     </span><span class="token" style="color: #005cc5;">When</span><span class="token"> </span><span class="token" style="color: #005cc5;">the</span><span class="token"> </span><span class="token" style="color: #005cc5;">visitor</span><span class="token"> </span><span class="token" style="color: #005cc5;">navigates</span><span class="token"> </span><span class="token" style="color: #005cc5;">to</span><span class="token"> </span><span class="token" style="color: #005cc5;">the</span><span class="token"> </span><span class="token" style="color: #005cc5;">Blog</span><span class="token"> </span><span class="token" style="color: #005cc5;">page</span><span class="token">
</span></span><span class="line"><span class="token">     </span><span class="token" style="color: #005cc5;">Then</span><span class="token"> </span><span class="token" style="color: #005cc5;">the</span><span class="token"> </span><span class="token" style="color: #005cc5;">visitor</span><span class="token"> </span><span class="token" style="color: #005cc5;">sees</span><span class="token"> </span><span class="token" style="color: #005cc5;">the</span><span class="token"> </span><span class="token" style="color: #005cc5;">header</span><span class="token"> </span><span class="token" style="color: #005cc5;">is</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Capsized Eight</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-152"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-150">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-151'
	>
	The next step is to parse those steps and implement them using their favorite test automation framework.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-155"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-153">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-154'
	>
	<a href="https://specflow.org/">SpecFlow</a>, <a href="https://cucumber.io/">Cucumber</a>, <a href="https://jbehave.org/">JBehave</a>, or <a href="https://fitnesse.org/FitNesse/UserGuide.html">FitNesse</a> might ring a bell already. Since we appreciate the simplicity of Python, our first weapon of choice for this exercise would be <a href="https://github.com/behave/behave">Behave</a> with a bit of Selenium WebDriver thrown in for good measure.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-157"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-php github-light" data-language="php" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #005cc5;">from</span><span class="token"> </span><span class="token" style="color: #005cc5;">behave</span><span class="token"> </span><span class="token" style="color: #005cc5;">import</span><span class="token"> </span><span class="token" style="color: #d73a49;">*</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">@</span><span class="token" style="color: #6f42c1;">when</span><span class="token">(</span><span class="token" style="color: #005cc5;">’the</span><span class="token"> </span><span class="token" style="color: #005cc5;">visitor</span><span class="token"> </span><span class="token" style="color: #005cc5;">navigates</span><span class="token"> </span><span class="token" style="color: #005cc5;">to</span><span class="token"> </span><span class="token" style="color: #005cc5;">the</span><span class="token"> </span><span class="token" style="color: #005cc5;">Blog</span><span class="token"> </span><span class="token" style="color: #005cc5;">page’</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #005cc5;">def</span><span class="token"> </span><span class="token" style="color: #6f42c1;">step_impl</span><span class="token">(</span><span class="token" style="color: #005cc5;">context</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #005cc5;">context</span><span class="token" style="color: #d73a49;">.</span><span class="token" style="color: #005cc5;">browser</span><span class="token" style="color: #d73a49;">.</span><span class="token" style="color: #6f42c1;">get</span><span class="token">(</span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">https://infinum.com/the-capsized-eight</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">@</span><span class="token" style="color: #6f42c1;">then</span><span class="token">(</span><span class="token" style="color: #005cc5;">’the</span><span class="token"> </span><span class="token" style="color: #005cc5;">visitor</span><span class="token"> </span><span class="token" style="color: #005cc5;">sees</span><span class="token"> </span><span class="token" style="color: #005cc5;">the</span><span class="token"> </span><span class="token" style="color: #005cc5;">header</span><span class="token"> </span><span class="token" style="color: #005cc5;">is</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">{header}</span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #005cc5;">’</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #005cc5;">def</span><span class="token"> </span><span class="token" style="color: #6f42c1;">step_impl</span><span class="token">(</span><span class="token" style="color: #005cc5;">context</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">header</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #005cc5;">actual_header</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #005cc5;">context</span><span class="token" style="color: #d73a49;">.</span><span class="token" style="color: #005cc5;">browser</span><span class="token" style="color: #d73a49;">.</span><span class="token" style="color: #6f42c1;">find_element_by_css_selector</span><span class="token">(</span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">h1.__title.__title--large</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #005cc5;">assert</span><span class="token">(</span><span class="token" style="color: #005cc5;">actual_header</span><span class="token" style="color: #d73a49;">.</span><span class="token" style="color: #005cc5;">text</span><span class="token"> </span><span class="token" style="color: #d73a49;">==</span><span class="token"> </span><span class="token" style="color: #005cc5;">header</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-160"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-158">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-159'
	>
	Easy, right? Seeing as test cases are usually related, you will be able to reuse some individual steps across your entire test suite.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-165"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-161">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-162'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-36-text js-typography blockquote__quote'
	data-id='es-163'
	>
	The problem is people usually spend most of their time discussing tools, which is of secondary importance here.</p>
		<div class="blockquote__caption-wrap">
					</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-168"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-166">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-167'
	>
	The way you implement BDD into your software development process is key to transforming your way of working and breaking down the old silos.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-171"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-169">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-170'
	>
	Three ways in which BDD helps with your development process</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-174"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-172">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-173'
	>
	1. It encourages communication and collaboration</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-177"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-175">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-176'
	>
	In any situation and context, communication is indispensable for success. A user story should not be a set of rigid criteria that are handed over to the development team like the Ten Commandments. A user story should be no more than an invitation to a discussion.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-180"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-178">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-179'
	>
	There is a very nice collaborative principle that can be employed around BDD called the <a href="https://www.agilealliance.org/glossary/three-amigos/">Three Amigos</a>. The Three Amigos usually consist of:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-183"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-181">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-182'
	>
	<li><strong>Product owner</strong>, who understands the business needs and what problem we are trying to solve</li><li><strong>Developer</strong>, who understands the technical perspective and how the problem can be solved</li><li><strong>Tester</strong>, who represents the user and understands the strengths and weaknesses of the system </li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-186"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-184">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-185'
	>
	These three in collaboration should come to an agreement on how to specify, develop, and test a specific feature to max out their chance of success. They should do it often and for every backlog work item that might be picked up for the sprint.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-189"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-187">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-188'
	>
	The discussion is usually structured and the outcome of their discussion can then be consistently formalized using a DSL like Gherkin, which is both human and machine-readable. The obvious added benefit is that any interested party can understand Gherkin, but not everyone has the ability to dig through Swagger docs and code snippets.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-192"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-190">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-191'
	>
	2. It makes the user a first-class citizen</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-195"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-193">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-194'
	>
	Too often, we find ourselves thinking about how to structure our API or how a particular feature should be presented to the user. While those are completely valid concerns, we often jump the gun and lose focus on the end goal.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-198"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-196">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-197'
	>
	By practicing BDD, you might end up dismissing parts of the feature because you realize they might be nonsensical and wasteful, or add others because you realize there is a certain use case that only the tester had in mind.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-201"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-199">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-200'
	>
	That happens because you tend to naturally:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-204"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-202">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-203'
	>
	<li><strong>Break down stories into digestible chunks</strong> that bring actual value to the user or value to the business</li><li><strong>Talk about real use cases</strong> and examples instead of the <em>lorem ipsums</em> of the world</li><li><strong>Think of the high-level implications</strong> on the user experience</li><li><strong>Think of narratives</strong> instead o raw requirements or tests</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-207"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-205">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-206'
	>
	3. It turns tests and documentation into living things</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-210"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-208">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-209'
	>
	In an ineffective system, each potential change in the application usually results in changing the specs, changing the test documentation, and changing the automation code.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-213"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-211">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-212'
	>
	Think of how badly the costs scale when you are doing the same thing three times over. Why not do all three in one fell swoop? Well, that’s where BDD can help.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-216"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-214">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-215'
	>
	When practicing BDD, you essentially:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-219"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-217">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-218'
	>
	<li>Get one <strong>consistently structured source of truth</strong> everyone can understand</li><li>Enable <strong>mutual understanding</strong> of which tests are being executed</li><li><strong>Ensure test maintenance</strong> because changes in feature docs need to be reflected in the test code</li><li><strong>Enable re-usability</strong> because once you&#8217;ve implemented a step, you can plug it in anywhere</li><li>Do <strong>test-first automation</strong> instead of the old <em>we&#8217;ll do it last if there&#8217;s time</em> principle</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-222"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-220">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-221'
	>
	Disrupt your old routines</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-225"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-223">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-224'
	>
	Regardless of whether I’ve left you intrigued or completely skeptical, I would encourage you (or dare you?) to <strong>disrupt your old routines</strong> and do a small-scale BDD experiment, it might illuminate some weak points you are currently unaware of.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-228"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-226">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-227'
	>
	If you do, feel free to share your experiences below!</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/want-better-collaboration-on-development-projects-try-bdd/">Want Better Collaboration on Development Projects? Try BDD</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>