Test Case Selection via Component Dependency Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software testing methodologies require running a large number of test cases for every change in software application code, leading to inefficiencies and unnecessary re-testing, as they do not effectively identify the optimal set of test cases needed to validate changes without disrupting existing functionality.

Innovation Solution

A system that determines the optimal set of test cases to run by analyzing dependency data, identifying test cases that execute changed components through reverse look-ups, and incorporating static and dynamic dependencies to ensure comprehensive re-testing with reduced redundancy.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a large number of test cases are run for every code change, then the reliability of software testing is improved, but the productivity and testing efficiency deteriorate

Engineering Contradiction:
Improvesoftware testing reliabilityVSAvoidtesting efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the test case execution process by dividing test cases into different groups based on their relationship to code changes. It identifies and executes only the relevant test cases (those affected by changes) separately from unrelated test cases, allowing parallel execution and reducing overall testing time while maintaining reliability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary analysis of code changes and test case dependencies before executing test cases. By pre-identifying which test cases are affected by changes using dependency graphs and change impact analysis, the system prepares the minimal necessary test suite in advance, avoiding unnecessary test executions and improving efficiency

Inventive Principle:
Principle #10Preliminary action

2Reliability

If all test cases are executed for every change, then comprehensive validation is achieved, but the time consumption and resource usage increase

Engineering Contradiction:
Improvevalidation comprehensivenessVSAvoidtesting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies partial action by executing only the subset of test cases that are necessary and sufficient to validate code changes. It uses change impact analysis to identify the minimal test case set that covers affected functionality, avoiding excessive execution of unrelated test cases while maintaining validation comprehensiveness

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent dynamically adjusts the test case execution plan based on the specific code changes detected. It uses dependency graphs and static analysis to adaptively determine which test cases need to be run, rather than following a fixed all-inclusive test execution strategy, thereby reducing time consumption while maintaining comprehensive validation

Inventive Principle:
Principle #15Dynamics

3Reliability

If the complete test suite is run for each modification, then regression errors are detected, but the complexity of the testing process increases

Engineering Contradiction:
Improveregression testing capabilityVSAvoidtesting process complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the testing process into distinct phases: change detection, impact analysis, test case selection, and execution. It separates regression testing from other testing activities by using dependency graphs to identify only the test cases relevant to changes, simplifying the overall process while maintaining regression detection capability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces dependency graphs and change impact analysis as intermediary mechanisms between code changes and test case execution. These intermediaries automatically determine which test cases are affected by changes, reducing the complexity of manually managing regression testing while ensuring comprehensive coverage

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS12130730B2Determining test cases to be run upon changes in software application code
Publication Date: 2024.10.29 ORACLE INT CORP
  • US12130730B2 patent drawing
  • US12130730B2 patent drawing
  • US12130730B2 patent drawing

AI summary

An aspect of the present disclosure determines test cases to be run upon changes in software application code. In one embodiment, a system receives a test suite containing multiple test cases designed to perform the testing of a software application, the software application containing one or more components. The system executes each test case to determine a corresponding sequence of components executed in the software application for the test case, and then stores a dependency data indicating for each test case the corresponding determined sequence of components. Upon determining that a first component has been changed, the system identifies a first set of test cases that cause execution of the first component by performing a reverse look-up in the dependency data. The system then includes the identified first set of test cases in the test cases to be run for re-testing the software application.