IP Library Granted Patent US 11,983,097
Granted Patent B2
US 11,983,097 · App. 17/385,692 · Granted May 14, 2024

Ranking tests based on code change and coverage

Inventors: Tonworio Oguara (Everett, WA); Xu Jian (Shanghai, CN); Chen Sun (Seattle, WA); YuChan Lo (Taoyuan Dist., TW)
Assignee: EMC IP HOLDING COMPANY LLC
G06F11/368G06F11/3676G06F11/3684G06F11/3688G06F11/3692
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,983,097
App. No.
17/385,692
Granted
May 14, 2024
Kind
B2
Abstract

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.

Claims (56)

1. A system, comprising:

a processor; and

a memory that stores executable instructions that, when executed by the processor, facilitate performance of operations, comprising:

identifying 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;

for respective changed lines of the file and for respective first tests of the group of tests that test the respective changed lines, determining respective line coverage ratios that represent respective ratios between the respective ones of the respective changed lines that are tested by the respective first tests and respective total changed lines in the file;

for respective changed functions of the file and for respective second tests of the group of tests that test the respective changed functions, determining respective function coverage ratios that represent respective ratios between the respective ones of the respective changed functions that are tested by the respective second tests and respective total changed functions in the file;

for respective changed branches of the file and for respective third tests of the group of tests that test the respective changed branches, determining respective branch coverage ratios that represent respective ratios between the respective ones of the respective changed branches that are tested by the respective third tests and respective total changed branches in the file;

selecting an updated group of tests from the group of tests based on the respective line coverage ratios, the respective function coverage ratios, and the respective branch coverage ratios, based on a first test of the respective first tests having a line coverage ratio greater than a threshold value,

wherein the threshold value is greater than zero, wherein the updated group of tests comprises a subgroup of the group of tests, and based on respective failed or failing tests of respective tests of the group of tests,

wherein a failure of a prior version of the computer-executable program was identified when tested with the respective failed or failing tests,

wherein the first test is selected based on the first test having a highest line coverage ratio among the group of tests, wherein a second test is selected for the updated group of tests based on the second test having a highest function coverage ratio among the group of tests,

wherein a third test is selected for the updated group of tests based on the third test having a highest branch coverage ratio among the group of tests, and

wherein the first test, the second test, and the third test are selected independently of a combined coverage ratio of the first test, the second test, and the third test;

creating an updated computer-executable program from the file; and

testing the updated computer-executable program with the updated group of tests.

2. The system of claim 1 , wherein the operations further comprise:

as a result of previously testing the computer-executable program, wherein previously testing the computer-executable program comprises testing the file, storing an indication of which tests were performed as part of previously testing the computer-executable program, a group of at least one file that comprises the file that was tested, and which test of the group of tests tested a particular line, function, or branch of the group of at least one file.

3. The system of claim 1 , wherein the identifying of the file is based on the file being identified in a changeset.

4. The system of claim 1 , wherein the identifying of the file is based on the file being identified in a pull request.

5. The system of claim 1 , wherein the selecting of the updated group of tests is based on respective historic execution time of the respective tests of the group of tests.

6. The system of claim 1 , wherein the selecting of the updated group of tests is based on respective historic fault detection rate of the respective tests of the group of tests.

7. The system of claim 1 , further comprising:

examining respective tests of the group of tests for the selecting in a descending order of values of the respective line coverage ratios, the respective function coverage ratios, or the respective branch coverage ratios.

8. A method, comprising:

for respective changed lines of a file that corresponds to a computer program, and for respective first tests of a group of tests that test the respective changed lines, determining, by a system comprising a processor, respective line coverage ratios that represent respective ratios between the respective ones of the respective changed lines that are tested by the respective first tests and respective total changed lines in the file;

for respective changed functions of the file and for respective second tests of the group of tests that test the respective changed functions, determining, by the system, respective function coverage ratios that represent respective ratios between the respective ones of the respective changed functions that are tested by the respective second tests and respective total changed functions in the file;

for respective changed branches of the file and for respective third tests of the group of tests that test the respective changed branches, determining, by the system, respective branch coverage ratios that represent respective ratios between the respective ones of the respective changed branches that are tested by the respective third tests and respective total changed branches in the file;

