TDD
- Requirements of a development is divided into short test cases
 - THen each case is made to solve separately.
 - This is more like creating unit tests fisrt and then making the tests success to finish a target
 
BDD
- Similar to TDD but in more bigger scope.
 - Here the behaviour of the entire system is tested instead of each function one by one
 - Example is the cucumber tests
 
Scenario: Creating a user
When: I create a user
Then: I expect user to exist
And: User can see his info
DDD (Domain driven developemnet)
- All the names of class/modules should match what the domain is about.
 - For example if you are making a payment system class could be VoidPayment/CapturePayment