IP Library › Granted Patent US 12,298,893
Granted Patent B2
US 12,298,893 · App. 18/482,772 · Granted May 13, 2025

Test conflict guard for parallel software testing

Inventors: Shaktiraj Chauhan (Normal, IL); Nate Shepherd (Bloomington, IL)
Assignee: State Farm Mutual Automobile Insurance Company
G06F11/3688G06F8/44G06F8/70G06F11/3684
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,298,893
App. No.
18/482,772
Granted
May 13, 2025
Kind
B2
Abstract

In association with unit and integration testing of a software application, a test conflict guard can detect whether test cases are independent and use distinct database data, or are related or dependent test cases that use the same database data. The test conflict guard can detect any related or dependent test cases in a group of test cases, which may cause testing errors if executed in different parallel threads. The test conflict guard can accordingly block test execution until the group of test cases are verified as independent test cases.

Claims (83)

1. A computer-implemented method, comprising:

blocking, by one or more processors, and via a test conflict guard associated with a programming tool that is used to prepare source code of a plurality of test cases, initiation of testing of a software application using the plurality of test cases, based on:

identification of a conflict, between at least two test cases of the plurality of test cases, via a first analysis of the source code performed, by the test conflict guard, without executing the plurality of test cases,

wherein the blocking comprises causing the programming tool to at least one of:

prevent the source code of a draft test case, of the at least two test cases, from being saved or from being merged into a main code branch, or

display a warning message identifying the conflict;

unblocking, by the one or more processors, and via the test conflict guard, the initiation of the testing, based on:

a determination that at least one edit to the source code, via the programming tool, has resolved the conflict,

wherein the determination that the at least one edit to the source code has resolved the conflict is made via a second analysis of the source code performed, by the test conflict guard, without executing the plurality of test cases; and

initiating, by the one or more processors, and based on the unblocking, the testing by executing a plurality of test sets in parallel, the plurality of test sets comprising test cases distributed from among the plurality of test cases.

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

the first analysis of the source code is performed at a first time,

the at least one edit to the source code is made after the first time, and

the second analysis of the source code is performed at a second time following the at least one edit to the source code.

3. The computer-implemented method of claim 1 , wherein the conflict between the at least two test cases is based on the source code being configured to cause the at least two test cases to access at least one of:

a same global variable,

a same database table,

a same database record, or

a same attribute of a database record.

4. The computer-implemented method of claim 3 , wherein the second analysis of the source code determines that the at least one edit to the source code reconfigured the at least two test cases to no longer access the at least one of the same global variable, the same database table, the same database record, or the same attribute of the database record.

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

the blocking of the initiation of the testing comprises preventing distribution of the test cases, from among the plurality of test cases, to the plurality of test sets to be executed in parallel, and

the unblocking of the initiation of the testing comprises enabling the distribution of the test cases to the plurality of test sets.

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

the source code of the draft test case is prepared via the programming tool,

the blocking of the initiation of the testing comprises preventing the programming tool from saving the source code of the draft test case, and

the unblocking of the initiation of the testing comprises allowing the programming tool to save the source code of the draft test case.

7. The computer-implemented method of claim 1 , wherein the warning message identifies one or more portions of the source code that are associated with the conflict between the at least two test cases.

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

the source code is checked out from the main code branch,

the blocking of the initiation of the testing comprises preventing merge operations to merge changes made to the source code into the main code branch, and

the unblocking of the initiation of the testing comprises allowing the merge operations.

9. The computer-implemented method of claim 8 , wherein the blocking of the initiation of the testing comprises:

preventing the merge operations to prevent main branch testing, and

allowing local testing that is not associated with the main code branch.

10. 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 rather than being executed in parallel.

11. The computer-implemented method of claim 1 , wherein the plurality of test sets comprises test cases distributed, from among the plurality of test cases, based at least in part on predicting execution times of different test sets of the plurality of test sets.

12. A computing system, comprising:

one or more processors; and

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

identifying, via a first analysis of source code associated with a plurality of test cases, a conflict between at least two test cases of the plurality of test cases, the first analysis being performed by a test conflict guard associated with a programming tool that is used to prepare the source code and without executing the plurality of test cases;

blocking, via the test conflict guard and based on identification of the conflict, initiation of testing of a software application using the plurality of test cases, wherein the blocking causes the programming tool to at least one of:

prevent the source code of a draft test case, of the at least two test cases, from being saved or from being merged into a main code branch, or

display a warning message identifying the conflict;

determining, via a second analysis of the source code performed by the test conflict guard without executing the plurality of test cases, that at least one edit to the source code via the programming tool has resolved the conflict;

unblocking, via the test conflict guard and based on determining that the at least one edit to the source code has resolved the conflict, the initiation of the testing; and

initiating, based on the unblocking, the testing by executing a plurality of test sets in parallel, wherein the plurality of test sets comprises test cases distributed from among the plurality of test cases.

13. The computing system of claim 12 , wherein:

the blocking of the initiation of the testing comprises preventing distribution of the test cases, from among the plurality of test cases, to the plurality of test sets to be executed in parallel, and

the unblocking of the initiation of the testing comprises enabling the distribution of the test cases to the plurality of test sets.

14. The computing system of claim 12 , wherein:

the source code of the draft test case is prepared via the programming tool,

