How much testing is enough?
In my experience, determing how much testing time you need in a release is one of the toughest questions in software development planning.
How much time do you need to test a yet to be developed product, with nebulous features yet to exist, and also ensure your previous functionality still works at least as well as intended?
Balancing this, is there is usually a time sensitivity component to a release so the earlier to market, the better the product will do - unless it suffers from quality problems. So the team needs to determine the right balance of feature development and testing period to succeed.
There are many good sites that discuss this (for example - http://www.etestinghub.com/why_is_testing_necessary.php ), and several of the Embarcadero teams have comprehensive test estimation processes. However, the further out you make your estimates, the more likely it is off- and roadmaps generally ask for a team commitment to high level feature themes. Remember 64 bit? Cross platform? Those are very large features that need a significant amount of "R" in research and development to estimate properly.
Here is a simplified description of the approach QA uses:
- Evaluate previous project testing efforts in duration, coverage and results
- Review find and fix rates during the project - I’m looking for a spike after feature complete that eventually tapers off on severity as the project is closer to release. If it doesn’t taper off, then previous testing was too short. If it tapers off early, then we had some extra bake time and could have cut back.
- Measure bugs found during release and bugs found after release, and in what areas of the product
- Objectively assess where testing gaps may have existed
- Measure the complexity and risk of new features, and how much of the product they impact
- Review any outstanding bug backlog
- Determine any special quality goals from product management (IE - we’re going to bulletproof XYZ this release. What do we need to do that?)
- Determine schedule of an ‘end game’ phase based on the above including a beta test
- Track carefully testing progress as the project progresses via feature completion rate, test development and execution rate, bug find and fix rates (including how severe and where they are found) and beta tester feedback.
- Conduct a quality review regularly - we have a project dashboard full of quality and project related metrics to review how we’re doing every week.
Embarcadero leverages a modified Agile method for it’s releases - traditional Agile has all the testing in the one sprint, however I find that usually not enough - performance testing is a major effort, usability testing is a major effort, and the final regression test to ensure the entire product is in good shape takes more time then a single sprint can accomplish.
Hence I call it a ‘modified Agile’ process, which seems to work well - R&D wraps up features weeks to months prior to release (based on complexity of the product and changes), and then the team goes into polish mode - working with beta testers to improve usability, QA to run performance, stress, usability, install and acceptance tests, and verify bug fixes. Then once the product is locked down, a last testing pass is conducted to ensure the team knows exactly what they are shipping.
Seems like a lot of effort, doesn’t it? It really is. It’s great when it all comes together, and the team KNOWS it’s shipping a great release.