Software Test Dependency Mapping for Rapid Error Identification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Automated software testing of large software products with millions of lines of code is time-consuming, as existing methods require running entire test libraries, which slows down the development process, and fail to accurately identify changes in code and database units, leading to inefficiencies and potential missed failures.

Innovation Solution

A computing device executes software tests on a first version of the software product, collects code and database coverage data to create mappings between tests and code/data units, allowing for selective execution of tests that target modified units, thereby reducing the need to run the entire test library and improving failure identification.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the entire test library is executed against the software product, then comprehensive coverage of all code units is achieved, but testing time increases significantly

Engineering Contradiction:
Improvetest coverageVSAvoidtesting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the test library into smaller subsets based on code unit dependencies. By creating a mapping between code units and tests, the system divides the monolithic test execution into targeted subsets that only include tests relevant to modified code units, thereby reducing overall testing time while maintaining necessary coverage

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by executing only a subset of tests rather than the complete test library. The system determines the minimum necessary test coverage by analyzing code unit changes and their dependencies, running only those tests that are actually affected by the modifications

Inventive Principle:
Principle #16Partial or excessive action

2Measurement precision

If code coverage data and database coverage data are collected to create mappings, then test selection accuracy improves, but data processing complexity increases

Engineering Contradiction:
Improvetest selection accuracyVSAvoiddata processing complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent performs preliminary action by collecting code coverage data and database coverage data during initial test executions to build dependency mappings. This pre-computed mapping information is then reused during subsequent test selections, avoiding the need to re-analyze dependencies for every test run and simplifying the overall process

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary mapping structure that connects code units, database units, and tests. This mapping acts as a mediator that simplifies the relationship between these elements, allowing the system to efficiently determine test subsets without directly complexly analyzing all possible relationships each time

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If the mapping between tests and code units is determined, then the subset of tests can be identified quickly, but initial setup time is required

Engineering Contradiction:
Improvetest identification speedVSAvoidinitial setup time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent performs the mapping determination as a preliminary action that is done once or infrequently. The resulting mapping structure is then reused across multiple test executions, making the initial setup time amortized over many subsequent quick test selections and executions

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11372749B2Dependency mapping between program code and tests to rapidly identify error sources
Publication Date: 2022.06.28 SERVICENOW INC
  • US11372749B2 patent drawing
  • US11372749B2 patent drawing
  • US11372749B2 patent drawing

AI summary

An example system includes (i) a software product having a plurality of code units that accesses a database, (ii) a processor, and (iii) a non-transitory computer readable storage medium having stored thereon software tests and instructions that cause the processor to: execute the software tests on a first version of the software product; determine a first mapping between each respective software test and one or more of the code units; determine a second mapping between each respective software test and one or more data units in the database; determine that, between a second version and the first version of the software product, a particular code and data unit have changed; select, from the first and the second mappings, a set of software tests with mappings to the particular code unit or data unit; and execute the set of software tests on the second version of the software product.