Test Coverage Tracking for Phased Software Deployments

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In large-scale computing environments, determining complete test coverage for software updates deployed in a distributed software application is challenging due to the likelihood of test requests being processed by a small subset of compute instances, making it difficult to accurately assess when all tests have been observed, especially as the scale and number of tests grow.

Innovation Solution

A testing system and framework that enables a code deployment service to determine when complete test coverage is achieved by deploying software updates to a test deployment group, where compute instances maintain a test coverage table to track observed tests and send status messages to the code deployment service, ensuring that each test is observed before progressing the deployment to the entire environment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If software updates are deployed to a small subset of compute instances for testing, then deployment risk is reduced, but test coverage accuracy deteriorates because it becomes difficult to determine when all tests have been observed

Engineering Contradiction:
Improvedeployment riskVSAvoidtest coverage accuracy
Core Design Contradiction:
ReliabilityVSMeasurement precision

Solution Approach 1:

The patent implements a feedback mechanism where compute instances send status messages to the code deployment service reporting which tests they have observed. The service aggregates this feedback from multiple instances to determine when complete test coverage has been achieved, resolving the contradiction by providing accurate measurement despite limited deployment scope

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The code deployment service acts as an intermediary between compute instances and the testing framework. It collects test observation data from instances, tracks coverage status, and determines when deployment can proceed, enabling accurate test coverage measurement without requiring all instances to be tested simultaneously

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If software updates are deployed to all compute instances simultaneously, then deployment speed is improved, but the ability to detect and measure test coverage deteriorates because there is no controlled testing phase

Engineering Contradiction:
Improvedeployment speedVSAvoidtest coverage measurement
Core Design Contradiction:
ProductivityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent segments the deployment process into distinct phases: a testing phase where updates are deployed to a subset of compute instances, and a full deployment phase where updates are deployed to all instances. This segmentation allows for proper test coverage measurement during the testing phase while maintaining overall deployment efficiency

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary testing on a subset of compute instances before full deployment. During this preliminary phase, the system collects test observation data and determines coverage accuracy, ensuring that updates are validated before widespread deployment while maintaining a controlled measurement process

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11163669B1Measuring test coverage during phased deployments of software updates
Publication Date: 2021.11.02 AMAZON TECH INC
  • US11163669B1 patent drawing
  • US11163669B1 patent drawing
  • US11163669B1 patent drawing

AI summary

Techniques are described for measuring test coverage during phased deployments of software application updates. A phased deployment of a software application update generally involves initially deploying the software update to a subset of compute instances running the software application within a computing environment, using a testing application to verify whether the updated software application is operating as expected, and then deploying the update to the remaining compute instance of the computing environment once the tests are passed. A testing system and framework described herein enables a code deployment service to determine when complete or sufficient test coverage is achieved for software updates deployed in a computing environment supporting a distributed software application.