the blocking of the initiation of the testing comprises preventing the programming tool from saving the source code of the draft test case, and

the unblocking of the initiation of the testing comprises allowing the programming tool to save the source code of the draft test case.

15. The computing system of claim 12 , wherein the warning message identifies one or more portions of the source code that are associated with the conflict between the at least two test cases.

16. A software testing system, comprising:

a test manager configured, based on computer-executable instructions, to:

distribute a plurality of test cases, configured to test a software application, among a plurality of test sets; and

execute the plurality of test sets in parallel; and

a test conflict guard associated with a programming tool that is used to prepare source code of the plurality of test cases, wherein the test conflict guard is configured, based on the computer-executable instructions, to:

block the test manager from initiating testing of the software application, using the plurality of test cases, based on identifying, via a first analysis of the source code performed by the test conflict guard without executing the plurality of test cases, a conflict between at least two test cases of the plurality of test cases,

wherein the test conflict blocks the test manager from initiating the testing by causing the programming tool to at least one of:

prevent the source code of a draft test case, of the at least two test cases, from being saved or from being merged into a main code branch, or

display a warning message identifying the conflict; and

unblock the test manager from initiating the testing based on determining, via a second analysis of the source code performed by the test conflict guard without executing the plurality of test cases, that at least one edit to the source code via the programming tool has resolved the conflict.

17. The software testing system of claim 16 , wherein the warning message identifies one or more portions of the source code that are associated with the conflict between the at least two test cases.

18. The software testing system of claim 16 , wherein the test conflict guard:

blocks the test manager from initiating the testing by preventing the programming tool from saving the source code of the draft test case, and

unblocks the test manager from initiating the testing by allowing the programming tool to save the source code of the draft test case.

19. The software testing system of claim 16 , wherein the test conflict guard blocks the test manager from initiating the testing by preventing the test manager from performing at least one of:

distributing the plurality of test cases among the plurality of test sets, or

executing the plurality of test sets.

20. A system comprising:

means for blocking initiation of testing of a software application, using a plurality of test cases, based on:

identification of a conflict between at least two test cases of the plurality of test cases,

wherein the conflict is identified by a test conflict guard, associated with a programming tool that is used to prepare source code of the plurality of test cases, via a first analysis of the source code performed by the test conflict guard without executing the plurality of test cases, and

wherein the initiation of the testing is blocked by causing the programming tool to at least one of:

prevent the source code of a draft test case, of the at least two test cases, from being saved or from being merged into a main code branch, or

display a warning message identifying the conflict;

means for unblocking the initiation of the testing based on:

a determination that at least one edit to the source code, via the programming tool, has resolved the conflict,

wherein the determination that the at least one edit to the source code has resolved the conflict is made via a second analysis of the source code performed by the test conflict guard without executing the plurality of test cases; and

means for initiating, based on the unblocking, the testing by executing a plurality of test sets in parallel, the plurality of test sets comprising test cases distributed from among the plurality of test cases.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2023
From: CHAUHAN, SHAKTIRAJ; SHEPHERD, NATE
To: STATE FARM MUTUAL AUTOMOBILE INSURANCE COMPANY
Reel/Frame 065153/0499 →
Continuity (3)
Continuation 17333989 · May 28, 2021
Provisional Application 63152781 · Feb 23, 2021
Related Publication 20240045792A1 · Feb 8, 2024
References Cited (81)
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 et al. · 2015 [cited by applicant]
US 10067858B2 · McDonald · 2018 [cited by applicant]
US 10387295B1 · Kesarwani · 2019 [cited by applicant]
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 et al. · 2022 [cited by applicant]
US 11537616B1 · Lin et al. · 2022 [cited by applicant]
US 20020116507A1 · Manjure et al. · 2002 [cited by applicant]
US 20030208351A1 · Hartman et al. · 2003 [cited by applicant]
US 20050120276A1 · Kolawa et al. · 2005 [cited by applicant]
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 20090144706A1 · Pastorelli · 2009 [cited by applicant]
US 20090187366A1 · Day · 2009 [cited by examiner]
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 et al. · 2011 [cited by applicant]
US 20110246540A1 · Salman et al. · 2011 [cited by applicant]
US 20120023373A1 · Chen · 2012 [cited by applicant]
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 · 2016 [cited by examiner]
US 20160162392A1 · Hu et al. · 2016 [cited by applicant]
US 20160246575A1 · Baluch · 2016 [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 · 2018 [cited by examiner]
US 20180173606A1 · Malla et al. · 2018 [cited by applicant]
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 · 2020 [cited by examiner]
US 20200174907A1 · Lundquist et al. · 2020 [cited by applicant]
US 20200210170A1 · Johnson · 2020 [cited by examiner]
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 · 2021 [cited by examiner]
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]
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,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. 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. 18/070,120, mailed on Jun. 16, 2023, Chauhan, “Software Testing in Parallel Threads With a Record-Locking Database”, 7 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]
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. 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. 18/336,757, Dated Jun. 20, 2024, 28 pages. [cited by applicant]
Office Action for U.S. Appl. No. 18/334,786, Dated Jul. 16, 2024, 6 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]
Office Action for U.S. Appl. No. 18/334,786, mailed on Dec. 16, 2024, Chauhan, “Software Testing in Parallel With Different Database Instances”, 12 pages. [cited by applicant]