Agile software delivery encourages a focus on quality; working software is more important than comprehensive documentation.  One of the key changes in the past 20 years has been the approach to testing software. The basis of these techniques can be borrowed in other domains.
TDD, or Test-Driven Development, refers to a style of programming in which three activities are tightly interwoven: coding, testing and design.  It can be succinctly described by the following set of rules:
This approach seeks to ensure quality by emphasising and requiring testing to drive the development process.
BDD, or Behaviour-Driven Development is a synthesis and refinement of TDD and Acceptance Test Driven Development (ATDD).  BDD focuses on the expected behaviour to a change in a system.
The “Given, When, Then” notation is often used to document intended behaviour. It is a style of representing test cases specifying a system’s behaviour using examples for system specification. 
Given I have 100 shares of Microsoft stock
And the time is before the close of trading
When I ask to sell 20 shares of Microsoft
Then I should have 80 shares of Microsoft
And a sell order for 20 shares of Microsoft stock should have been executed
Some of the benefits of using this approach:
When dealing with software development, many programming tools such as Cucumber and JBehave provide test features that accommodate tests defined in the Given-When-Then format. Though this is the case, the approach to testing business requirements is not limited to software products.