Beautiful and lush green grass covers a yard. A little seedling from a weed pops up but is not noticed right away. Quickly the weed becomes a small-sized tree, but nobody has time to tackle the yard today. It seems as if no time has passed, but suddenly that tree grows as tall as a house. Where is the number for the tree-guy? Blink and there are cracks in the driveway. The cracks turn to buckles and the driveway must be replaced. That weed-turned-tree must come down!
Removing the tree after its roots reached under the driveway was exponentially more expensive then removing it during any of the earlier stages of growth. The same holds true for removing defects during the Software Development Life Cycle (SDLC). Defects are found in all work products but the further into the project a defect goes, the cost of fixing it increases by orders of magnitude. This is true for both Agile as well as traditional waterfall development.
For example, if a defect is found during user story development or grooming, the approximate cost to correct the problem is $250. If the defect ‘leaks’ into a subsequent sprint, the cost can increase five times that amount ($1250). The cost of continued leaks multiplies exponentially and can add up to big money quickly. When a defect is found pre-production, it can often be addressed by a single developer. When a defect is released into production, many customers will experience the same issue, thus consuming additional time and resources.
It’s unrealistic to think every mistake will be caught prior to production, but a focus on quality early in the SDLC is the key to lowering costs and shortening schedules. The Agile methodology naturally helps this as long as you are learning along the way and sharing those learnings across your teams. To reduce added time and costs, we strongly recommend measuring quality. Software Quality is measured in two basic ways: Defect Potential and Defect Removal Efficiency.
Defect Potential, addressed in our last blog, is the number of defects being injected into the application across the entire SDLC.
Defect Removal Efficiency (DRE) measures how well the development and testing team does at removing defects before they enter production.
DRE is calculated using a simple formula:
Defects are introduced in all work products during the software development process, but correcting them pre-production is important to the quality of the project. Unless you are building medical devices or launching rockets, we think you should set a goal of finding and removing 95 percent of defects prior to production. As illustrated in the table below, an average team working on a project with 50,000 lines of code, typically has a DRE of 94.5%. One thing we have observed is that teams that do not measure DRE perform far worse than teams who measure and manage to a goal. Note that when the project size increases, the DRE for the same team tends to drop substantially. Just like with Defect Potential, smaller projects have better results.
So how do we increase our Defect Removal Efficiency? We find defects in early work products!
Estimate & Measure
- Move from reactive to proactive: Measuring Defect Potential and DRE is important because testing teams and management are unaware of their level of performance. By measuring the success or failures of your development and testing team, areas of weakness can be identified and addressed. This makes your team stronger, focused, more efficient and, ultimately, less expensive!
- Track over time to see trends.
- Evaluate and apply changes based on the data collected.
Test automation tools are important for reducing the testing load on the development team and, more importantly, allowing you to quickly test using larger data sets so you can detect vulnerabilities that manual testing may miss.
Other proactive steps to increase quality in a software testing environment include:
Think Broader – Test Early, Test Often: Don’t just focus on code. Defects occur in all work products so train your team on techniques to ferret out these defects before they create downstream impacts.
Think Smaller: Smaller, simpler systems have higher quality. Break projects into smaller pieces.
Consider an Agile Methodology: Agile drives smaller projects and more efficient teams.
Build Stronger Teams:
- Small: Smaller teams deliver higher quality.
- Believers: Team members must believe project goals are achievable.
- Motivated: Productivity improves when team members believe in the mission, enjoy what they are doing and are treated with respect
- Highly skilled: Don’t settle on talent; stronger teams inject fewer and find more defects. So, train them!
Employ Company-Wide, Consistent Processes: Consistent cross-training provides the flexibility to move key team members and continually improve processes.
Quality: The end goal of any project. Without quality, software development project costs can skyrocket and blow a good budget quickly. Beautiful and lush green grass covers your yard. You notice a little seedling from a weed tree pop up and immediately dig it out. All is well with the world.