IP Library Granted Patent US 12,613,792
Granted Patent B2
US 12,613,792 · App. 18/334,786 · Granted Apr 28, 2026

Software testing in parallel with different database instances

Inventors: Shaktiraj Chauhan (Normal, IL); Nate Shepherd (Bloomington, IL)
Assignee: State Farm Mutual Automobile Insurance Company
G06F11/3688G06F9/52G06F11/3692G06F16/252
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 12,613,792
App. No.
18/334,786
Filed
Jun 14, 2023
Granted
Apr 28, 2026
Kind
B2
Examiner
PAN, HANG
Art Unit
2193
USPC
717/124
Abstract

Test cases written to test a software application can be dynamically distributed among a set of software application instances such that different sets of test cases can execute simultaneously in parallel, thereby speeding up testing relative to executing the test cases sequentially. To avoid database conflicts that may occur when different test cases are executed in parallel, each software application instance can be associated with a different database instance. Accordingly, a first test case executing in association with a first database instance can avoid interfering with a second test case executing in association with a second database instance.

Claims (85)

1 . A method, comprising:

dynamically distributing, by a processor, a group of test cases into different test sets prior to initiating execution of the group of test cases in association with parallel testing of a software application, wherein the group of test cases;

is configured to test interactions between the software application and a database, and

was initially configured for execution of individual test cases, of the group of test cases, in a sequential execution order in association with a same instance of the database;

initiating, by the processor, different software application instances of the software application, wherein after initiation of the different software application instances:

the different software application instances execute to create, as tightly-coupled in-memory databases, different database instances of the database that respectively correspond to the different software application instances; and

executing, by the processor, the different test sets in parallel in association with corresponding instances of:

the different software application instances, and

the different database instances that respectively correspond to the different software application instances,

wherein executing the different test sets in parallel causes the individual test cases to be executed in an order that differs from the sequential execution order.

2 . The method of claim 1 , further comprising:

collecting, by the processor, test result sets associated with execution of the different test sets in parallel; and

combining, by the processor, the test result sets into an aggregated test result report.

3 . The method of claim 1 , wherein execution of the different test sets in parallel causes the different database instances to store different data.

4 . The method of claim 1 , wherein:

the group of test cases includes a first test case and a second test case, the first test case and the second test case both being configured to access a same data element in the database,

the distributing causes:

the first test case to be assigned to a first test set associated with a first software application instance that corresponds to a first database instance, and

the second test case to be assigned to a second test set associated with a second software application instance that corresponds to a second database instance, and

executing the different test sets in parallel avoids database errors by permitting the first test case and the second test case to simultaneously access different instances of the same data element in the first database instance and the second database instance.

5 . The method of claim 1 , wherein the different software application instances are initiated in association with at least one of:

different virtual machines, or

different processing threads.

6 . The method of claim 1 , wherein:

code of the group of test cases is expressed in a set of class files, individual class files of the set of class files each including one or more methods, and

the distributing is performed at one or more of:

a class level associated with the set of class files, or

a method level associated with the one or more methods.

7 . The method of claim 1 , further comprising:

identifying, by the processor, test cases within a particular test set that is associated with a particular software application instance;

distributing, by the processor, the test cases among different test subsets, wherein the different test subsets are associated with different processing threads that correspond to the particular software application instance; and

executing, by the processor, and via the different processing threads, the different test subsets in parallel, in association with the particular software application instance and a particular database instance that corresponds to the particular software application instance.

8 . The method of claim 1 , wherein the group of test cases is dynamically distributed based at least in part on predicting execution times of the different test sets.

9 . The method of claim 1 , wherein:

the different software application instances respectively create the different database instances as table-locking databases or record-locking databases, and

executing the different test sets in parallel in association with the corresponding instances of the different software application instances and the different database instances avoids at least one of table-locking errors or record-locking errors associated with the table-locking databases or the record-locking databases.

10 . The method of claim 1 , wherein the software application is a policy management system configured to manage policies by accessing and modifying policy data records stored in the database.

