What is Behaviors Driven Development?
Consider you are assigned to create Funds Transfer module in a Net Banking application.
There are multiple ways to test it
- Fund Transfer should take place if there is enough balance in source account
- Fund Transfer should take place if the destination a/c details are correct
- Fund Transfer should take place if transaction password / rsa code / security authentication for the transaction entered by user us correct
- Fund Transfer should take place even if it’s a Bank Holiday
- Fund Transfer should take place on a future date as set by the account holder
The test scenario become more elaborate and complex as we consider additional features like transfer amount X for an interval Y days/months , stop schedule transfer when the total amount reaches Z , and so on
The general tendency of developers is to develop features and write test code later. As, evident in above case, test case development for this case is complex and developer will put off testing till release , at which point he will do quick but ineffective testing.
To overcome this issue (Behavior Driven Development) BDD was conceived. It makes the entire testing process easy for a developer
In BDD, whatever you write must go into Given-When-Then steps. Lets consider the same example above in BDD
Given that a fund transfer module in net banking application has been developed
And I am accessing it with proper authentication
When I shall transfer with enough balance in my source account
Or I shall transfer on a Bank Holiday
Or I shall transfer on a future date
And destination a/c details are correct
And transaction password/rsa code / security authentication for the transaction is correct
And press or click send button
Then amount must be transferred
And the event will be logged in log file
Isn’t it easy to write and read and understand? It covers all possible test cases for the fund transfer module and can be easily modified to accommodate more. Also, it more like writing documentation for the fund transfer module.