Key Components to Running Test-Driven Development - Brief Primer
2 February, 2020

Principal IT Consultant at BEC
Problem
I was in a situation when we were just starting to go Agile. Test-driven development was one of the main talking points, which seemed to be the solution for everything. Even the stakeholders were in favor of bringing in test-driven development as they were sold on the prospect of it achieving two specific outcomes: improvement in the overall quality and faster release times. However, I knew from previous experience that along the way what is needed to make test-driven development achievable gets missed.
Actions taken
It began by asking 3 questions
- Are you documenting your requirements?
- Are you documenting test cases?
- Are you maintaining a traceability matrix of requirements implementation? If the answer is no to any of these three questions then honestly test-driven development will bring nothing new to you. The process of knowing your requirements, documenting the corresponding test cases for those requirements, and having a reference for what you are actually testing against is extremely important. Hence, the traceability matrix. Secondly, it is imperative that the team is following a CI/CD process- Continuous Integration/Continuous Deployment. Again, if you're not, then test-driven development is not going to work for you. Why CI/CD? It is a best practice for development teams to implement. Developers are following test cases, running test code, and that test code gets checked against the system. The goal of CI is to ensure that a new change from the developer is suitable and good for use in the codebase. Now that the code is in good health it can be released and move into a stage of deployment. The goal of CD, then, is to produce releases that can be made available for another department or a customer. Thus, test-driven development is mandated and works most efficiently with a combination of a traceability matrix and CI/CD. One must be able to trace the requirements with its corresponding test cases, including the current state of the case (pass or fail), alongside the process of continuous integration and continuous deployment. This system enables anyone internally or externally to understand the level of testing activities done for that product and ensure that the overall efficiency of the product is running quickly and smoothly.
Lessons learned
- It is important that you have a system in place for organizing your test cases- the traceability matrix. This is not a place in which you dump information. You must group test cases so that they match the corresponding requirements as well as outlining the status of the test case. Of course, most traceability metrics have more than these three parameters but you should consider these three at minimum.
- You need to have a feedback system, a CI/CD system that keeps you informed about what is going on with testing and execution. This is in addition to the traceability matrix which allows you to see test cases and what requirements they belong to.
Discover Plato
Scale your coaching effort for your engineering and product teams
Develop yourself to become a stronger engineering / product leader
Related stories
3 February
This was not a high point in my career. It's a story of single metric bias, how I let one measure become a 'source of truth', failed to manage up and ended up yelling at one of the most respected engineers in my team.

Alex Shaw
Chief Technology and Product Officer at Hive Learning
10 December
Supporting principles on why being data led (not driven) helps with the story telling.
Vikash Chhaganlal
Head of Engineering at Xero
30 November
When you grow fast, its normal to focus on Value delivery aka "Feature Releases". Too many releases too soon will inevitably lead to piling tech debts and before you know, inefficiencies creep in, performances goes down, and ultimately any new release takes too long. Sounds familiar? Then read on..

Ramkumar Sundarakalatharan
VP - Engineering at ITILITE Technologies
14 October
Teams have tremendous impact on the products on they build. T.E.A.M definition - Together Everybody Achieves More is true. A collaborative and empowered team builds great product versus the good ones.

Praveen Cheruvu
Senior Software Engineering Manager at Anaplan
6 June
Adir Nashawi, Senior Product Manager at Hibob, shares his insight and experience from rebuilding a product to handle many feature requests and offerings.

Adir Nashawi
Senior Product Manager at Hibob