CoverageRank Test Selection for Regression Testing Bottlenecks
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In software development with large, evolving code bases, running all regression tests is resource-intensive, time-consuming, and can become brittle and ineffective over time, making it challenging to identify areas for regression testing and maintain engineering velocity.
Innovation Solution
The CoverageRank technique ranks tests based on code coverage information to select a subset of tests that prioritize maximum coverage and fault detection, reducing the number of tests needed to be executed and improving engineering velocity by focusing on changed code areas.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If all regression tests are run to ensure comprehensive testing, then testing coverage is improved, but time consumption and resource usage increase
Solution Approach 1:
The patent segments the regression test suite into multiple groups based on code coverage metrics. Instead of running all tests uniformly, the system divides tests into segments that target specific changed code areas, allowing selective execution of only the most relevant test segments while maintaining adequate coverage
Solution Approach 2:
The patent changes the parameter of test selection from static (all tests) to dynamic (selected tests based on coverage analysis). By calculating code coverage parameters and using them to determine which tests to execute, the system adapts the test suite to the specific changes made in the codebase
2Reliability
If all regression tests are run to ensure comprehensive testing, then testing coverage is improved, but resource consumption increases
Solution Approach 1:
The patent extracts and identifies the essential subset of tests needed for effective regression testing by analyzing code coverage data. It takes out only the necessary tests from the full test suite, excluding redundant or low-value tests that do not contribute significantly to detecting regressions in changed code areas
Solution Approach 2:
The patent applies partial action by executing only a portion of the full test suite that is sufficient to achieve the desired testing coverage. Rather than running all tests (excessive action), it runs the minimum necessary subset that targets changed code areas effectively
3Productivity
If test selection is based on code coverage information, then engineering velocity is improved, but test selection complexity increases
Solution Approach 1:
The patent performs preliminary code coverage analysis before test execution to pre-determine which tests should be run. By calculating coverage metrics and selecting tests in advance based on changed code identification, the system prepares the test plan beforehand, streamlining the actual test execution phase
Solution Approach 2:
The patent introduces code coverage information as an intermediary between code changes and test selection. This intermediary layer analyzes the relationship between changed code and test coverage, using this analysis to mediate the selection process and automatically determine which tests are most relevant
Data Source
AI summary
A system can identify a file comprising computer-executable instructions, wherein the file has been modified since the file was last transformed into a computer-executable program on which a group of tests was performed. The system can, for respective tests, determine respective line coverage ratios, respective function coverage ratios, and respective branch coverage ratios. The system can select an updated group of tests from the group of tests based on the respective line ratios, the respective function ratios, and the respective branch ratios, the updated group of tests comprising a subgroup of the group of tests. The system can create an updated computer-executable program from the file. The system can test the updated computer-executable program with the updated group of tests.


