{"id":4412,"date":"2022-01-31T07:00:00","date_gmt":"2022-01-31T07:00:00","guid":{"rendered":"https:\/\/www.diogonunes.com\/blog\/?p=4412"},"modified":"2022-02-03T13:48:53","modified_gmt":"2022-02-03T13:48:53","slug":"testers-toolbox-6-dev-methodologies","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/","title":{"rendered":"Development processes (Toolbox #6)"},"content":{"rendered":"<figure id=\"attachment_4429\" aria-describedby=\"caption-attachment-4429\" style=\"width: 580px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?resize=580%2C387&#038;ssl=1\" alt=\"\" width=\"580\" height=\"387\" class=\"size-large wp-image-4429\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?resize=1024%2C683&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?resize=400%2C267&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?resize=768%2C512&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?resize=1536%2C1025&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?resize=1200%2C801&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?w=1920&amp;ssl=1 1920w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?w=1740&amp;ssl=1 1740w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><figcaption id=\"caption-attachment-4429\" class=\"wp-caption-text\">Photo by <a href=\"https:\/\/unsplash.com\/@anniespratt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Annie Spratt<\/a> on <a href=\"https:\/\/unsplash.com\/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><br \/><\/figcaption><\/figure>\n<blockquote>\n<p><strong>tl;dr<\/strong> TDD, ATDD and BDD are different development practices that favour quality.<\/p>\n<p>\ud83c\udfc6 This post was featured in <a href=\"https:\/\/softwaretestingnotes.substack.com\/p\/issue-44-software-testing-notes\">Software Testing Notes #44<\/a><\/p>\n<\/blockquote>\n<p><!--more--><\/p>\n<h2>Theory<\/h2>\n<p>Neither of these methodologies are &#8220;testing&#8221; by itself. They are development practices that foster quality, which in turn make testing easier.<\/p>\n<h3>TDD: (Unit) Test Driven Development<\/h3>\n<blockquote>\n<p>Write <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/types\">unit tests<\/a> before writing the code that makes those tests pass.<\/p>\n<\/blockquote>\n<p>The TDD cycle can be summarised as &#8220;Red-Green-Refactor&#8221;. First, you write a set of unit tests that describe the code behaviour that you want to implement. If you run those tests, they will be failing (red), because that behaviour is not yet implemented. Second, you write the simplest code required to make those tests pass (green). If you wanted, you could stop here. Usually developers go a step further and improve that code to be more resilient and maintainable (refactor).<\/p>\n<p>Unit tests tell if the code does what the developer expected it to do, at the method level, in isolation from the rest of the codebase.<\/p>\n<h3>ATDD: Acceptance Test Driven Development<\/h3>\n<blockquote>\n<p>Write <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/types\">acceptance tests<\/a> before writing the code that makes those tests pass.<\/p>\n<\/blockquote>\n<p>The ATDD cycle follows the same &#8220;Red-Green-Refactor&#8221; from TDD. The difference is the type of test that is created in the &#8220;Red&#8221; step. In fact, the two methodologies can be used together, as <a href=\"https:\/\/sites.google.com\/site\/unclebobconsultingllc\/tdd-with-acceptance-tests-and-unit-tests\">Robert C. Martin<\/a> illustrates: &#8220;a developer runs the acceptance tests and notices what fails; then they write unit tests that force them to write the code that will make some small portion of the acceptance tests pass; they keep running the acceptance tests to see how much is working as expected, and they keep adding unit tests and code until all the acceptance tests pass&#8221;.<\/p>\n<p>Acceptance tests tell if the code does what the product\/client expected it to do, at the system level, in collaboration with the rest of the codebase.<\/p>\n<h3>OID: Outside-In Development<\/h3>\n<blockquote>\n<p>OID works by using automation tools combined with scenarios from a collaborative session to create a guide for Developers; this results in ensuring Developers develop what the business wants.<\/p>\n<p>\u2014 <a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-3\/\">Mark Winteringham<\/a><\/p>\n<p>(\u2026) people started working <em>outside-in<\/em>, from the User Interface (UI) through which users experienced the system&#8217;s behaviour, to the controllers, models, microservices (API), classes, etc., until they finally had working software that mattered to the stakeholders<\/p>\n<p>\u2014 <a href=\"https:\/\/lizkeogh.com\/2011\/06\/27\/atdd-vs-bdd-and-a-potted-history-of-some-related-stuff\/\">Liz Keogh<\/a><\/p>\n<\/blockquote>\n<p>OID is starts similar to ATDD. Both methodologies start by specifying the behaviour of your system as seen from the outside (see <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/types\">black box testing<\/a>). These specifications tell developers what their code needs to accomplish.<\/p>\n<p>There&#8217;s a small difference though. OID is not so prescriptive about test automation as ATDD is. Listen to <a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-3\/\">Mark Winteringham<\/a>: &#8220;The assumption from Testers is that because OID uses tools that are typically related to automated testing that must mean OID is automated testing. OID helps Developers design good code and deliver what the business really wants. Not deliver testing.&#8221;<\/p>\n<p>OID is less about technology and testing and more about process and collaborating; it was an <a href=\"https:\/\/dannorth.net\/whats-in-a-story\/\">evolutionary step<\/a> towards behaviour driven development.<\/p>\n<h3>BDD: Behaviour Driven Development<\/h3>\n<blockquote>\n<p>BDD in a nutshell: Using examples at multiple levels to create a shared understanding and reduce uncertainty to deliver software that matters.<\/p>\n<p>\u2014 Dan North, creator of BDD<\/p>\n<\/blockquote>\n<p>BDD is an OID methodology. It starts at the outside by identifying business outcomes, and then drills down into the features that will achieve those outcomes. It focuses heavily on conversations between different roles, using examples to clarify requirements, and describing those requirements in a language readable by all participants.<\/p>\n<blockquote>\n<p>If you&#8217;re not having conversations, you&#8217;re not doing BDD. Order of importance: having conversations > capturing conversations > automating conversations<\/p>\n<p>\u2014 <a href=\"https:\/\/lizkeogh.com\/2014\/01\/22\/using-bdd-with-legacy-systems\/\">Liz Keogh<\/a><\/p>\n<\/blockquote>\n<p>Each feature is captured as a <strong>story<\/strong>. Stories are descriptions of <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/concepts\/requirements.md\">requirements<\/a> and their business benefits. They use a language agreed and understood by everyone \u2014 product owner, developer and tester. It includes a set of acceptance criteria, a list of statements that must be true to declare the story &#8220;done&#8221;.<\/p>\n<blockquote>\n<p>This will likely be an iterative process. The stakeholder will have an idea of what they want but will not know how much work will be involved. With the help of the technical and testing experts, they will understand the cost\/benefit of each scenario and make a judgement about whether they want it.<\/p>\n<p>\u2014 <a href=\"https:\/\/dannorth.net\/whats-in-a-story\/\">Dan North<\/a><\/p>\n<\/blockquote>\n<p>To describe a story we need words. If we use words from a natural language (like English) then anyone will be able to read it, but without some structure everyone&#8217;s writing style would affect the readability of the story. To avoid that, some rules were introduced and that&#8217;s how the <strong>Gherkin language<\/strong> was born, also known as the Given-When-Then syntax.<\/p>\n<blockquote>\n<p>If you look up anything around BDD, you&#8217;re likely to find conversation, collaboration, scenarios and examples at its core, together with suggestions for how to automate them. If you look further, you&#8217;ll find Three Amigos and the Gherkin syntax and Cucumber (\u2026) and a host of other tools.<\/p>\n<p>\u2014 <a href=\"https:\/\/lizkeogh.com\/2015\/03\/27\/what-is-bdd\/\">Liz Keogh<\/a><\/p>\n<\/blockquote>\n<p>Using this common language, it&#8217;s time to gather the team to write these stories together. The purpose is to uncover more information and refine the idea, discovering assumptions and ambiguities.<\/p>\n<blockquote>\n<p>We involve members from testing, development, and business in an informal meeting that is more typically known as &#8220;<a href=\"https:\/\/www.stickyminds.com\/sites\/default\/files\/magazine\/file\/2013\/3971888.pdf\">Three amigos<\/a>&#8221; to discuss and question what we plan to build. The goal is to dispel any incorrect assumptions (\u2026) and ignorance we have around what we want to deliver.<\/p>\n<p>\u2014 <a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-2\/\">Mark Winteringham<\/a><\/p>\n<p>The output of these conversations is our feature files, with scenarios that provide examples of the features, based on the information that we have uncovered throughout the collaborative conversations.<\/p>\n<p>\u2014 <a href=\"https:\/\/danashby.co.uk\/2017\/02\/03\/bdd-and-the-real-primary-purpose-of-feature-files\/\">Dan Ashby<\/a><\/p>\n<\/blockquote>\n<h2>Practice<\/h2>\n<h3>TDD<\/h3>\n<p>For every method or class you need to implement, repeat the &#8220;Red-Green-Refactor&#8221; cycle:<\/p>\n<ol>\n<li>Decide what code behaviour you want to implement;<\/li>\n<li>Write a set of unit tests that assert that behaviour;<\/li>\n<li>Run those tests \u2014 they should fail;<\/li>\n<li>Write enough code to make them pass;<\/li>\n<li>Run those tests \u2014 they should pass;<\/li>\n<li>Refactor the code, and repeat steps 4-5.<\/li>\n<\/ol>\n<p>These unit tests usually cover happy and sad paths (see <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/types\">Test types: Unit tests<\/a>).<\/p>\n<h3>ATDD<\/h3>\n<p>For every feature or acceptance criteria, repeat this cycle:<\/p>\n<ol>\n<li>Write a list of acceptance criteria to consider a feature done;<\/li>\n<li>Automate those criteria into acceptance tests;<\/li>\n<li>Run those tests \u2014 they should fail;<\/li>\n<li>Decide what code changes are necessary to pass those tests;\n<ul>\n<li>(optional) For each code change, use the &#8220;Red-Green-Refactor&#8221; cycle;<\/li>\n<\/ul>\n<\/li>\n<li>Run those tests \u2014 they should pass.<\/li>\n<\/ol>\n<p>These acceptance tests usually cover just the happy path (see <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/types\">Test types: Acceptance tests<\/a>).<\/p>\n<h3>BDD<\/h3>\n<p>For every feature:<\/p>\n<ol>\n<li>Gather different team roles to discuss the feature, aka. &#8220;three amigos&#8221;;<\/li>\n<li>Capture the feature into a story using scenarios, aka. <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/notebook\/specification-by-example.md\">specification by example<\/a>;<\/li>\n<li>Write code to fulfil the acceptance criteria of that story;<\/li>\n<li>(optional) Write code to assert those criteria, aka. executable specification;<\/li>\n<li>(optional) Write code to merge all features into a single file, aka. living documentation.<\/li>\n<\/ol>\n<h4>Three amigos<\/h4>\n<p>As <a href=\"https:\/\/lizkeogh.com\/2011\/03\/04\/step-away-from-the-tools\/\">Liz Keogh<\/a> puts it: &#8220;There are things about your domain that you don&#8217;t know or you&#8217;ve misunderstood; by talking through examples in groups, the chances of uncovering these gaps is increased.&#8221;<\/p>\n<p>Your role in these sessions is to generate questions and ensure the conversation stays inside the scope of the feature. It&#8217;s also a good opportunity to evaluate the <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/concepts\/testability\">testability<\/a> of that feature.<\/p>\n<blockquote>\n<p>A tester using BDD will be able to ask questions, collect information and help identify risks to inform other testing activities. Questions are your best tool for collaboration sessions:<\/p>\n<ul>\n<li>&#8220;What, Who, Where, When, Why&#8221; &#8211; see <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/toolbox\/mnemonics\"><strong><code>W5HEK<\/code><\/strong> mnemonic<\/a><\/li>\n<li>&#8220;Maybe this is a stupid question but\u2026&#8221; &#8211; Those questions identify a lot of assumptions<\/li>\n<li>&#8220;So just to confirm\u2026&#8221; &#8211; Rephrasing with your own words validates your understanding<\/li>\n<\/ul>\n<p>\u2014 <a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-2\/\">Mark Winteringham<\/a><\/p>\n<\/blockquote>\n<h4>Specification By Example (SBE)<\/h4>\n<p>Detailing a feature into a story using scenarios is hard. SBE is an old concept but it was recently popularised by <a href=\"https:\/\/gojko.net\/books\/specification-by-example\/\">Gojko Adzic<\/a>&#8216;s book. The goal of these specifications is to &#8220;improve quality, reduce rework and collaborate better&#8221;.<\/p>\n<p><a href=\"https:\/\/cucumber.io\/blog\/bdd\/example-mapping-introduction\/\">Matt Wynne<\/a> then proposed a simplified implementation of SBE called Example Mapping.<\/p>\n<blockquote>\n<p>A low-tech method for making this conversation (three amigos) short and powerfully productive. In short, it uses different coloured post-it notes as visual aids to help keep track of rules (acceptance-criteria), examples (Gherkin scenarios) and questions.<\/p>\n<\/blockquote>\n<p>For a detailed guide on how to use this technique in practice, continue to this <a href=\"https:\/\/dialex.github.io\/start-testing\/#\/notebook\/specification-by-example\">notebook page<\/a>.<\/p>\n<h4>Story<\/h4>\n<pre><code class=\"gherkin\">Title (one line describing the story)\n\n# Narrative #\n\nAs a [role]\nI want [feature]\nSo that [benefit]\n\n# Acceptance Criteria #\n\nScenario: Title\nGiven [context]\nWhen [action\/event]\nThen [result]\n<\/code><\/pre>\n<blockquote>\n<ul>\n<li>The title should describe an activity<\/li>\n<li>The narrative should include a Role, a Feature and a Benefit<\/li>\n<li>The scenario title should say what&#8217;s different<\/li>\n<li>The scenario should be described in terms of Context, Actions and Results<\/li>\n<li>The given should define all of, and no more than, the required context<\/li>\n<li>The action should describe the feature<\/li>\n<\/ul>\n<p>\u2014 <a href=\"https:\/\/dannorth.net\/whats-in-a-story\/\">Dan North<\/a><\/p>\n<\/blockquote>\n<h4>Living documentation (BDD)<\/h4>\n<p>The tool that reads Gherkin and executes test code is called <a href=\"https:\/\/cucumber.io\/\">Cucumber<\/a>. If your team decides to write automated checks for each scenario (i.e. executable specification) then you can go a step further and achieve living documentation.<\/p>\n<p>If you automated your scenarios, most likely you have a collection of <code>*.feature<\/code> files. You can find (or build) a tool that reads these files and automatically generates web pages (<code>*.html<\/code> files).<\/p>\n<p>The end goal is to have an automated process that reads your scenarios, transforms them into clean web pages, and publishes them online for any team member to access. That means you will have an always up-to-date documentation of the current functionality of your software \u2014 that&#8217;s the origin of the term <em>living<\/em> documentation.<\/p>\n<h4>All together now!<\/h4>\n<blockquote>\n<p>There are teams ignoring the collaborative side of BDD, focusing too much on using a Gherkin syntax as means to build test cases and (\u2026) focus on automating test coverage. It&#8217;s important to remember that Gherkin is for development guidance, not test coverage.<\/p>\n<p>\u2014 <a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-4\/\">Mark Winteringham<\/a><\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/www.thoughtworks.com\/insights\/blog\/specification-example\">Alister Scott<\/a> wrote a blog post about a fictional team, illustrating their journey from ATDD to BDD, highlighting the difficulties along the way. They start with automated acceptance checks (ATDD), then convert them to Gherkin scenarios (BDD), and finally end with living documentation (BDD).<\/p>\n<p>He highlights several requirements of a successful BDD, here are a few:<\/p>\n<blockquote>\n<ul>\n<li>Abstract: the scenarios should be high-level enough to hide details and implementations;<\/li>\n<li>Language: terminology should be consistent to ensure a shared understanding;<\/li>\n<li>Flows: only a few (1-3) end-to-end flows, not a combination of every decision point.<\/li>\n<\/ul>\n<\/blockquote>\n<h2>Teachers<\/h2>\n<ul>\n<li><a href=\"https:\/\/watirmelon.blog\/\">Alister Scott<\/a><\/li>\n<li><a href=\"https:\/\/danashby.co.uk\/\">Dan Ashby<\/a><\/li>\n<li><a href=\"https:\/\/dannorth.net\/\">Dan North<\/a> (author of BDD)<\/li>\n<li><a href=\"http:\/\/gasparnagy.com\/\">G\u00e1sp\u00e1r Nagy<\/a><\/li>\n<li><a href=\"https:\/\/lizkeogh.com\">Liz Keogh<\/a><\/li>\n<li><a href=\"https:\/\/www.mwtestconsultancy.co.uk\/\">Mark Winteringham<\/a><\/li>\n<\/ul>\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/lizkeogh.com\/2011\/06\/27\/atdd-vs-bdd-and-a-potted-history-of-some-related-stuff\/\">ATDD vs. BDD, and a potted history of some related stuff<\/a><\/li>\n<li><a href=\"https:\/\/danashby.co.uk\/2017\/02\/03\/bdd-and-the-real-primary-purpose-of-feature-files\/\">BDD and the real primary purpose of feature files<\/a><\/li>\n<li><a href=\"https:\/\/cucumber.io\/blog\/bdd\/example-mapping-introduction\/\">Introducing Example Mapping<\/a><\/li>\n<li><a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-2\/\">Is BDD testing? (part 2)<\/a><\/li>\n<li><a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-3\/\">Is BDD testing? (part 3)<\/a><\/li>\n<li><a href=\"https:\/\/www.mwtestconsultancy.co.uk\/bdd-testing-part-4\/\">Is BDD testing? (part 4)<\/a><\/li>\n<li><a href=\"https:\/\/gojko.net\/books\/specification-by-example\/\">Specification by Example (book)<\/a><\/li>\n<li><a href=\"https:\/\/www.thoughtworks.com\/insights\/blog\/specification-example\">Specification by Example (example)<\/a><\/li>\n<li><a href=\"https:\/\/lizkeogh.com\/2011\/03\/04\/step-away-from-the-tools\/\">Step Away from the Tools<\/a><\/li>\n<li><a href=\"https:\/\/sites.google.com\/site\/unclebobconsultingllc\/tdd-with-acceptance-tests-and-unit-tests\">TDD with Acceptance Tests and Unit Tests<\/a><\/li>\n<li><a href=\"https:\/\/www.stickyminds.com\/sites\/default\/files\/magazine\/file\/2013\/3971888.pdf\">The Three Amigos: all for one, one for all<\/a><\/li>\n<li><a href=\"https:\/\/lizkeogh.com\/2014\/01\/22\/using-bdd-with-legacy-systems\/\">Using BDD with Legacy Systems<\/a><\/li>\n<li><a href=\"https:\/\/lizkeogh.com\/2015\/03\/27\/what-is-bdd\/\">What is BDD?<\/a><\/li>\n<li><a href=\"https:\/\/dannorth.net\/whats-in-a-story\/\">What&#8217;s in a story?<\/a><\/li>\n<li><a href=\"https:\/\/alisterbscott.com\/2020\/05\/28\/bdd-in-2020\/\">BDD in 2020<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>tl;dr TDD, ATDD and BDD are different development practices that favour quality. \ud83c\udfc6 This post was featured in Software Testing Notes #44<\/p>\n","protected":false},"author":1,"featured_media":4429,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[51],"tags":[86,55],"class_list":["post-4412","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-work","tag-course","tag-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Development processes (Toolbox #6) - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"TDD, ATDD and BDD are different development practices that favour quality.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Development processes (Toolbox #6) - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"TDD, ATDD and BDD are different development practices that favour quality.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-31T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-03T13:48:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1281\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"Development processes (Toolbox #6)\",\"datePublished\":\"2022-01-31T07:00:00+00:00\",\"dateModified\":\"2022-02-03T13:48:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\"},\"wordCount\":1819,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1\",\"keywords\":[\"course\",\"testing\"],\"articleSection\":[\"Work\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\",\"name\":\"Development processes (Toolbox #6) - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1\",\"datePublished\":\"2022-01-31T07:00:00+00:00\",\"dateModified\":\"2022-02-03T13:48:53+00:00\",\"description\":\"TDD, ATDD and BDD are different development practices that favour quality.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1\",\"width\":1920,\"height\":1281},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Development processes (Toolbox #6)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Development processes (Toolbox #6) - The Geeky Gecko","description":"TDD, ATDD and BDD are different development practices that favour quality.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/","og_locale":"en_US","og_type":"article","og_title":"Development processes (Toolbox #6) - The Geeky Gecko","og_description":"TDD, ATDD and BDD are different development practices that favour quality.","og_url":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/","og_site_name":"The Geeky Gecko","article_published_time":"2022-01-31T07:00:00+00:00","article_modified_time":"2022-02-03T13:48:53+00:00","og_image":[{"width":1920,"height":1281,"url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1","type":"image\/jpeg"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"Development processes (Toolbox #6)","datePublished":"2022-01-31T07:00:00+00:00","dateModified":"2022-02-03T13:48:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/"},"wordCount":1819,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1","keywords":["course","testing"],"articleSection":["Work"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/","url":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/","name":"Development processes (Toolbox #6) - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1","datePublished":"2022-01-31T07:00:00+00:00","dateModified":"2022-02-03T13:48:53+00:00","description":"TDD, ATDD and BDD are different development practices that favour quality.","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1","width":1920,"height":1281},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-6-dev-methodologies\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Development processes (Toolbox #6)"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/annie-spratt-QckxruozjRg-unsplash.jpg?fit=1920%2C1281&ssl=1","jetpack-related-posts":[{"id":2497,"url":"https:\/\/www.diogonunes.com\/blog\/testing-for-agile-teams-summary\/","url_meta":{"origin":4412,"position":0},"title":"Testing for agile teams: Summary","author":"Diogo Nunes","date":"1 August, 2016","format":false,"excerpt":"This post is part of the \"Testing for Agile Teams\" series. Incrementally delivering business value, through short iterations (SCRUM) and virtuous loops of feedback (XP). Roles' boundaries are blurred, everyone's focused on quality. Testers help customers clarify requirements, turn those into tests that guide development, and provide a holistic viewpoint\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/03\/Agile-Testing-Book.jpg?fit=489%2C340&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2546,"url":"https:\/\/www.diogonunes.com\/blog\/tests-that-support-the-team\/","url_meta":{"origin":4412,"position":1},"title":"Testing for agile teams: Tests that support the team (#4)","author":"Diogo Nunes","date":"13 February, 2017","format":false,"excerpt":"This post is part of the \"Testing for Agile Teams\" series. Technology-Facing Tests (Q1) Strive to make time to test more complex scenarios and edge cases. TDD means writing a test that captures the behavior of a tiny bit of code and then working the code until the test passes.\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/03\/Agile-Testing-Book-Part-5.jpg?fit=489%2C340&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2536,"url":"https:\/\/www.diogonunes.com\/blog\/four-testing-quadrants\/","url_meta":{"origin":4412,"position":2},"title":"Testing for agile teams: The four testing quadrants (#3)","author":"Diogo Nunes","date":"16 January, 2017","format":false,"excerpt":"This post is part of the \"Testing for Agile Teams\" series. We do different types of testing to accomplish different goals. Your team has its own unique context. It's a tool, not a rule. Tests that support the team Supports the team as it develops the product: Drives development to\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/03\/Agile-Testing-Book-Part-4.jpg?fit=489%2C340&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":4371,"url":"https:\/\/www.diogonunes.com\/blog\/testing-concepts-4\/","url_meta":{"origin":4412,"position":3},"title":"Tester&#8217;s responsibilities (Concepts #4)","author":"Diogo Nunes","date":"1 November, 2021","format":false,"excerpt":"tl;dr Our responsibility is to master the skills required to fulfil the purpose of testing \ud83c\udfc6 This post was featured in Software Testing Weekly #96 This is part of my free testing course, focused on teaching you the fundamentals of testing \ud83d\ude09 Theory Your responsibility as a tester is to\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/hector-j-rivas-V0OsHPIh4To-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/hector-j-rivas-V0OsHPIh4To-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/hector-j-rivas-V0OsHPIh4To-unsplash.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/hector-j-rivas-V0OsHPIh4To-unsplash.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/hector-j-rivas-V0OsHPIh4To-unsplash.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3867,"url":"https:\/\/www.diogonunes.com\/blog\/test-strategy-saddest-ppiratee-mnemonic\/","url_meta":{"origin":4412,"position":4},"title":"Creating a test strategy using questions","author":"Diogo Nunes","date":"7 December, 2020","format":false,"excerpt":"He doesn't have a test strategy \u261d\ufe0f \ud83c\udfc6 This post was featured in Software Testing Weekly, issue 49 The test strategy is defined at the start of the project and it can be revisited and reviewed during the duration of that project. The strategy is usually driven by the testers,\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/05\/SadPirate1.jpg?fit=640%2C360&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/05\/SadPirate1.jpg?fit=640%2C360&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/05\/SadPirate1.jpg?fit=640%2C360&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2523,"url":"https:\/\/www.diogonunes.com\/blog\/testing-for-agile-teams\/","url_meta":{"origin":4412,"position":5},"title":"Testing for agile teams: Introduction (#1)","author":"Diogo Nunes","date":"10 October, 2016","format":false,"excerpt":"This post is part of the \"Testing for Agile Teams\" series. The agile way Remember the manifesto. Focus on delivering small chunks of business value in short cycles. Numerous implementations of the manifesto: Scrum, XP, Kanban, DSDM... Solve problems as a team of people who all feel responsible for delivering\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/03\/Agile-Testing-Book-Part-1.jpg?fit=489%2C340&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/4412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=4412"}],"version-history":[{"count":4,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/4412\/revisions"}],"predecessor-version":[{"id":4472,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/4412\/revisions\/4472"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/4429"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=4412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=4412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=4412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}