Test Case Selection via Component Dependency Analysis
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
2Reliability
If all test cases are executed for every change, then comprehensive validation is achieved, but the time consumption and resource usage increase
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
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
3Reliability
If the complete test suite is run for each modification, then regression errors are detected, but the complexity of the testing process increases
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
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
Data Source
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.


