The challenge
The customer’s team is responsible for the maintenance of a software product established on markets. Its tasks include customer-driven product enhancements and features, as well as some debugging.
The product’s code base has been growing over many years and applies various technologies. Most of its architecture is monolithically structured. Existing tests mainly consisted of systems tests, which had to be conducted manually, automated unit and integration testing virtually did not exist.
It was difficult for the customer’s team to estimate the effort of planned changes in the existing structure, and unwanted side effects were difficult to predict. This led to regular regressions that were discovered late in the development process, which in turn led to delays in product releases.
In the medium term, the goal was to improve product quality and maintainability, shorten release cycles, and increase planning reliability. This required refactoring, which can only be effectively and efficiently conducted with an existing safety network of automated tests on different levels. Another goal was to significantly decrease large efforts for manually conducted systems tests, by implementing automated unit and integration testing.
Project duration
Three months
Our approach
To reach these goals, the customer’s teams had to acquire relevant know-how in test-driven development (TTD). Manual testers and developers had to be retrained as test developers. One training on this topic is not sufficient to induce sustainable change in development practices. Particularly in such pilot projects, the application of TDD requires team members to be highly skilled, disciplined and able to correctly assess complex situations. Following full assessment, UL Solutions Software Intensive Systems (SIS) and our customer chose the following approach:
1. Analysis
SIS analyzed the situation through interviews and reviews with the customer teams. We analyzed:
- How the Scrum teams were structured.
- Employee skill sets.
- How the development process was progressed and documented.
- What development practices, with particular focus on tests, were established.
- Which technologies, programming languages, frameworks and tools were in use or planned.
- How to evaluate the quality of architecture and source code.
2. Adjustment of training content
Based on the analysis results, SIS planned training and workshop content for the customer. Content arrays and practical exercises were developed based on the prior knowledge of training participants and the programming languages, technologies and frameworks used. The goal was to cover the following topics within two days:
Conducting hands-on workshops
Each Scrum team participated in one hands-on workshop. To help maximize the benefits of the training, two SIS trainers conducted each training session with a maximum of 12 participants. The trainers were senior software engineers with deep practical experience working with agile development teams and the relevant technologies. After short introductions to the topic’s theory, the trainers worked on specific tasks and problems relevant for real-life projects with their participants.
Team support during the project
The workshops were followed by sprints, during which the teams applied the training to real-life projects, which can be challenging. To promote a successful transition to TBB, a trainer supported a team in their project routines for one week. This way, the developers and testers had the chance to solve specific problems in pair programming or common reviews.
Consulting hours
During the sprints, trainers supported their teams within a reduced scope and for specific problems only. Team members were able to discuss questions or problems with SIS experts via phone or online.
Conclusion
After approximately six months, a conclusive retrospective review was implemented in which SIS and the customer discussed progress and effectiveness of the measures.
Highlights of our approach
- Introduction to testing and tools in use
- TDD, behavior-driven development (BDD) and acceptance test-driven development (ATDD)
- Test doubles and mocks
- Legacy code tests
- Test coverage
- Clean code
- Dependency Injection
- Refactoring
Customer benefits
After approximately six months, a conclusive retrospective review was implemented in which SIS and the customer discussed progress and effectiveness of the measures. Key benefits included:
- Successful implementation of TDD in all teams.
- Measurable improvement in coverage of automated tests.
- Considerably reduced bug rate.
- Fewer dependencies and cleaner interfaces.
- Basis for safe refactoring.
- More agile teams, with closer cooperation between development and testing.
Get connected with our team
Thanks for your interest in our products and services. Let's collect some information so we can connect you with the right person.