11 . The method of claim 1 , wherein the interactions between the software application and the database, tested via the group of test cases during execution of the different test sets in parallel, comprise the different software application instances accessing and modifying records stored in the tightly-coupled in-memory databases respectively created by the different software application instances.

12 . A computing device, comprising:

a processor; and

memory storing computer-executable instructions that, when executed by the processor, cause the processor to perform operations comprising:

dynamically distributing a group of test cases into at least a first test set and a second test set prior to initiating execution of the group of test cases in association with parallel testing of a software application, wherein the group of test cases:

is configured to test interactions between the software application and a database, and

was initially configured for execution of individual test cases, of the group of test cases, in a sequential execution order in association with a same instance of the database;

initiating a first software application instance of the software application and a second software application instance of the software application, wherein the initiating causes:

the first software application instance to, after initiation of the first software application instance, execute to create a first database instance of the database as a first in-memory database that corresponds to the first software application instance, and

the second software application instance to, after initiation of the second software application instance, execute to create a second database instance of the database as a second in-memory database that corresponds to the second software application instance; and

executing the first test set and the second test set in parallel, wherein:

the first test set executes in association with the first software application instance and the first database instance,

the second test set executes in association with the second software application instance and the second database instance, and

executing the first test set and the second test set in parallel causes the individual test cases to be executed in an order that differs from the sequential execution order.

13 . The computing device of claim 12 , wherein execution of the first test set and the second test set in parallel causes the first database instance and the second database instance to store different data.

14 . The computing device of claim 12 , wherein the first software application instance and the second software application instance are associated with at least one of:

different virtual machines on the computing device, or

different processing threads on the computing device.

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

distributing test cases within the first test set among different test subsets, the different test subsets being associated with different processing threads on the computing device that correspond to the first software application instance; and

executing, via the different processing threads, the different test subsets in parallel in association with the first software application instance and the first database instance.

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

dynamically distributing a group of test cases into different test sets prior to initiating execution of the group of test cases in association with parallel testing of a software application, wherein the group of test cases:

is configured to test interactions between the software application and a database, and

was initially configured for execution of individual test cases, of the group of test cases, in a sequential execution order in association with a same instance of the database;

initiating different software application instances of the software application, wherein after initiation of the different software application instances:

the different software application instances execute to create, as in-memory databases, different database instances of the database that respectively correspond to the different software application instances; and

executing the different test sets in parallel in association with corresponding instances of:

the different software application instances, and

the different database instances that respectively correspond to the different software application instances,

wherein executing the different test sets in parallel causes the individual test cases to be executed in an order that differs from the sequential execution order.

17 . The one or more non-transitory computer-readable media of claim 16 , wherein execution of the different test sets in parallel causes the different database instances to store different data.

18 . The one or more non-transitory computer-readable media of claim 16 , wherein the different software application instances are initiated in association with at least one of:

different virtual machines, or

different processing threads.

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

distributing test cases within a particular test set, associated with a particular software application instance, among different test subsets, the different test subsets being associated with different processing threads corresponding to the particular software application instance; and

executing, via the different processing threads, the different test subsets in parallel in association with the particular software application instance and a particular database instance that corresponds to the particular software application instance.

20 . A system comprising:

means for dynamically distributing a group of test cases into different test sets prior to initiating execution of the group of test cases in association with parallel testing of a software application, wherein the group of test cases:

is configured to test interactions between the software application and a database, and

was initially configured for execution of individual test cases, of the group of test cases, in a sequential execution order in association with a same instance of the database;

means for initiating different software application instances of the software application, wherein after initiation of the different software application instances:

the different software application instances execute to create, as in-memory databases, different database instances of the database that respectively correspond to the different software application instances; and

means for executing the different test sets in parallel in association with corresponding instances of:

the different software application instances, and

the different database instances that respectively correspond to the different software application instances,

