Test Driven Development – An Experience Report
Companies are facing increasing pressure to provide innovative, customer-driven products and quotations at competitive prices. Lack of early product cost visibility hurts profitability down the stream.
SAP Product Lifecycle Costing allows companies to manage and optimize product cost in line with market and customer requirements. At an early stage of product development or customer quotations, and throughout the product life cycle, cost saving potentials can be realized easily. Risk along the lifecycle can be identified and mitigated.
“Our highest priority is to satisfy the customer through a delivery of valuable, user friendly, high quality Software.”
Delivery of a high-quality product with good performance is not an easy task. It goes far beyond understanding customers’ functional requirements and having the right implementation skills. It involves the whole team to design testable software and requires commitment to implement tests.
To reach those quality goals we already invested in standardizing processes, infrastructure and tools. However, to further raise the quality there were some aspects left to improve:
- Different levels of expertise w.r.t. test design and automation
- Unbalanced ratio between produced code and automated tests
- Hesitation and concerns regarding the applicability of test-driven development
- Uncertainty about the responsibilities for writing tests
In order to address these aspects, we organized a two days Test Driven Design Hackathon with our partner DevBoost GmbH (www.devboost.de). The plan was to implement a product feature in form of a team challenge applying a test-driven development approach.
We created 10 teams consisting of two developers each. One developer had the task to implement the productive code while the other implemented the unit tests. Both changed their roles constantly over the duration of the hackathon to experience the benefits of a test-first approach. The teams were challenging each other to implement a robust feature with sufficient test coverage, efficiently. This kind of friendly competition mode motivated everyone and increased the speed of development.
“We achieved all of this and developed the planned feature in parallel with 10 teams of two and had a lot of fun.“
Two trainers from DevBoost GmbH (www.devboost.de), both experts and long-time practitioners in test-driven-development, moderated the event. They shared their insights in test-driven development and best practices and ran dedicated expert sessions. Together we intensively reviewed existing product code along with the code implemented during the hackathon. The trainers fuelled the discussion with their external point of view and gave advices how to improve.
Everyone knows the gap between the learnings gained during a training session and their applicability during daily business. Running the training completely based on our production code lowered this barrier to a large extent and eased the creation of concrete action items.
What’s in it for your team? Here are some of the benefits such a form of training can bring to your team:
- Bring all team members to a unified level of knowledge regarding basic and advanced testing techniques
- Establish a shared responsibility for excellent product quality
- Receive external expert feedback and question the current state
- Review your current state, your team’s strengths and weaknesses
- Have a fun event that connects your team members
- Define a road map of action items to further improve your testing infrastructure and processes
For us, the event fulfilled what it promised and the cooperation with DevBoost GmbH was the right choice.