Feature Gates for Dynamic Software Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing systems face challenges in testing dynamic software features across different user populations due to the complexity of software builds and the difficulty in shipping software with varying features to multiple audiences, often requiring extensive quality testing and resulting in delays when bugs are found.

Innovation Solution

The implementation of feature gates in software application code allows for dynamic selection and testing of features using an API, enabling 'A/B testing' and feature impersonation to isolate new features within a stable base build, allowing for concurrent testing of features across different audiences and rings without the need for traditional ring promotion procedures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional ring promotion procedures are used to test features across different user populations, then features can be systematically validated through multiple testing rings, but the process becomes complex and time-consuming with extensive quality testing required

Engineering Contradiction:
Improvefeature validation reliabilityVSAvoidtesting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent creates virtual copies of testing rings through configuration files that define different audience groups. Instead of physically promoting features through multiple testing rings, the system copies the same feature set and configures it for different audience groups, allowing parallel testing across multiple rings simultaneously. This eliminates the sequential time loss while maintaining reliability through comprehensive coverage.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The system dynamically configures feature availability for different audience groups through runtime configuration rather than static ring promotion. Features can be enabled or disabled for specific audiences without requiring formal promotion procedures, allowing flexible and rapid testing across different user populations while maintaining systematic validation through configuration management.

Inventive Principle:
Principle #15Dynamics

2Reliability

If features are tested sequentially through ring promotion procedures, then systematic validation is achieved, but concurrent testing of features across different audiences is prevented

Engineering Contradiction:
Improvesystematic validationVSAvoidtesting throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the testing process by creating distinct configuration files for different audience groups (e.g., ring1.xml, ring2.xml, ring3.xml). Each configuration file defines a specific audience segment with its own feature set, allowing independent parallel testing for each segment while maintaining systematic validation through consistent configuration management across all segments.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary configuration of all testing rings in advance by defining audience groups and their associated features in configuration files before testing begins. This preliminary setup enables all rings to be configured and ready for concurrent testing, eliminating the need for sequential promotion while ensuring systematic validation through pre-defined configuration standards.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If software builds include dynamically selected features for different audiences, then feature versatility is improved, but the complexity of managing and testing these dynamic features increases

Engineering Contradiction:
Improvefeature adaptabilityVSAvoidtesting system complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent manages feature dynamics by changing configuration parameters rather than modifying the software build itself. Different audience groups are defined through configuration files that specify which features should be enabled or disabled for each group. This approach maintains feature versatility through parameter-based control while reducing system complexity by keeping the core software build static and manageable.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The system introduces configuration files as an intermediary layer between the software build and the audience-specific feature requirements. These configuration files act as mediators that translate audience requirements into feature enablement settings without requiring direct modification of the software code, thereby reducing complexity while maintaining adaptability.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Reliability

If extensive quality testing is performed to ensure feature stability across audiences, then reliability is improved, but deployment delays occur when bugs are found

Engineering Contradiction:
Improvefeature stabilityVSAvoiddeployment speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The patent implements beforehand cushioning by testing features across multiple configured audience groups in parallel before final deployment. Configuration files define different audience segments that can be tested simultaneously, providing a cushion of comprehensive validation that catches issues early while maintaining rapid deployment capability through parallel testing rather than sequential verification.

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

Data Source

PatentUS10067863B1Feature targeting of test automation lab machines
Publication Date: 2018.09.04 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10067863B1 patent drawing
  • US10067863B1 patent drawing
  • US10067863B1 patent drawing

AI summary

In some embodiments, the disclosed subject matter involves a system and method relating to automation test runs of a software build, where the test runs effect impersonating an automation audience and selecting optional features to test with the automation audience. The automation audience is associated with a software build having static features, and the test runs include optional features, where each optional feature may have more than one associated treatment. Each feature/treatment combination may be tested in a test scenario associated with the feature/treatment combination. New features that are exposed in other audiences may be enabled for the automation audience to assist in verification and test of the new features. Dynamic selection of the optional features is effected using an application program interface (API) in the source code for the features, where the API accesses feature configuration information during runtime. Other embodiments are described and claimed.