Method and apparatus for prioritizing software tests
First Claim
1. A computer-implemented method of prioritizing software tests, the method comprising the steps of:
- (A) prioritizing software tests for software to be tested based on coverage indicators for the software tests and an indication of impacted areas of the software, each of the coverage indicators indicating which portions of the software are executed for a respective one of the software tests; and
(B) generating a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein;
the portions of the software include at least one of a plurality of blocks, andthe indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software, wherein the step (A) comprises the steps of;
(A1) computing a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being executed by each respective one of the software tests;
(A2) selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have the same computed maximum weight, the step (A2) further comprises the steps of;
(A2a) determining which one of the two or more of the software tests has a maximum overall coverage of the software to be tested; and
(A2b) selecting as the first test, the one of the two or more software tests having the maximum overall coverage of the software to be tested; and
(A3) adding the selected first test to a current test sequence.
2 Assignments
0 Petitions
Accused Products
Abstract
A computer system and method is provided for prioritizing software tests. Software tests are prioritized based on coverage indicators for the software tests and an indication of impacted areas of the software. Each of the coverage indicators indicates which portions of the software are executed for a respective one of the software tests. The portions of the software include at least one of a plurality of blocks. The indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software. A prioritized list of software tests is output. The prioritized list includes at least one test sequence.
86 Citations
37 Claims
-
1. A computer-implemented method of prioritizing software tests, the method comprising the steps of:
-
(A) prioritizing software tests for software to be tested based on coverage indicators for the software tests and an indication of impacted areas of the software, each of the coverage indicators indicating which portions of the software are executed for a respective one of the software tests; and (B) generating a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein; the portions of the software include at least one of a plurality of blocks, and the indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software, wherein the step (A) comprises the steps of; (A1) computing a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being executed by each respective one of the software tests; (A2) selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have the same computed maximum weight, the step (A2) further comprises the steps of; (A2a) determining which one of the two or more of the software tests has a maximum overall coverage of the software to be tested; and (A2b) selecting as the first test, the one of the two or more software tests having the maximum overall coverage of the software to be tested; and (A3) adding the selected first test to a current test sequence. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-implemented method of prioritizing software tests, the method comprising the steps of:
-
(A) prioritizing software tests for software to be tested based on coverage indicators for the software tests and an indication of impacted areas of the software, each of the coverage indicators indicating which portions of the software are executed for a respective one of the software tests; and (B) generating a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein; the portions of the software include at least one of a plurality of blocks, and the indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software, wherein the step (A) comprises the steps of; (A1) computing a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being executed by each respective one of the software tests; (A2) selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have a same computed maximum weight, the step (A2) further comprises the steps of; (A2a) determining which one of the two or more of the software tests has a minimum execution time; and (A2b) selecting as the first test, the one of the two or more software tests having the minimum execution time; and (A3) adding the selected first test to a current test sequence.
-
-
14. A computer-readable medium having instructions stored thereon, such that when the instructions are loaded and executed by a processor, the processor is caused to perform the steps of:
-
(A) prioritizing software tests based on coverage indicators for the software tests and an indication of impacted areas of software to be tested, each of the coverage indicators indicating which portions of the software to be tested are executed for a respective one of the software tests; and (B) generating a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein; the software to be tested includes a plurality of blocks, each of the coverage indicators indicates at least one block of the plurality of blocks that is executed by a respective one of the software tests, and the indication of impacted areas indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software to be tested, wherein the step (A) comprises the steps of; (A1) computing a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being executed by each respective one of the software tests; (A2) selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have the same computed maximum weight, the step (A2) further comprises the steps of; (A2a) determining which one of the two or more of the software tests has a maximum overall coverage of the software to be tested; and (A2b) selecting as the first test, the one of the two or more software tests having the maximum overall coverage of the software to be tested; and (A3) adding the selected first test to a current test sequence.
-
-
15. A computer-readable medium having instructions stored thereon, such that when the instructions are loaded and executed by a processor, the processor is caused to perform the steps of:
-
(A) prioritizing software tests based on coverage indicators for the software tests and an indication of impacted areas of software to be tested, each of the coverage indicators indicating which portions of the software to be tested are executed for a respective one of the software tests; and (B) generating a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein; the software to be tested includes a plurality of blocks, each of the coverage indicators indicates at least one block of the plurality of blocks that is executed by a respective one of the software tests, and the indication of impacted areas indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software to be tested, wherein the step (A) comprises the steps of; (A1) computing a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being executed by each respective one of the software tests; (A2) selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have the same computed maximum weight, the step (A2) further comprises the steps of; (A2a) determining which one of the two or more of the software tests has a minimum execution time; and (A2b) selecting as the first test, the one of the two or more software tests having the minimum execution time; and (A3) adding the selected first test to a current test sequence. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. A computer system for prioritizing software tests, the computer system comprising:
-
a prioritizer for prioritizing the software tests based on coverage indicators for the software tests and an indication of impacted areas of software to be tested, each of the coverage indicators indicating which portions of the software to be tested are caused to be executed by a respective one of the software tests; and an outputter for outputting a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein; the software to be tested includes a plurality of blocks, each of the coverage indicators indicates at least one block of the plurality of blocks that is caused to be executed by a respective one of the software tests, and the indication of impacted areas indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software to be tested, wherein the prioritizer further comprises; a weight determiner for determining a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being caused to be executed by each respective one of the software tests; a selector for selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have the same computed maximum weight, the selector is further adapted for; determining which one of the two or more of the software tests has a maximum overall coverage of the software to be tested; and selecting as the first test, the one of the two or more software tests having the maximum overall coverage of the software to be tested; and a test adder for adding the selected first test to a current test sequence. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A computer system for prioritizing software tests, the computer system comprising:
-
a prioritizer for prioritizing the software tests based on coverage indicators for the software tests and an indication of impacted areas of software to be tested, each of the coverage indicators indicating which portions of the software to be tested are caused to be executed by a respective one of the software tests; and an outputter for outputting a prioritized list of the software tests, the prioritized list including at least one test sequence, wherein; the software to be tested includes a plurality of blocks, each of the coverage indicators indicates at least one block of the plurality of blocks that is caused to be executed by a respective one of the software tests, and the indication of impacted areas indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software to be tested, wherein the prioritizer further comprises; a weight determiner for determining a weight for each of the software tests, the weight being based on a number of the new and the modified blocks that are indicated as being caused to be executed by each respective one of the software tests; a selector for selecting a first test having a maximum weight among the software tests, wherein when two or more of the software tests have the same computed maximum weight, the selector is further adapted for; determining which one of the two or more of the software tests has a minimum execution time; and selecting as the first test, the one of the two or more software tests having the minimum execution time; and a test adder for adding the selected first test to a current test sequence.
-
Specification