Can Test-Driven help us become
rather than an option. The original principles laid out by the Agile Movement have been given more substance by the Software Craftsmanship Movement. Robert C. Martin, co-author of the original Agile Manifesto states that: “The original torch of the Agile message has changed hands, and is now being carried by the Software Craftsmanship movement. These are the folks who continue to pursue the technical excellence and professionalism that drove the original founders of the Agile Movement”.
The main debating question was on whether TDD is considered to be an essential practice for attaining agility and if it lies at the heart of the principles of Extreme Programming. Over the last decade, Agile development methodology has grown significantly. Developers are increasingly focusing on speed-to-market and looking to boost the frequency of software releases. The trend towards continuous delivery requires greater efficiency in the process. Many developers are relying on automated unit tests, or pushing further into TDD.
Put simply, TDD is a software development methodology whereby the developer writes a unit test before the code is written. The idea is that this test will fail at first and then write just enough code to get the test to pass. This process is repeated for each test until the requirements are satisfied. Having all the tests pass could be a strong measure of confidence in the quality of the code.
An important point that came out of the debate was that TDD helps in building good architecture of systems, particularly in attaining the right level of separation of concerns (data, business rules, user interface). Code has to be designed in a modular fashion to enable unit testing. Writing the tests first, will help to identify potential software architectural problems earlier. Furthermore, it helps to make collaboration more efficient. Team members can edit each other’s’ code with confidence because the tests will inform them if the changes are making the code