US 11,720,482 B1
Retrying failed test cases in software testing using parallel threads
Shaktiraj Chauhan, Normal, IL (US); and Nate Shepherd, Bloomington, IL (US)
Assigned to State Farm Mutual Automobile Insurance Company, Bloomington, IL (US)
Filed by State Farm Mutual Automobile Insurance Company, Bloomington, IL (US)
Filed on May 28, 2021, as Appl. No. 17/333,637.
Claims priority of provisional application 63/152,754, filed on Feb. 23, 2021.
Int. Cl. G06F 11/36 (2006.01); G06N 20/00 (2019.01)
CPC G06F 11/3688 (2013.01) [G06F 11/3692 (2013.01); G06F 11/3696 (2013.01); G06N 20/00 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method, comprising:
identifying, by one or more processors of a computing device, a plurality of test cases that test interactions between a software application and a database;
distributing, by the one or more processors, individual test cases, of the plurality of test cases, among a plurality of parallel threads on the computing device;
executing, by the one or more processors, the plurality of test cases in the plurality of parallel threads;
identifying, by the one or more processors, failed test cases, of the plurality of test cases, based on the executing;
generating, by the one or more processors, at least one test failure log, the at least one test failure log indicating the failed test cases and failure codes corresponding to the failed test cases, wherein the failure codes indicate causes of failures of the failed test cases;
determining, by the one or more processors, and based on the failure codes, an execution order for re-execution of the failed test cases, wherein:
the execution order is arranged to reduce likelihoods of the causes of the failures, associated with the failure codes, reoccurring during the re-execution of the failed test cases;
re-executing, by the one or more processors, the failed test cases based on the execution order;
collecting, by the one or more processors, a plurality of test results associated with the test cases distributed to the plurality of parallel threads, wherein the plurality of test results indicates whether the plurality of test cases ultimately succeeded during at least one of the executing or the re-executing; and
aggregating, by the one or more processors, the plurality of test results.