IP Library › Granted Patent US 11,860,772
Granted Patent B2
US 11,860,772 · App. 18/070,120 · Granted Jan 2, 2024

Software testing in parallel threads with a record-locking database

Inventors: Shaktiraj Chauhan (Normal, IL); Nate Shepherd (Bloomington, IL)
Assignee: State Farm Mutual Automobile Insurance Company
G06F11/3688G06F8/44G06F11/3684G06F11/3692G06F16/2343
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,860,772
App. No.
18/070,120
Granted
Jan 2, 2024
Kind
B2
Abstract

Test cases written to test a software application can be dynamically distributed among different sets of test cases that can be executed simultaneously in different parallel threads, thereby speeding up testing relative to executing the test cases sequentially in a single thread. To avoid database conflicts that may occur when different test cases in different parallel threads attempt to access the same database simultaneously, testing of the software application can be performed in association with a record-locking database that locks database records individually instead of locking entire database tables or locking data structures that are larger than individual records. Locking individual database records can reduce and/or eliminate the chances that a test case in one parallel thread will be unable to access a record in the database because another test case in another parallel thread is simultaneously accessing the same database.

Claims (74)

1. A computer-implemented method, comprising:

distributing a plurality of test cases, configured to test interactions between a software application and a database, among a plurality of test sets;

executing at least a first test set and a second test set, of the plurality of test sets, in parallel;

locking, based on a first access attempt by a first test case in the first test set, a first record in the database; and

granting a second test case in the second test set, based on a second access attempt by the second test case, access to a second record in the database while the first record is locked.

2. The computer-implemented method of claim 1 , wherein:

the plurality of test cases comprises a set of classes,

individual classes, of the set of classes, comprise one or more methods,

the one or more methods are functions written in a programming language, and

the distributing is performed at one or more of:

a class level associated with the set of classes, or

a method level associated with the one or more methods.

3. The computer-implemented method of claim 1 , further comprising:

executing a third test set, of the plurality of test sets, in parallel with the first test set and the second test set;

detecting a third access attempt, by a third test case in the third test set, to access the first record while the first record is locked; and

blocking the third access attempt by the third test case based on the first record being locked.

4. The computer-implemented method of claim 3 , further comprising:

determining that the first record is unlocked following the first access attempt by the first test case; and

retrying execution of the third test case based on determining that the first record is unlocked.

5. The computer-implemented method of claim 1 , wherein the database is instantiated based on loading or instantiation of the software application.

6. The computer-implemented method of claim 1 , wherein the plurality of test cases was created based on an expectation of individual test cases, of the plurality of test cases,

being executed in a sequential execution order.

7. The computer-implemented method of claim 1 , further comprising:

collecting test results associated with the plurality of test sets, based on execution of the plurality of test sets in parallel, and

combining the test results into an aggregated test result report.

8. The computer-implemented method of claim 1 , wherein the distributing of the plurality of test cases among the plurality of test sets is based at least in part on predicting execution times of different test sets of the plurality of test sets.

9. A computing device, comprising:

one or more processors;

memory storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

distributing individual test cases, of a plurality of test cases configured to test interactions between a software application and a database, among a plurality of test sets;

simultaneously executing the plurality of test sets in parallel; and

granting different test cases, in different test sets of the plurality of test sets, simultaneous access to different records in the database while the different test cases are executing in parallel.

10. The computing device of claim 9 , wherein:

the plurality of test cases comprises a set of classes,

individual classes, of the set of classes, comprise one or more methods, and

the distributing is performed at one or more of:

a class level associated with the set of classes, or

a method level associated with the one or more methods.

11. The computing device of claim 9 , wherein the operations further comprise:

loading the software application, and

instantiating the database in response to loading the software application.

12. The computing device of claim 9 , wherein the operations further comprise:

at a first time, blocking a first test case in a first test set from accessing a particular record in the database during access of the particular record by a second test case in a second test set; and

at a second time after the second test case has finished accessing the particular record, granting the first test case access to the particular record.

13. The computing device of claim 9 , wherein the plurality of test cases was created based on an expectation of the individual test cases being executed in a sequential execution order.

14. The computing device of claim 9 , wherein the operations further comprise:

collecting test results associated with the plurality of test sets, based on execution of the plurality of test sets in parallel; and

combining the test results into an aggregated test result report.

15. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations, comprising:

distributing a plurality of test cases, configured to test interactions between a software application and a database, among a plurality of test sets;

executing at least a first test set and a second test set, of the plurality of test sets, in parallel;

locking, based on a first access attempt by a first test case in the first test set, a first record in the database; and

granting a second test case in the second test set, based on a second access attempt by the second test case, access to a second record in the database while the first record is locked.

16. The one or more non-transitory computer-readable media of claim 15 , wherein:

the plurality of test cases comprises a set of classes,

individual classes, of the set of classes, comprise one or more methods, and

the distributing is performed at one or more of:

a class level associated with the set of classes, or

a method level associated with the one or more methods.

17. The one or more non-transitory computer-readable media of claim 15 , wherein the operations further comprise:

executing a third test set, of the plurality of test sets, in parallel with the first test set and the second test set;

detecting a third access attempt, by a third test case in the third test set, to access the first record while the first record is locked;

blocking the third access attempt by the third test case based on the first record being locked;

determining that the first record is unlocked following the first access attempt by the first test case; and

retrying execution of the third test case based on determining that the first record is unlocked.

18. The one or more non-transitory computer-readable media of claim 15 , wherein the plurality of test cases was created based on an expectation of individual test cases, of the plurality of test cases, being executed in a sequential execution order.

19. The one or more non-transitory computer-readable media of claim 15 , wherein the operations further comprise:

collecting test results associated with the plurality of test sets, based on execution of the plurality of test sets in parallel, and

combining the test results into an aggregated test result report.

20. A system for software testing in parallel, the system comprising:

means for distributing a plurality of test cases, configured to test interactions between a software application and a database, among a plurality of test sets,

means for executing at least a first test set and a second test set, of the plurality of test sets, in parallel;

means for locking, based on a first access attempt by a first test case in the first test set, a first record in the database; and

means for granting a second test case in the second test set, based on a second access attempt by the second test case, access to a second record in the database while the first record is locked.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2022
From: CHAUHAN, SHAKTIRAJ; SHEPHERD, NATE
To: STATE FARM MUTUAL AUTOMOBILE INSURANCE COMPANY
Reel/Frame 061894/0128 →
Continuity (2)
Continuation 17333535 · May 28, 2021
Related Publication 20230090033A1 · Mar 23, 2023