selecting, by the system, a subset of tests from the group of tests based on the respective line coverage ratios, the respective function coverage ratios, and the respective branch coverage ratios, based on a first test of the respective first tests having a line coverage ratio greater than a defined threshold value,

wherein the defined threshold value is greater than zero, and based on respective failed or failing tests of respective tests of the group of tests,

wherein a failure of a prior version of the computer program was identified when tested with the respective failed or failing tests,

wherein the first test of the subset of tests is selected based on the first test having a highest line coverage ratio among the group of tests,

wherein a second test of the subset of tests is selected based the second test having a highest function coverage ratio among the group of tests, and

wherein a third test of the subset of tests is selected for the subset of tests based on the third test having a highest branch coverage ratio among the group of tests; and

testing, by the system, the computer program with the subset of tests.

9. The method of claim 8 , wherein the selecting of the subset of tests is based on respective historic execution time of respective tests of the group of tests.

10. The method of claim 8 , wherein the selecting of the subset of tests is based on respective historic fault detection rate of respective tests of the group of tests.

11. The method of claim 8 , further comprising:

examining, by the system, respective tests of the group of tests for the selecting in a descending order of values of the respective line coverage ratios, the respective function coverage ratios, or the respective branch coverage ratios.

12. The method of claim 8 , wherein the respective changed lines are changed relative to a previous version of the file that corresponds to a previous version of the computer program that was tested with the group of tests.

13. The method of claim 8 , further comprising:

as a result of previously testing the computer program, wherein previously testing the computer program comprises testing the file, storing, by the system, an indication of which tests were performed as part of previously testing the computer program, a group of at least one file that comprises the file that was tested, and which test of the group of tests tested a particular line, function, or branch of the group of at least one file.

14. A non-transitory computer-readable medium comprising instructions that, in response to execution, cause a system comprising a processor to perform operations, comprising:

determining that a file that is part of a computer program has been modified since the computer program was tested with a group of tests;

determining line coverage of a first test of the group of tests, wherein the line coverage represents a value of a first number of changed lines of a group of changed lines of the file tested by the first test relative to a second number of total changed lines of the file; and

testing the computer program with the first test based on the first test having a highest line coverage ratio among the group of tests, with a second test of the group of tests based on the second test having a highest function coverage ratio among the group of tests, and with a third test of the group of tests based on the third test having a highest branch coverage ratio among the group of tests, based on the first test having a line coverage ratio greater than a predetermined threshold value, wherein the predetermined threshold value is greater than zero, and based on a failure of a prior version of the computer program being identified when tested with the first test.

15. The non-transitory computer-readable medium of claim 14 , wherein the group of tests is a first group of tests, and wherein the operations further comprise:

determining a predetermined number of tests, wherein the predetermined number of tests is greater than one; and

selecting a second group of tests equal to the predetermined number of tests based on respective tests of the group of tests having a respective line coverage above the predetermined threshold value.

16. The non-transitory computer-readable medium of claim 15 , wherein the second group of tests represents first tests of the group of tests encountered while examining the group of tests that having the respective line coverage above the predetermined threshold value.

17. The non-transitory computer-readable medium of claim 14 , wherein the testing of the computer program is performed with a subset of the group of tests, the subset comprising the first test.

18. The non-transitory computer-readable medium of claim 14 , wherein the operations further comprise:

in response to determining that a first file that corresponds to the computer program is not covered with the group of tests, mapping a component of the first file to a pair comprising a target of the first file and a fourth test of the group of tests that tests the component.

19. The non-transitory computer-readable medium of claim 18 , wherein the operations further comprise:

determining that the first file that corresponds to the computer program was not covered by the computer program being tested with the group of tests based on an indication of the first file being omitted from a stored indication of which files were tested as part of previously testing the computer program.

20. The non-transitory computer-readable medium of claim 14 , wherein the operations further comprise:

as a result of previously testing the computer program, wherein previously testing the computer program comprises testing the file, storing, by the system, an indication of which tests were performed as part of previously testing the computer program, a group of at least one file that comprises the file that was tested, and which test of the group of tests tested a particular line, function, or branch of the group of at least one file.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2024
From: OGUARA, TONWORIO; JIAN, XU; SUN, CHEN; LO, YUCHAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 066193/0177 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 061654/0064 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0382 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
Continuity (1)
Related Publication 20230025441A1 · Jan 26, 2023