Difference between BDD vs TDD in Software Engineering

1. Behavior Driven Development (BDD) :
Behavior Driven Development (BDD) is a development technique which focuses more on a software application’s behavior. Mainly it creates an executable specification that fails because the respective feature doesn’t exist, then writing the simplest code that can make the specification pass and as a result we get the required behavior implemented in the system.  Actually it is a team methodology where Developers, Customer, QAs are involved in it.
Process of BDD :
- Write the behavior of the application
 - Write the automated scripts
 - Then Implement the functional code
 - Check if the behavior is successful and if not success then fix it
 - Organize the code (Optional)
 - Repeat the steps for another behavior
 
2.Test Driven Development (TDD) :
Test Driven Development (TDD) is a development technique which focuses more on the implementation of a feature of a software application/product.  Mainly it refers to write a test case that fails because the specified functionality doesn’t exist and after that update the code that can make the test case pass and as a result we get the feature implemented in the system. Actually it is a development practice where the developers are involved in it.
Process of TDD :
- Add test case
 - Run the test cases and watch test fails
 - Update the code
 - Run the test cases again
 - Refactor the code (Optional)
 - Repeat the steps for another test case
 
Difference between BDD vs TDD :
| 
 S.NO.  | 
 Behavior Driven Development  | 
 Test Driven Development  | 
| 01. | Behavior Driven Development is a development technique which focuses more on a software application’s behavior. | Test Driven Development is a development technique which focuses more on the implementation of a feature of a software application/product. | 
| 02. | In BDD the participants are Developers, Customer, QAs. | In TDD the participants are developers. | 
| 03. | Mainly it creates an executable specification that fails because the respective feature doesn’t exist, then writing the simplest code that can make the specification pass and as a result we get the required behavior implemented in the system. | Mainly it refers to write a test case that fails because the specified functionality doesn’t exist and after that update the code that can make the test case pass and as a result we get the feature implemented in the system. | 
| 04. | Its main focus is on system requirements. | Its main focus is on unit test. | 
| 05. | In BDD the starting point is a scenario. | In TDD the starting point is a test case. | 
| 06. | It is a team methodology. | It is a development practice. | 
| 07. | Here language used to write behavior/scenarios is simple English language. | Here language is used is similar to the one used for feature development like programming language. | 
| 08. | In BDD collaboration is required between all the stakeholders. | In TDD collaboration is required only between the developers. | 
| 09. | It is a good approach for project development which are driven by user actions. | It is a good approach for projects which involve API and third-party tools. | 
| 10. | Some of the tools used are Cucumber, Dave, JBehave, Spec Flow, Concordian, BeanSpec etc. | Some of the tools used are JBehave, JDave, Cucumber, Spec Flow, BeanSpec, FitNesse etc. | 
				
					


