{"id":987515848,"date":"2023-11-16T14:32:37","date_gmt":"2023-11-16T14:32:37","guid":{"rendered":"https:\/\/pmchampions.com\/specifications-by-testing-bdd-tdd-atdd\/"},"modified":"2023-12-08T14:27:22","modified_gmt":"2023-12-08T14:27:22","slug":"test-driven-specifications-bdd-tdd-atdd","status":"publish","type":"post","link":"https:\/\/pmchampions.com\/en\/test-driven-specifications-bdd-tdd-atdd\/","title":{"rendered":"Test-Driven Specifications: BDD, TDD, ATDD"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row admin_label=&#8221;Row&#8221; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#fff3cd&#8221; custom_margin=&#8221;30px||30px||false|false&#8221; custom_css_main_element=&#8221;overflow:visible&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_vertical=&#8221;5px&#8221; box_shadow_blur=&#8221;15px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/11\/spec-by-test-en.png&#8221; title_text=&#8221;spec-by-test-fr&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_blurb title=&#8221;Key Points&#8221; image=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/10\/key-point.png&#8221; alt=&#8221;key point&#8221; icon_placement=&#8221;left&#8221; image_icon_width_tablet=&#8221;&#8221; image_icon_width_phone=&#8221;20px&#8221; image_icon_width_last_edited=&#8221;on|phone&#8221; content_max_width_tablet=&#8221;&#8221; content_max_width_phone=&#8221;&#8221; content_max_width_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;Acme||||||||&#8221; header_font_size=&#8221;22px&#8221; background_color=&#8221;#edf8ff&#8221; image_icon_custom_margin=&#8221;1px|0px|0px|0px|false|false&#8221; image_icon_custom_padding=&#8221;||||false|false&#8221; width=&#8221;200px&#8221; width_tablet=&#8221;200px&#8221; width_phone=&#8221;130px&#8221; width_last_edited=&#8221;on|desktop&#8221; max_width=&#8221;200px&#8221; max_width_tablet=&#8221;200px&#8221; max_width_phone=&#8221;200px&#8221; max_width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; height_tablet=&#8221;&#8221; height_phone=&#8221;30px&#8221; height_last_edited=&#8221;on|phone&#8221; custom_margin=&#8221;-55px||||false|false&#8221; custom_margin_tablet=&#8221;-55px||||false|false&#8221; custom_margin_phone=&#8221;-40px||0px||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;5px|5px|0px|5px|false|false&#8221; child_filter_saturate=&#8221;200%&#8221; header_font_size_tablet=&#8221;22px&#8221; header_font_size_phone=&#8221;15px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_horizontal=&#8221;6px&#8221; box_shadow_vertical=&#8221;11px&#8221; box_shadow_blur=&#8221;8px&#8221; text_shadow_style=&#8221;preset1&#8243; text_shadow_vertical_length=&#8221;0.15em&#8221; text_shadow_blur_strength=&#8221;0.3em&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blurb][et_pb_text _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|30px||30px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>This article provides an introduction to specification methods through testing, including <strong>BDD,<\/strong> <strong>TDD<\/strong>, and <strong>ATDD.<\/strong><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;pmc-bullet&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>TESTING AS A SPECIFICATION TOOL, WHY?  <\/h2>\n<p>In a traditional approach, the analysis of a need is handled by different actors (<strong>project owner<\/strong>, developer, tester, ergonomist, etc.) who work separately.<\/p>\n<p>The <strong><a href=\"https:\/\/pmchampions.com\/en\/agile-testing-a-practice-like-no-other\/\"><u>Agile Testing<\/u><\/a><\/strong> approach and its tools propose to process analysis in a cooperative and progressive way and in a natural language that can be used by all.<\/p>\n<p>Multidisciplinary, non-siloed, and involved teams will be able to improve the quality of tests thanks to tools and methods such as <strong>ATDD<\/strong>, <strong>BDD, TDD<\/strong><strong>,<\/strong> etc.<\/p>\n<p>The degree of divergence varies across a team, but probably exists on any large and complex project.<\/p>\n<p>This divergence is exacerbated by modes of operation that promote an exchange of documents rather than actual communication and can lead to a loss of sight of end-user satisfaction.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#e7ffdd&#8221; custom_margin=&#8221;30px||30px||false|false&#8221; custom_css_main_element=&#8221;overflow:visible&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_vertical=&#8221;5px&#8221; box_shadow_blur=&#8221;15px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blurb title=&#8221;Vocabulary&#8221; image=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/11\/dictionary.png&#8221; alt=&#8221;Prerequisites&#8221; icon_placement=&#8221;left&#8221; content_max_width_tablet=&#8221;&#8221; content_max_width_phone=&#8221;&#8221; content_max_width_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;Acme||||||||&#8221; header_font_size=&#8221;22px&#8221; background_color=&#8221;#edf8ff&#8221; image_icon_custom_margin=&#8221;1px|0px|0px|0px|false|false&#8221; image_icon_custom_padding=&#8221;||||false|false&#8221; width=&#8221;200px&#8221; width_tablet=&#8221;200px&#8221; width_phone=&#8221;200px&#8221; width_last_edited=&#8221;on|desktop&#8221; max_width=&#8221;200px&#8221; max_width_tablet=&#8221;200px&#8221; max_width_phone=&#8221;200px&#8221; max_width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;-55px||||false|false&#8221; custom_margin_tablet=&#8221;-55px||||false|false&#8221; custom_margin_phone=&#8221;-55px||||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;5px|5px|0px|5px|false|false&#8221; child_filter_saturate=&#8221;200%&#8221; header_font_size_tablet=&#8221;22px&#8221; header_font_size_phone=&#8221;22px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_horizontal=&#8221;6px&#8221; box_shadow_vertical=&#8221;11px&#8221; box_shadow_blur=&#8221;8px&#8221; text_shadow_style=&#8221;preset1&#8243; text_shadow_vertical_length=&#8221;0.15em&#8221; text_shadow_blur_strength=&#8221;0.3em&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blurb][et_pb_text _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|30px||30px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><b>BDD: <\/b>Behavioral-Driven Development<span> <\/span><\/p>\n<p><b>TDD: <\/b>Test-Driven Development<\/p>\n<p><b>ATDD: <\/b>Acceptance Test-Driven Development<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#8300E9&#8243; background_enable_pattern_style=&#8221;on&#8221; background_pattern_style=&#8221;confetti&#8221; background_pattern_color=&#8221;#EDF000&#8243; custom_margin=&#8221;70px||10px||false|false&#8221; custom_css_main_element=&#8221;overflow:visible&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_vertical=&#8221;5px&#8221; box_shadow_blur=&#8221;15px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/10\/laugh-out-loud.png&#8221; alt=&#8221;laugh&#8221; title_text=&#8221;laugh-out-loud&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;15%&#8221; width_tablet=&#8221;20%&#8221; width_phone=&#8221;40%&#8221; width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;-80px||||false|false&#8221; border_radii=&#8221;on|50%|50%|50%|50%&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#a0a2a5&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_vertical=&#8221;14px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text module_class=&#8221;star-list&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#edf8ff&#8221; custom_padding=&#8221;|30px||30px|false|false&#8221; border_width_top=&#8221;5px&#8221; border_color_top=&#8221;#8300E9&#8243; border_style_top=&#8221;ridge&#8221; border_width_bottom=&#8221;5px&#8221; border_color_bottom=&#8221;#8300E9&#8243; border_style_bottom=&#8221;ridge&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>We propose to increase exchanges and promote communication between the key players of the product (we sometimes talk about the &#8220;<span style=\"text-decoration: underline;\"><br \/>\n  <strong>3 amigos :)&#8221;<\/strong><br \/>\n<\/span>):<\/p>\n<ul>\n<li>A<span> <\/span><span class=\"glossary\" href=\"FR_Business%20Analyst.aspx\">Business Analyst<\/span><\/li>\n<li>A<span> <\/span><span class=\"glossary\" href=\"FR_Developer.aspx\">Dev<\/span><\/li>\n<li>A<span> <\/span><span class=\"glossary\" href=\"FR_Quality%20Analyst.aspx\">Quality Analyst<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;blue-list&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>HOW TO SPECIFY THROUGH TESTING<\/h2>\n<h3>TESTING AS A COMMUNICATION TOOL<\/h3>\n<ul>\n<li>The test has the advantages of being accurate, unambiguous, deterministic, reproducible and directly actionable.<\/li>\n<li>Specifying by testing is the same as specifying by example.<\/li>\n<li>The design of test cases is no longer limited to a specific person, each member can submit new cases to the team.<\/li>\n<\/ul>\n<h3><strong>SPECIFICATION THROUGH TESTING<\/strong><\/h3>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#edf8ff&#8221; custom_padding=&#8221;20px|20px|20px|20px|false|false&#8221; border_radii=&#8221;on|10px|10px|10px|10px&#8221; border_width_all=&#8221;1px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<blockquote>\n<p><span>Source: <strong>Specification<\/strong> by <strong>Example by<\/strong> Gojko Adzic<\/span><\/p>\n<\/blockquote>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/11\/spec-by-test-1.jpg&#8221; title_text=&#8221;spec-by-test&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|10px|10px|10px|10px&#8221; box_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;blue-list&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>Deriving scope from goals<\/strong><\/p>\n<ul>\n<li>Aligning visions improves the definition of a solution that will meet user goals. The team works with users to determine the solution. Users focus on the value they expect from the output.<\/li>\n<\/ul>\n<p><strong>Specifying collaboratively<\/strong><\/p>\n<ul>\n<li>Collaborative specification allows us to leverage the knowledge and experience of the entire team. It also creates collective ownership of specifications, making everyone more engaged in the delivery process.<\/li>\n<\/ul>\n<p><strong>Specification with examples<\/strong><\/p>\n<ul>\n<li>Instead of waiting for specifications to be expressed accurately for the first time in a programming language during implementation, teams illustrate specifications using examples. This ensures that everyone involved has a shared understanding of what needs to be delivered, avoiding misinterpretations.<\/li>\n<\/ul>\n<p><strong>Executable specification<\/strong><\/p>\n<ul>\n<li>At the beginning of the feature implementation, the test based on this specification fails because it is not yet automated and the code is not yet produced. Once the test is implemented, the specification becomes executable.<\/li>\n<\/ul>\n<p><strong>Living documentation<\/strong><\/p>\n<ul>\n<li>All specifications for all implemented features are validated frequently, through an automated build process. This helps avoid functional regression issues while ensuring that specifications remain up-to-date.<\/li>\n<\/ul>\n<h3><strong>A CLEAR SPECIFICATION IN THE FORM OF AN EXAMPLE<\/strong><\/h3>\n<ul>\n<li>Natural language understandable by everyone\n<ul>\n<li>Using <strong>DSL<\/strong><strong>:<\/strong> <strong>GIVEN<\/strong> \u2013 <strong>WHEN<\/strong> \u2013 <strong>THEN<\/strong><\/li>\n<li>Enables automation with tools (<a href=\"https:\/\/cucumber.io\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n  <strong>Cucumber<\/strong><br \/>\n<\/a>)<\/li>\n<\/ul>\n<\/li>\n<li>Clear and unambiguous rules.<\/li>\n<li>Focus on the functional and not the solution.<\/li>\n<li>Lock-in functionality upstream.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#edf8ff&#8221; custom_padding=&#8221;20px|20px|20px|20px|false|false&#8221; border_radii=&#8221;on|10px|10px|10px|10px&#8221; border_width_all=&#8221;1px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<blockquote>\n<p><span>Example of a <strong>User Story<\/strong> : <strong>As a<\/strong> private user, <strong>I want<\/strong> to activate my online account <strong>in order to<\/strong> access the services of the Cortex portal <em><br \/>\n  <span style=\"text-decoration: underline;\">Example of acceptance test:<\/span><br \/>\n<\/em><\/span><\/p>\n<\/blockquote>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/11\/bdd-en.png&#8221; title_text=&#8221;bdd-fr&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|10px|10px|10px|10px&#8221; box_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;blue-list&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>THE ACCEPTANCE TEST-DRIVEN DEVELOPMENT (ATDD) APPROACH<\/h2>\n<p>&nbsp;<\/p>\n<p>ATDD, or Acceptance Test-Driven Development, works by writing acceptance tests before coding.<\/p>\n<p>The examples are written before the start of the development (of the Sprint) and are part of the definition of <strong>the Done<\/strong>. They help to understand the need and ensure that developers meet the acceptance criteria.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>  Here&#8217;s how it works:<\/strong><\/span><\/p>\n<ul>\n<li><strong>Team discussion<\/strong> : Developers, testers, and business leaders work together to define the acceptance criteria for features to be created.<\/li>\n<li><strong>Test writing<\/strong> : Acceptance tests are written in plain language for everyone. These tests serve as executable specifications.<\/li>\n<li>Write the code: Developers create <strong>the code<\/strong> needed to pass acceptance tests.<\/li>\n<li><strong>Automatic test execution<\/strong> : Acceptance tests are automatically initiated whenever changes are made to the code. This ensures that the code always meets the acceptance criteria.<\/li>\n<li><strong>Reflection and continuous improvement<\/strong> : The team meets regularly to discuss test results, troubleshoot issues, and ensure acceptance criteria remain relevant.<\/li>\n<\/ul>\n<p>In short, <strong>the ATDD<\/strong> encourages collaboration by ensuring a common understanding of needs. Acceptance testing is a living, automated specification, ensuring continuous validation of code against business expectations. This leads to higher quality development and a reduction in misunderstanding errors.<\/p>\n<ul><\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#edf8ff&#8221; custom_padding=&#8221;20px|20px|20px|20px|false|false&#8221; border_radii=&#8221;on|10px|10px|10px|10px&#8221; border_width_all=&#8221;1px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<blockquote>\n<p><span>Example of an ATDD cycle<\/span><\/p>\n<\/blockquote>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/11\/ATDD.png&#8221; title_text=&#8221;ATDD&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|10px|10px|10px|10px&#8221; box_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row module_class=&#8221;pmc-bullet&#8221; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#ffdbc4&#8243; custom_margin=&#8221;30px||30px||false|false&#8221; custom_css_main_element=&#8221;overflow:visible&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_vertical=&#8221;5px&#8221; box_shadow_blur=&#8221;15px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blurb title=&#8221;Complement&#8221; image=&#8221;https:\/\/pmchampions.com\/wp-content\/uploads\/2023\/10\/complementary.png&#8221; alt=&#8221;key point&#8221; icon_placement=&#8221;left&#8221; content_max_width_tablet=&#8221;&#8221; content_max_width_phone=&#8221;&#8221; content_max_width_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.22.0&#8243; _module_preset=&#8221;default&#8221; header_level=&#8221;h3&#8243; header_font=&#8221;Acme||||||||&#8221; header_font_size=&#8221;22px&#8221; background_color=&#8221;#edf8ff&#8221; image_icon_custom_margin=&#8221;1px|0px|0px|0px|false|false&#8221; image_icon_custom_padding=&#8221;||||false|false&#8221; width=&#8221;200px&#8221; width_tablet=&#8221;200px&#8221; width_phone=&#8221;200px&#8221; width_last_edited=&#8221;on|desktop&#8221; max_width=&#8221;200px&#8221; max_width_tablet=&#8221;200px&#8221; max_width_phone=&#8221;200px&#8221; max_width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;-55px||||false|false&#8221; custom_margin_tablet=&#8221;-55px||||false|false&#8221; custom_margin_phone=&#8221;-55px||||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;5px|5px|0px|5px|false|false&#8221; child_filter_saturate=&#8221;200%&#8221; header_font_size_tablet=&#8221;22px&#8221; header_font_size_phone=&#8221;22px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; border_radii=&#8221;on|0.25rem|0.25rem|0.25rem|0.25rem&#8221; border_width_all=&#8221;1px&#8221; border_color_all=&#8221;#dee2e6&#8243; box_shadow_style=&#8221;preset3&#8243; box_shadow_horizontal=&#8221;6px&#8221; box_shadow_vertical=&#8221;11px&#8221; box_shadow_blur=&#8221;8px&#8221; text_shadow_style=&#8221;preset1&#8243; text_shadow_vertical_length=&#8221;0.15em&#8221; text_shadow_blur_strength=&#8221;0.3em&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blurb][et_pb_text _builder_version=&#8221;4.23.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|30px||30px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong><a href=\"https:\/\/www.browserstack.com\/guide\/tdd-vs-bdd-vs-atdd\" target=\"_blank\" rel=\"noopener\">To Deepen Your Knowledge!<\/a><\/strong><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article provides an introduction to specification methods through testing, including BDD, TDD, and ATDD.<\/p>\n","protected":false},"author":1,"featured_media":987515843,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[62,29,54],"tags":[24],"class_list":["post-987515848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-advanced-agile-practices","category-agility","category-design","tag-en"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/posts\/987515848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/comments?post=987515848"}],"version-history":[{"count":0,"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/posts\/987515848\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/media\/987515843"}],"wp:attachment":[{"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/media?parent=987515848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/categories?post=987515848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pmchampions.com\/en\/wp-json\/wp\/v2\/tags?post=987515848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}