The document discusses feature toggles in software development. It defines feature toggles as conditional statements that hide unfinished functionality. Feature toggles allow developers to add new code without disrupting existing functionality, enabling continuous integration. They also facilitate A/B testing and phased feature releases. The document outlines different types of toggles and methods for implementing them, noting that toggles should be minimized and removed once features are complete to maximize code quality. Overall, feature toggles enable rapid delivery of working software through frequent integration and testing.
3. According to Agile Manifesto...
Agile Testing Alliance Global Gathering
The Agile Manifesto is based on 12 principles
1.Customer satisfaction by rapid delivery of useful software
2.Welcome changing requirements, even late in development
3.Working software is delivered frequently (weeks rather than months)
4.Close, daily cooperation between business people and developers
5.Projects are built around motivated individuals, who should be trusted
6.Face-to-face conversation is the best form of communication (co-location)
7.Working software is the principal measure of progress
8.Sustainable development, able to maintain a constant pace
9.Continuous attention to technical excellence and good design
10.Simplicity—the art of maximizing the amount of work not done—is essential
11.Self-organizing teams
12.Regular adaptation to changing circumstances
4. Branches
Agile Testing Alliance Global Gathering
-Release branch
Master & single work-in-branch
-Feature branch
o Master & Multiple branches
5. Release Branch
Agile Testing Alliance Global Gathering
-Hotfixes has to wait till
next release.
-Can’t add any code if its
not part of current release
Trunk
Release Branches
6. Feature Branches
-Delayed integration
-Merging becomes very difficult
-Increases the testing effort
Feature 2
Feature 1
-Lot of time spent on Regression &
Integration Testing
-Reduces the re-usability of shared automate
test-suite
Trunk
Agile Testing Alliance Global Gathering
7. Feature Toggle!?!
Agile Testing Alliance Global Gathering
-What is toggle?
-Feature Toggle is a conditional statement that
hides certain functionality.
9. Types of Feature Toggles
-Release Toggles: (Development Environment)
- Hide incomplete features and are removed as soon as
Agile Testing Alliance Global Gathering
feature is ready
-Business Toggles: (Business Sponsors)
- Enable feature for group of people and can be changed
on fly
10. Feature Toggles is opt for….
-Hiding or disabling new features in UI
-Hiding/Disabling new components
-To support multiple versions of feature/component
-Adding new feature to an application
-Enhancing an existing feature
Agile Testing Alliance Global Gathering
11. How to implement ?
- Config files
- Toggle manager controlled by Admin
- Session cookie
Agile Testing Alliance Global Gathering
12. Lets Toggle!!
Few ways to control the application using toggles
Agile Testing Alliance Global Gathering
-via server-side
-via client-side
-URL parameterization
-Javascript
13. via server
Agile Testing Alliance Global Gathering
pros
-Feature is available,till next build is deployed
-No further setup is needed
cons
-Need to wait for deployment to complete
-Switching between toggles is difficult
14. via client
- Need to know feature flag to enable it
- Feature is available,only on local machine
- Testing becomes easier,as we have more control of
application
Agile Testing Alliance Global Gathering
15. Business toggles
-Used in production environment
-To enable A/B testing
-Release features to group of users for early feedback
Agile Testing Alliance Global Gathering
16. While implementing toggles...
-Try to keep less number of toggles
-Mutually Exclusive toggles
-Remove the toggles as soon as corresponding feature is
Agile Testing Alliance Global Gathering
implemented completely
17. What will you achieve…?!
-Continuous integration
-More visibility into all work streams
-No merge conflicts and hence easy to refactor the
code
-Reduced time spent on testing
Agile Testing Alliance Global Gathering
18. Having said….
Feature toggle is second best solution.
The best solution is to find a way to
gradually integrate, without feature toggles
or feature switches
Agile Testing Alliance Global Gathering