Test Optimization Module Using Static Analysis for Code Change Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional software testing tools execute the entire suite of tests every time a change is made to the source code, leading to increased testing time and resource utilization, delaying developer feedback and wasting computer resources.

Innovation Solution

Implementing a test optimization module that uses static analysis to determine the code slice affected by changes and executes only the tests directly or indirectly related to the modification, reducing resource utilization and maintaining optimal memory spaces for other processing algorithms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional testing tools execute the entire suite of tests every time a change is made to the source code, then testing completeness is improved, but testing time and resource utilization increase significantly

Engineering Contradiction:
Improvetesting completenessVSAvoidtesting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the test suite into two parts: tests that are affected by the code change and tests that are not affected. By using static analysis to identify the changed code regions and their dependencies, the system selectively executes only the relevant test cases rather than the entire test suite, thus reducing testing time while maintaining completeness for affected functionality.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by focusing testing resources on the specific local region of the code that was changed. Instead of uniformly executing all tests, the system identifies and executes only those tests that have a direct or indirect dependency on the modified code, allocating testing effort proportionally to the actual risk introduced by the change.

Inventive Principle:
Principle #3Local quality

2Reliability

If conventional testing tools execute the entire suite of tests every time a change is made to the source code, then testing completeness is improved, but resource utilization increases significantly

Engineering Contradiction:
Improvetesting completenessVSAvoidresource utilization
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent segments the test execution workload based on code change analysis. By dividing the test suite into affected and unaffected portions, the system executes only the necessary subset of tests, thereby reducing CPU usage, memory consumption, and other computational resources while ensuring that all potentially impacted functionality is thoroughly tested.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by executing only the minimum necessary tests required to verify the code change, rather than executing the complete test suite. This partial execution is sufficient to detect regressions related to the change while avoiding the waste of resources on tests that would not detect any new issues.

Inventive Principle:
Principle #16Partial or excessive action

3Loss of time

If the test optimization module uses static analysis to determine affected code and execute only related tests, then testing time is reduced, but test coverage may be incomplete

Engineering Contradiction:
Improvetesting timeVSAvoidtest coverage
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent performs preliminary static analysis of the codebase to build a dependency model before test execution. By pre-computing the relationships between code elements and test cases, the system can quickly identify which tests are affected by a change without missing any relevant coverage, as the dependency analysis proactively captures all direct and indirect relationships.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces a static analysis intermediary that acts as a mediator between the code change and test selection. This intermediary component analyzes the changed code, traces dependencies through the codebase, and determines the set of affected tests, ensuring that no relevant test coverage is missed while still avoiding execution of unrelated tests.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Use of energy by moving object

If a stateless engine is used in the test optimization module, then resource utilization and memory usage are reduced, but system complexity increases

Engineering Contradiction:
Improveresource utilizationVSAvoidsystem complexity
Core Design Contradiction:
Use of energy by moving objectVSDevice complexity

Solution Approach 1:

The patent extracts the state management functionality from the test optimization engine, creating a stateless architecture. By removing the need for persistent state, in-memory caches, and synchronization mechanisms, the system reduces memory consumption and resource utilization while maintaining its core analytical capabilities through stateless computation.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent employs cheap, short-living computational objects that can be created and discarded rapidly without requiring persistent storage or complex lifecycle management. This approach reduces memory pressure and simplifies the system architecture, as each test optimization operation can proceed with lightweight, ephemeral data structures that do not require sophisticated state management.

Inventive Principle:
Principle #27Cheap short-living objects (Disposable)

Data Source

PatentUS20210056012A1System and method for implementing a test optimization module
Publication Date: 2021.02.25 JPMORGAN CHASE BANK NA
  • US20210056012A1 patent drawing
  • US20210056012A1 patent drawing
  • US20210056012A1 patent drawing

AI summary

Various methods, apparatuses/systems, and media for implementing a test optimization module are provided. A processor utilizes a static analysis technique which analyzes an application's byte code to determine what files and line-numbers have been changed in a source code based on comparing successive versions of the application. The processor creates a change dependency graph (CDG) based on a change scope and analyzed bytecode, traverses the CDG to generate a list of test cases among a plurality of test cases, accessed from a test repository, that are directly and/or indirectly related to the modification to the source code, and automatically executes only the test cases selected from the generated list to test the latest version of the application.