Flaky Test Identification via Server Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software testing systems face challenges with repeatability, as tests may intermittently fail and pass with the same code configuration, leading to unreliable failure indications and increased developer effort.

Innovation Solution

A system where test results are stored on a second server for analysis, allowing for identification and retrieval of 'flaky' tests that both pass and fail, enabling efficient processing and notification of developers about unstable tests.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If test results are stored on the build server, then test data is readily accessible, but memory usage on the build server increases

Engineering Contradiction:
Improvetest data accessibilityVSAvoidmemory usage
Core Design Contradiction:
Ease of operationVSQuantity of substance

Solution Approach 1:

The system divides the test data storage function from the build server and places it on a separate database server. This segmentation allows the build server to maintain ease of operation for test execution while the database server handles the storage burden, preventing memory usage increases on the build server.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A database server acts as an intermediary between the build server and test data. The build server can access test data through this intermediary without storing it locally, thus maintaining accessibility while avoiding increased memory usage on the build server.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If all test results are retained for analysis, then flaky tests can be identified, but data processing time increases

Engineering Contradiction:
Improvetest result accuracyVSAvoiddata processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system extracts only the relevant test results that indicate flaky behavior from the complete test data set. By taking out only the necessary data for flaky test identification, the system maintains reliable detection accuracy while significantly reducing the time required to process and analyze test results.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Instead of processing all test results equally, the system applies partial action by focusing only on test results that show inconsistent pass/fail patterns. This selective processing maintains the reliability of flaky test identification while minimizing data processing time.

Inventive Principle:
Principle #16Partial or excessive action

3Reliability

If tests are repeated multiple times, then reliable failure patterns can be detected, but testing duration increases

Engineering Contradiction:
Improvefailure detection accuracyVSAvoidtesting duration
Core Design Contradiction:
ReliabilityVSDuration of action of moving object

Solution Approach 1:

The system performs preliminary analysis of test results to identify patterns indicating flaky tests. By conducting this analysis on stored test data rather than requiring additional live test executions, the system achieves reliable failure pattern detection without extending the actual testing duration.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of re-executing tests to verify failure patterns, the system uses copies of previously executed test results stored in the database. This allows reliable pattern detection through analysis of existing test data without the need for additional test execution time.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10831647B2Flaky test systems and methods
Publication Date: 2020.11.10 SAP SE
  • US10831647B2 patent drawing
  • US10831647B2 patent drawing
  • US10831647B2 patent drawing

AI summary

In one embodiment, the present disclosure pertains to testing. In one embodiment, software tests are performed on a first software server. Tests may be repeated a plurality of times to check for consistent failures or passes. Test results are sent to a second software server. The test results are stored in one or more databases on the second software server, where particular test results are associated with one or more fields specifying whether the test was passed and whether the test was failed. Tests that were both passed and failed may be deemed “flaky” tests. The second software server may generate a query to retrieve test results from the database that both passed and failed at least one test (flaky tests). Flaky tests may be quickly retrieved and processed.