Test-Driven Development (TDD)
Test-driven development (TDD) is a test centric software design and growing tool.
It relies on the repetition of a very short development cycle:
Behavior-Driven Development (or BDD) is an Agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project. It was originally named in 2003 by Dan North as a response to Test-Driven Development, including acceptance test or customer test-driven development practices as found in Extreme Programming. Articles Videos
It relies on the repetition of a very short development cycle:
- Write a failing automated test case that defines a desired improvement.
- Produce code to pass that test.
- Finally, refactor the code to acceptable standards.
- Develop software closer to the users' needs
- Encourage the team to develop software based on a good object-oriented programming design: good cohesion and low coupling between objects
- Favour the team's trust to maintain software with a set of regression tests
- Have an up-to-date documentation on software behaviour (tests).
- Behavior-Driven Development: Test cases are written in a natural language that non-programmers can read.
- Executable specifications: Test cases are written in a natural language that non-programmers can read and write.
- Acceptance Test-Driven Development (ATDD): The criteria specified by the client are automated into acceptance tests, which then drive the traditional Unit Test-Driven Development (UTDD) process.
- Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce
- Test Driven Development: By Example by Kent Beck
- Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, and William Opdyke
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
- Working Effectively with Legacy Code by Michael Feathers
- Software development as a learning process
- Maintaining the test-driven cycle
- Mock objects
- Object-oriented design
- Testing frameworks (JUnit, jMock)
- Alistair Cockburn's Hexagonal architecture
- Building on third-party code
- Error handling
- Tests readability
- UI tests
- Persistence tests
- Asynchronous tests
- Object Mentor
- Uncle Bob: twitter
- Brett Schubert: twitter
- Michael Feathers: twitter
- Bob Koss: twitter
- Coplien and Martin Debate TDD, CDD and Professionalism
- Test-Driven Development of Asynchronous Systems by Nat Pryce
- Improving Application Quality Using Test-Driven Development
- Making good use of assertion messages in tests
- Clarify Your Intent
- Clearer Intents using Selenium
- Religion's Newfound Restraint on Progress
- Développement piloté par les tests (TDD)
- Professional Scrum Developer (.NET)
- Professional Scrum Developer (Java)
Behavior-Driven Development (a.k.a. executable specifications)
Behavior-Driven Development (or BDD) is an Agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project. It was originally named in 2003 by Dan North as a response to Test-Driven Development, including acceptance test or customer test-driven development practices as found in Extreme Programming. Articles Videos
- Behaviour-Driven Development - a road to effective design and clean code
- Dan North on Behavior-Driven Development
- Behavior-Driven Development tools (wikipedia)
- Lettuce, a BDD tool for Python
- Cucumber, a BDD tool for Ruby
- JBehave, a BDD tool for Java

