Java Virtual Machine Class Dependency Tracking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing continuous testing solutions for Java applications are inefficient as they often re-run unnecessary tests, leading to prolonged testing times and excessive computational resource consumption, due to challenges in tracking and determining dependency relationships within large and complex applications.

Innovation Solution

The system instruments application classes to record usage during testing, mapping which classes are used by which tests, allowing only relevant tests to be re-run when a class is modified, thereby reducing unnecessary testing and conserving computational resources.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If all tests are re-run when a class is modified, then testing completeness is ensured, but testing time and computational resource consumption increase

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

Solution Approach 1:

The patent segments the test suite into multiple test classes, each associated with specific application classes. When an application class is modified, only the test classes associated with that specific class are re-run, rather than executing the entire test suite. This segmentation approach maintains testing completeness for modified components while significantly reducing overall testing time and computational resource consumption.

Inventive Principle:
Principle #1Segmentation

2Productivity

If dependency tracking is implemented to identify relevant tests, then testing efficiency improves, but system complexity increases

Engineering Contradiction:
Improvetesting efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent performs preliminary action by pre-establishing associations between test classes and application classes during the initial setup. Test classes are configured with metadata indicating which application classes they test, allowing the system to quickly determine relevant tests when classes are modified without performing complex real-time analysis. This preliminary configuration simplifies the runtime dependency tracking process.

Inventive Principle:
Principle #10Preliminary action

3Loss of energy

If only relevant tests are re-run, then computational resource consumption decreases, but risk of missed tests increases

Engineering Contradiction:
Improvecomputational resource consumptionVSAvoidtest coverage
Core Design Contradiction:
Loss of energyVSReliability

Solution Approach 1:

The patent implements feedback mechanisms where the testing framework monitors class modifications and uses the pre-established test-class to application-class mappings to automatically determine which tests should be re-run. This feedback loop ensures that only relevant tests are executed while maintaining comprehensive test coverage for modified components, preventing both resource waste and missed tests.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS11726901B2Continuous testing and dependency tracking for java virtual machines
Publication Date: 2023.08.15 RED HAT LLC
  • US11726901B2 patent drawing
  • US11726901B2 patent drawing
  • US11726901B2 patent drawing

AI summary

A system includes a processor in communication with a memory, a virtual machine running on the processor, and an application executing within the virtual machine. The virtual machine is associated with at least one testing tool configured to transform a plurality of application classes of the application, such that each respective class of the plurality of application classes is configured to track its respective usage. The testing tool is further configured to test the application with a plurality of tests, and while testing the application, map which respective classes of the plurality of application classes are used by respective tests. Additionally, the testing tool is configured to determine which class(es) is used by which tests (e.g., a subset of tests). Responsive to a first class being modified, the testing tool is configured to retest the application with the subset of tests.