October 05, 2020

BDD vs TDD vs ATDD


TDD-
It is an iterative development process . Each iteration starts with a set of tests written for a new piece of functionality. Test cases are created before the code is written. It instructs the developer to write new code once the test has failed .
Re-factoring refers to the process of modifying the code without changing its main functionality or behaviour.

Benefits of Test-Driven Development--
Unit test cases are covered early.
Helps reduce the amount of time required for rework.
Helps explore bugs or errors very quickly.
Helps get faster feedback.
Encourages the development of cleaner and better designs.
Enhances the productivity of the programmer.
Allows any team member to start working on the code in the absence of a specific team member. This encourages knowledge sharing and collaboration.
Gives the programmer confidence to change the large architecture of an application.

Steps- 
Add a test , Run tests  if fails write code to fix it , Run test, Refactor code, Repeat 

For Example--

The test you write might look like this:
Describe('sum()', function () { it('should return the sum of given numbers', function () { expect(simpleCalculator.sum(1,2)).to.equal(3); expect(simpleCalculator.sum(5,5)).to.equal(10); }); })

Your implementation is currently empty. You haven’t implemented yet, so the tests will fail. You want to verify that your test is deterministic: it will tell you when it should fail or pass.
var Calculator = function () { return true // implementation goes here }
Implement it. Make the test pass. Here we’ll write the code that will make the test pass.
var Calculator = function () { return{ sum: function(number1, number2){ return number1 + number2; } }; }

Now your test will be satisfied, because we’ve added the function.

Disadvantage- Rewrite the test when the requirement change.

RED-GREEN-REFACTOR

BDD- 

User-acceptance testing (UI-driven testing) builds on this user acceptance criteria and user story. UI-driven testing usually uses tools like  selenium or cucumber which help test against the user’s journey on a site that’s up and running.

The user journey story represents a user’s behaviour. Using the business requirements provided, the developer can think about scenarios of how a user will use this new functionality. And those scenarios can be used to write the tests. This is called behaviour-driven development (BDD).

BDD is a widely-used method in UI-driven testing. It is written in a structure known as “Given, When and Then.”
Given - the state of the system that will receive the behaviour/action
When - the behaviour/action that happens and causes the result in the end
Then - the result caused by the behaviour in the state


Business-Driven Development (BDD) is a testing approach derived from the Test-Driven Development (TDD) methodology. In BDD, tests are mainly based on systems behaviour. This approach defines various ways to develop a feature based on its behaviour. 

Let’s take an example for better understanding:
Given the user has entered valid login credentials
When a user clicks on the login button
Then display the successful validation message

Key benefits of Behavioral-Driven Development approach:

Helps reach a wider audience by the usage of non-technical language
Focuses on how the system should behave from the customer’s and the developer’s perspective
BDD Is a cost-effective technique
Reduces efforts needed to verify any post-deployment defects.


ATDD-
Acceptance Test-Driven Development is very similar to Behavioral-Driven Development. However, a key difference between them is: BDD focuses more on the behavior of the feature, whereas ATDD focuses on capturing the accurate requirement

No comments:

Post a Comment

Please let me know if you have any doubts.

Key concepts in Pipeline

 1. Agent- To build your code or deploy your software using azure pipelines, you need at least one agent. Two types of agent- Microsoft host...