I am a BIG fan of feature toggles. It doesn't take too much work to mitigate the risks, and the benefits are well worth it.
So my question is toggling unused feature enough to release untested code?
No. Feature toggles are not enough to mitigate the risks posed by releasing completely untested code. However, when you test around that code, feature toggles become a nearly perfect way to release with very minimal risk.
How if devs will be pushing on that feature how can I evaluate the risk and possible help mitigate it?
As QA, testing is obviously a big part of how you will help mitigate risk. But just as important, it’s your job to push for action at each step of the SDLC. For the best risk management, everyone on the team must be involved.
Risk Mitigation in 3 Stages
1. Prioritized and Focused Testing
2. Team Kickoff/Planning and Continuous Collaboration
3. Solid Rollout, Monitoring, and Preparation to Act Plan
1. Prioritized and Focused Testing
Obviously in this situation, time restraints prevent fully testing the new feature. Not a problem. With a pinpointed testing approach, you will quickly hone in on and help eliminate potential risks. While a combination of manual and automated testing is ideal, it can be achieved using just manual.
For the sake of this question, I will describe only this scenario – one where the feature toggles will NOT be turned on during this release.
Checking
- Ensure there’s no possible way they could be toggled on production. Limit permissions.
- Ensure there is no trace of the feature. Test manually navigating to urls.
Testing
- Check for irregularities in error quantities and site response time, not just in your code base, but across the product.
- Perform Automated Testing: Run it often, early and late in the dev process. Run against old code currently on production versus new. Check for differences.
- Perform Manual Regression: Test these key areas:
- Test areas you know are closely connected in code to the new feature. Then those that are likely connected.
- Test functionality that impacts a large percentage of the code baseto find any dependencies you may have missed
- Your developer should be simultaneously getting code reviews to ensure the feature doesn’t reach further across the full product code in any unexpected ways
- Test critical functionality as well as commonly used features. What does your app NEED to be able to do? What do most people use it for? What are the potential blockers that are the only reason some users use your site or app?
- Test the potential areas of highest risk. This should be a team discussion hunting to prevent data loss, load/performance issues.
To Be Continued As Soon As Possible...
I apologize, but something has come up and I will have to finish the rest of the steps tomorrow. I’ll cover:
1. The best way to implement feature toggles based on the feature scope
2. An absolutely solid plan for rolling out the release and feature toggle.
These are crucial for success, so I hope you get a chance to come back and take a peak.
As a bonus, I promise to share some of my tips and tricks I’ve learned along the way, as well as a few examples of how feature toggles opened up new worlds of possibilities in some pretty unexpected ways.