Database record locking for test parallelization
US-2020349062-A1 · Nov 5, 2020 · US
US11537508B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-11537508-B1 |
| Application number | US-202117333535-A |
| Country | US |
| Kind code | B1 |
| Filing date | May 28, 2021 |
| Priority date | Feb 23, 2021 |
| Publication date | Dec 27, 2022 |
| Grant date | Dec 27, 2022 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
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.
Opening claim text (preview).
What is claimed is: 1. A computer-implemented method, comprising: instantiating, by one or more processors of a computing device, a record-locking database associated with a software application; identifying, by the one or more processors, a plurality of test cases associated with the software application; distributing, by the one or more processors, individual test cases of the plurality of test cases among a plurality of test sets, wherein different test sets of the plurality of test sets are configured to execute simultaneously in different parallel threads on the computing device; locking, by the one or more processors, a first record in the record-locking database based on an access attempt by a first test case executing via a first parallel thread; and granting, by the one or more processors, a second test case access to a second record in the record-locking database while the first record is locked, wherein the second test case executes, via a second parallel thread, substantially simultaneously with the first test case executing via the first parallel thread. 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, and the one or more methods are functions written in a programming language. 3. The computer-implemented method of claim 2 , wherein the distributing is performed at a class level. 4. The computer-implemented method of claim 2 , wherein the distributing is performed at a method level. 5. The computer-implemented method of claim 1 , further comprising: detecting, by the one or more processors, an attempt by a third test case to access the first record while the first record is locked, wherein the third test case executes, via a third parallel thread, substantially simultaneously with the first test case executing via the first parallel thread; determining, by the one or more processors, that the first record is unlocked following the access attempt by the first test case; and retrying, by the one or more processors, execution of the third test case based on determining that the first record is unlocked. 6. The computer-implemented method of claim 1 , wherein the record-locking database is an in-memory database. 7. The computer-implemented method of claim 1 , further comprising: generating, by the one or more processors, a local build of the software application based on code changes submitted locally, wherein the instantiating, the identifying, the distributing, the locking, and the granting are performed as part of a test process for the local build. 8. The computer-implemented method of claim 1 , further comprising: generating, by the one or more processors, a merge build of the software application based on code changes submitted locally and based on a master code branch associated with the software application, wherein the instantiating, the identifying, the distributing, the locking, and the granting are performed as part of a test process for the merge build. 9. The computer-implemented method of claim 1 , further comprising: collecting, by the one or more processors, a plurality of test results associated with the plurality of test sets configured to execute simultaneously in the different parallel threads; and generating, by the one or more processors, an aggregated test result report by combining the plurality of test results. 10. 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: instantiating a record-locking database associated with a software application; identifying a plurality of test cases associated with the software application; distributing individual test cases of the plurality of test cases among a plurality of test sets, wherein the plurality of test sets corresponds to a plurality of parallel threads; and simultaneously executing the plurality of test sets via the plurality of parallel threads, wherein the record-locking database permits different test cases of the plurality of test cases, executing via different parallel threads of the plurality of parallel threads, to simultaneously access different records in the record-locking database. 11. The computing device of claim 10 , wherein the plurality of test cases comprises a set of classes, and individual classes of the set of classes comprise one or more methods. 12. The computing device of claim 11 , wherein the distributing is performed at a class level. 13. The computing device of claim 11 , wherein the distributing is performed at a method level. 14. The computing device of claim 10 , wherein the record-locking database is an in-memory database. 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: instantiating a record-locking database associated with a software application; identifying a plurality of test cases associated with the software application; distributing individual test cases of the plurality of test cases among a plurality of test sets, wherein different test sets of the plurality of test sets are configured to execute simultaneously in different parallel threads; locking a first record in the record-locking database based on an access attempt by a first test case executing via a first parallel thread; and granting a second test case access to a second record in the record-locking database while the first record is locked, wherein the second test case executes, via a second parallel thread, substantially simultaneously with the first test case executing via the first parallel thread. 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 or a method level. 17. The one or more non-transitory computer-readable media of claim 15 , wherein the operations further comprise: detecting an attempt by a third test case to access the first record while the first record is locked, wherein the third test case executes, via a third parallel thread, substantially simultaneously with the first test case executing via the first parallel thread; determining that the first record is unlocked following the 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 record-locking database is an in-memory database. 19. The one or more non-transitory computer-readable media of claim 15 , wherein the operations further comprise: generating a new build of the software application based at least in part on code changes, wherein the instantiating, the identifying, the distributing, the locking, and the granting are performed as part of a test process for the new build. 20. The one or more non-transitory computer-readable media of claim 15 , wherein the operations further comprise: collecting a plurality of test results associated with the plurality of test sets configured to execute simultaneously in the different parallel t
for test results analysis · CPC title
Locking methods, e.g. distributed locking or locking implementation details · CPC title
Encoding · CPC title
for test design, e.g. generating new test cases · CPC title
for test execution, e.g. scheduling of test suites · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.