Technical debt is still a popular topic of conversation these days. Technical debt occurs when there are significant changes to an application or system over time resulting in architectural constraints, pockets of obsolete/dead code, or multiple occurrences of replicated code. In general, technical debt makes it difficult to maintain code and eventually, the debt must be paid through a system redesign or rebuild. When a company announces a “version 2.0” of an application, it’s a sure bet that this overhaul included some technical debt payment.
There is another type of debt that I want to talk about: Testing Debt. Testing debt is common in start-up companies and accumulates primarily in an Agile methodology and in new applications. Testing debt occurs when all focus is on features, Features and FEATURES. Early in an app’s life, the main goal is getting features out to the market and in a customer’s hands as quickly as possible in order to grab market share. Testing is either nonexistent, or at best, informal and unscripted manual testing. This works great for the first several sprints where there are relatively few features and regression testing consists of the tester informally testing the code until the release.
This approach eventually breaks down for two reasons. First, it doesn’t support the reality of staffing changes. Second, it doesn’t scale with the size of the system. Let’s examine each of these separately.
Staffing Reality
Due to the nature of their job, testers accumulate extensive knowledge about how an application works. They get to know which modules are solid, which are fragile, which developers write good code, and which ones don’t. If the testing is mainly manual and unscripted, all that knowledge is locked up in someone’s head. If that person leaves (and let’s face it – there is a lot of turnover in tech companies), there is little documentation to help the replacement perform the same level of testing as the departed employee. The result: the app is not tested as thoroughly, and defects get out into production, resulting in a “crisis of quality.” Here the testing debt is immediate and severe. All that knowledge is gone and you have to start over building it back up.
The remedy is a shift to more formalized and scripted testing. Having well-written test scripts captured in a test management tool will help you weather the problems associated with staff turnover. A new tester can quickly review user stories, use cases, and test scripts and get a solid feel for the app. You still have the testing debt, but it’s easier for the new tester to get up to speed to reduce the impacts of that debt.
Scale
Early in an application’s life, testing is more of an afterthought. Any testing performed is typically manual. This is enough early in the application’s life, but eventually, the app grows and gets more complex. As the size and complexity increases, there is insufficient time to manually test all the new features and perform a thorough regression test prior to release. The result is that testing becomes the bottleneck for throughput (velocity).
Companies respond by reducing the amount of testing to fit the schedule, testing only the most critical features and limiting or foregoing regression testing. This is called “risk-based testing.” Any testing that is not performed, becomes part of the growing testing debt. As the testing debt grows, so do the chances of a significant defect getting into production. The result: customer complaints and another “crisis of quality.”.
The remedy here is a shift to automated regression testing. If you find that you cannot perform manual regression tests in the time allowed, it’s time to shift to automated regression testing. With automated regression tests, you can focus your manual testing efforts on new features and let your automated regression testing keep you out of debt.
Testing debt is real and can cause significant problems. If ignored for too long, it can alienate your customer base. In today’s reputation-based society, the debt could generate negative reviews that jeopardize your application or company reputation.
For more information, contact an expert at Stonemill Consulting today.