wherein executing the different test sets in parallel causes the individual test cases to be executed in an order that differs from the sequential execution order.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2023
From: CHAUHAN, SHAKTIRAJ; SHEPHERD, NATE
To: STATE FARM MUTUAL AUTOMOBILE INSURANCE COMPANY
Reel/Frame 063951/0378 →
Continuity (3)
Continuation 17333739 · May 28, 2021
Provisional Application 63152758 · Feb 23, 2021
Related Publication 20230333972A1 · Oct 19, 2023
References Cited (87)
US 6330528B1 · Huang et al. · 2001 [cited by applicant]
US 7178063B1 · Smith · 2007 [cited by applicant]
US 7506312B1 · Girolami-Rose et al. · 2009 [cited by applicant]
US 8028276B1 · Bessonov · 2011 [cited by applicant]
US 8281187B1 · Desai et al. · 2012 [cited by applicant]
US 8549522B1 · Chatterjee et al. · 2013 [cited by applicant]
US 8639983B1 · Desai et al. · 2014 [cited by applicant]
US 9009823B1 · Ismael et al. · 2015 [cited by applicant]
US 9032373B1 · Gupta · 2015 [cited by examiner]
US 10067858B2 · McDonald · 2018 [cited by applicant]
US 10387295B1 · Kesarwani · 2019 [cited by examiner]
US 10430319B1 · Tokappa et al. · 2019 [cited by applicant]
US 10628394B1 · Gurspan · 2020 [cited by applicant]
US 11080171B2 · Venkataraman et al. · 2021 [cited by applicant]
US 11537575B1 · McNair · 2022 [cited by examiner]
US 11537616B1 · Lin · 2022 [cited by examiner]
US 20020116507A1 · Manjure et al. · 2002 [cited by applicant]
US 20030208351A1 · Hartman et al. · 2003 [cited by applicant]
US 20050091336A1 · DeHamer · 2005 [cited by examiner]
US 20050120276A1 · Kolawa · 2005 [cited by examiner]
US 20050251719A1 · Gerber · 2005 [cited by applicant]
US 20060212412A1 · Sapir · 2006 [cited by applicant]
US 20070226691A1 · Happell et al. · 2007 [cited by applicant]
US 20070271483A1 · Kolawa et al. · 2007 [cited by applicant]
US 20090119773A1 · D'Amore · 2009 [cited by examiner]
US 20090144706A1 · Pastorelli · 2009 [cited by applicant]
US 20090187366A1 · Day et al. · 2009 [cited by applicant]
US 20090259699A1 · Chasman et al. · 2009 [cited by applicant]
US 20090307763A1 · Rawlins et al. · 2009 [cited by applicant]
US 20100100871A1 · Celeskey · 2010 [cited by applicant]
US 20110083122A1 · Chen · 2011 [cited by examiner]
US 20110246540A1 · Salman et al. · 2011 [cited by applicant]
US 20120023373A1 · Chen · 2012 [cited by applicant]
US 20120102462A1 · Kushneryk · 2012 [cited by examiner]
US 20120151455A1 · Tsantilis et al. · 2012 [cited by applicant]
US 20130047141A1 · Shann et al. · 2013 [cited by applicant]
US 20140359581A1 · Soshin · 2014 [cited by applicant]
US 20160026562A1 · Hwang et al. · 2016 [cited by applicant]
US 20160041543A1 · Monczynski et al. · 2016 [cited by applicant]
US 20160162392A1 · Hu et al. · 2016 [cited by applicant]
US 20160246575A1 · Baluch et al. · 2016 [cited by applicant]
US 20170019388A1 · Kamble · 2017 [cited by examiner]
US 20170109257A1 · Li · 2017 [cited by applicant]
US 20180113798A1 · Johnston et al. · 2018 [cited by applicant]
US 20180113799A1 · M.V. et al. · 2018 [cited by applicant]
US 20180121339A1 · Mayers et al. · 2018 [cited by applicant]
US 20180173606A1 · Malla · 2018 [cited by examiner]
US 20190087311A1 · Donaldson et al. · 2019 [cited by applicant]
US 20190129833A1 · Lv et al. · 2019 [cited by applicant]
US 20190294531A1 · Avisror et al. · 2019 [cited by applicant]
US 20190332523A1 · Gefen et al. · 2019 [cited by applicant]
US 20200065235A1 · Li · 2020 [cited by applicant]
US 20200125485A1 · Wiener et al. · 2020 [cited by applicant]
US 20200174907A1 · Lundquist et al. · 2020 [cited by applicant]
US 20200210170A1 · Johnson · 2020 [cited by applicant]
US 20200310860A1 · Arumugam et al. · 2020 [cited by applicant]
US 20200349062A1 · Coleman et al. · 2020 [cited by applicant]
US 20210109848A1 · Leon · 2021 [cited by applicant]
US 20210174228A1 · Gokarn et al. · 2021 [cited by applicant]
US 20210286710A1 · Hicks et al. · 2021 [cited by applicant]
US 20210288925A1 · Tagra · 2021 [cited by applicant]
US 20230090033A1 · Chauhan · 2023 [cited by applicant]
US 20230333972A1 · Shaktiraj · 2023 [cited by applicant]
US 20230333973A1 · Shaktiraj · 2023 [cited by applicant]
US 20250199945A1 · Chauhan et al. · 2025 [cited by applicant]
US 20250238353A1 · Chauhan et al. · 2025 [cited by applicant]
Disgiuseppe, “Automatically Describing Software Faults”. Proceedings of the 2013 9th Joint Metting on the Foundations of Software Engineering, 2013, 4 pgs. [cited by applicant]
Haftmann, et al., “Parellel Execution of Test Runs for Database Application Systems” Proceedings of the 31st VLDB Conference, 2005, 12 pgs. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,739, mailed on Jan. 12, 2023, Chauhan, “Software Testing in Parallel With Different Database Instances”, 12 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,894, mailed on Jan. 6, 2023, Chauhan, “Parallel Software Testing Based On Annotations”, 18 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,989, mailed on Nov. 18, 2022, Chauhan, “Test Conflict Guard for Parallel Software Testing”, 33 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,637, mailed on Dec. 20, 2022, Chauhan, “Retrying Failed Test Cases in Software Testing Using Parallel Threads”, 22 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,989, mailed on Apr. 4, 2023, Chauhan, “Test Conflict Guard for Parallel Software Testing”, 37 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,637, mailed on Jun. 15, 2022, Chauhan “Retrying Failed Test Cases in Software Testing Using Parallel Threads”, 18 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,535, mailed on Jun. 20, 2022, Chauhan, “Software Testing in Parallel Threads With a Record-Locking Database”, 6 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,739, mailed Aug. 4, 2022, Chauhan, “Software Testing in Parallel With Different Database Instances”, 12 pages. [cited by applicant]
Qusef, “Recovering test-to-code traceability using slicing and textual analysis”, Journal of Systems and Software 88 2014, pp. 147-168. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,894, mailed on Nov. 27, 2023, Shaktiraj Chauhan, “Parallel Software Testing Based on Annotations”, 21 pages. [cited by applicant]
Shrivathsan, et al., “Novel Fuzzy Clustering Methods for Test Case Prioritization in Software Projects.” Symmetry, vol. 11, No. 1400, 2019, 22 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,894, mailed on Aug. 1, 2023, Shaktiraj Chauhan, “Parallel Software Testing Based on Annotations”, 19 pages. [cited by applicant]
Office Action for U.S. Appl. No. 18/070,120, mailed on Jun. 16, 2023, Chauhan, “Software Testing in Parallel Threads With a Record-Locking Database”, 7 Pages. [cited by applicant]
Rauf, et al., “Ontology Driven Semantic Annotation Based GUI Testing”, 2010 6th International Conference on Emerging Technologies, IEEE, 2010, pp. 261-264. [cited by applicant]
Office Action for U.S. Appl. No. 18/482,772, mailed on May 22, 2024, Chauhan, “Test Conflict Guard for Parallel Software Testing”, 30 pages. [cited by applicant]
Office Action for U.S. Appl. No. 18/336,757, Dated Jun. 20, 2024, 28 pages. [cited by applicant]
Office Action for U.S. Appl. No. 18/482,772, dated Sep. 10, 2024, 32 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/333,894, Dated Jul. 26, 2024, 20 pages. [cited by applicant]
Willemsen, “Improving diagnosis by Grouping Test Cases to Reduce Complexity”, MS thesis, University of Twente,2018, 93 pgs. [cited by applicant]