IP Library Granted Patent US 12,430,235
Granted Patent B2
US 12,430,235 · App. 18/337,106 · Granted Sep 30, 2025

Runtime class recompilation during mutation testing

Inventors: Andrew L Pearson (Normal, IL); Nate Shepherd (Bloomington, IL)
Assignee: State Farm Mutual Automobile Insurance Company
G06F11/3688G06F8/315G06F8/447
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,430,235
App. No.
18/337,106
Granted
Sep 30, 2025
Kind
B2
Abstract

In mutation testing, source code is mutated at various positions, and test suites are run against the original object code and each version of the mutated object code, to determine the quality of test suites against arbitrary changes in the object code. The present disclosure provides a mutation test manager configured to initialize multiple computing threads configuring a computing host to perform parallel computation; mutate class files within context of each computing thread; recompile mutated class files independently in each respective computing thread to generate heterogeneous mutants; and execute pending unit tests against heterogeneous mutants independently in each respective computing thread. Consequently, the mutation testing process is decoupled from computational bottlenecks which would result from linear, sequential generation, compilation, and testing of each mutation, especially in the context of JVM® programming languages configured to generate class-rich object code.

Claims (36)

1. A method, comprising:

mutating, by a processor running a computing thread among a plurality of computing threads each executing target object code in a target runtime environment, part of a class file to generate a mutation in the class file, wherein the class file is one of a plurality of class files of target source code;

writing, by the processor, the class file containing the mutation to a computer-readable storage medium before configuring a compiler to compile the class file containing the mutation;

causing, by the processor, the compiler executing in the computing thread to compile the class file containing the mutation without compiling other class files of the plurality of class files, wherein compiling the class file results in generation of a mutant class object code by the processor; and

replacing, by the processor, a non-mutant object class code portion of a plurality of non-mutant object class code portions of the executing target object code with the mutant class object code.

2. The method of claim 1 , wherein mutating the part of the class file comprises mutating a line of code of the class file.

3. The method of claim 1 , wherein mutating the part of the class file is performed in accordance with one of a plurality of mutation patterns of a mutation configuration.

4. The method of claim 1 , wherein the part of the class file or a different class file of the target source code is being mutated concurrently, by the processor or by a different processor, in at least one other computing thread of the plurality of computing threads.

5. The method of claim 1 , wherein the compiler is configured by the processor executing a compiler script including a parameterized call to the compiler.

6. The method of claim 1 , further comprising executing, by the processor in the computing thread, pending unit tests among a test suite against the executing target object code after replacing the non-mutant object class code portion.

7. The method of claim 1 , further comprising configuring, by the processor, the compiler to run a test class tear down method before a unit test is executed.

8. A computing host comprising:

one or more processors; and

memory communicatively coupled to the one or more processors, the memory storing computer-executable modules executable by the one or more processors that, when executed by the one or more processors, perform associated operations, the computer-executable modules comprising:

a compiler module; and

a mutation test managing module further comprising:

a class file mutating submodule configured to mutate, in a computing thread among a plurality of computing threads each executing target object code in a target runtime environment, part of a class file to generate a mutation in the class file, wherein the class file is one of a plurality of class files of target source code;

a class file read/write submodule configured to write the class file containing the mutation to a computer-readable storage medium before a compiler configuring submodule configures the compiler module to compile the class file containing the mutation;

the compiler configuring submodule configured to configure the compiler module executing in the computing thread to compile the class file containing the mutation without compiling other class files of the plurality of class files, wherein compiling the class file results in generation of a mutant class object code by the compiler module; and

a class loading submodule configured to replace a non-mutant object class code portion of a plurality of non-mutant object class code portions of the executing target object code with the mutant class object code.

9. The computing host of claim 8 , wherein the class file mutating submodule is configured to mutate the part of the class file by mutating a line of code of the class file.

10. The computing host of claim 8 , wherein the class file mutating submodule is configured to mutate the part of the class file in accordance with one of a plurality of mutation patterns of a mutation configuration.

11. The computing host of claim 8 , wherein the class file mutating submodule is configured to mutate the part of the class file or a different class file of the target source code concurrently among the plurality of computing threads.

12. The computing host of claim 8 , wherein the compiler configuring submodule is configured to configure the compiler module by executing a compiler script including a parameterized call to the compiler module.

13. The computing host of claim 8 , wherein the computer-executable modules further comprise a test executing submodule configured to execute, in the computing thread, pending unit tests among a test suite against the executing target object code after the class loading submodule replaces the non-mutant object class code portion.

14. The computing host of claim 8 , wherein the compiler configuring submodule is further configured to configure the compiler to run a test class tear down method before a unit test is executed.

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

mutating, in a computing thread among a plurality of computing threads each executing target object code in a target runtime environment, part of a class file to generate a mutation in the class file, wherein the class file is one of a plurality of class files of target source code;

writing, by the processor, the class file containing the mutation to the computer-readable storage medium before configuring a compiler to compile the class file containing the mutation;

configuring the compiler executing in the computing thread to compile the class file containing the mutation without compiling other class files of the plurality of class files, wherein compiling the class file results in generation of a mutant class object code by the one or more processors; and

replacing a non-mutant object class code portion of a plurality of non-mutant object class code portions of the executing target object code with the mutant class object code.

16. The non-transitory computer-readable storage medium of claim 15 , wherein mutating the part of the class file comprises mutating a line of code of the class file.

17. The non-transitory computer-readable storage medium of claim 15 , wherein mutating the part of the class file is performed in accordance with one of a plurality of mutation patterns of a mutation configuration.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise mutating the part of the class file or a different class file of the target source code concurrently in at least one other computing thread of the plurality of computing threads.

19. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise executing, in the computing thread, one or more pending unit tests among a test suite against the executing target object code after replacing the non-mutant object class code portion.

20. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise configuring the compiler to run a test class tear down method before a unit test is executed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2024
From: PEARSON, ANDREW L; SHEPHERD, NATE
To: STATE FARM MUTUAL AUTOMOBILE INSURANCE COMPANY
Reel/Frame 066636/0360 →
Continuity (3)
Continuation 17558279 · Dec 21, 2021
Continuation 17225027 · Apr 7, 2021
Related Publication 20230333974A1 · Oct 19, 2023
References Cited (63)
US 6101580A · Agesen · 2000 [cited by applicant]
US 6298317B1 · Wiemann · 2001 [cited by applicant]
US 6324639B1 · Heishi et al. · 2001 [cited by applicant]
US 7089272B1 · Garthwaite et al. · 2006 [cited by applicant]
US 9430194B1 · Childs et al. · 2016 [cited by applicant]
US 10007515B2 · Subramanian et al. · 2018 [cited by applicant]
US 10387295B1 · Kesarwani · 2019 [cited by applicant]
US 10949172B1 · Jain et al. · 2021 [cited by applicant]
US 11593675B1 · Garg · 2023 [cited by examiner]
US 20030025722A1 · Cliff et al. · 2003 [cited by applicant]
US 20030233614A1 · Mohamed · 2003 [cited by applicant]
US 20050166094A1 · Blackwell et al. · 2005 [cited by applicant]
US 20050188364A1 · Cockx et al. · 2005 [cited by applicant]
US 20050240737A1 · Holt · 2005 [cited by applicant]
US 20080109641A1 · Ball et al. · 2008 [cited by applicant]
US 20080307006A1 · Lee et al. · 2008 [cited by applicant]
US 20090307500A1 · Sato et al. · 2009 [cited by applicant]
US 20100146490A1 · Grosse et al. · 2010 [cited by applicant]
US 20100241827A1 · Yu et al. · 2010 [cited by applicant]
US 20140157232A1 · Li · 2014 [cited by applicant]
US 20150095894A1 · Tripp · 2015 [cited by applicant]
US 20150100951A1 · Raundahl Gregersen · 2015 [cited by applicant]
US 20150309914A1 · Eddington et al. · 2015 [cited by applicant]
US 20150363175A1 · Klausner · 2015 [cited by applicant]
US 20160048444A1 · Crova et al. · 2016 [cited by applicant]
US 20160216962A1 · Wang et al. · 2016 [cited by applicant]
US 20170012819A1 · Raheja et al. · 2017 [cited by applicant]
US 20170068612A1 · Herzig et al. · 2017 [cited by applicant]
US 20180074936A1 · Broadbent et al. · 2018 [cited by applicant]
US 20180095869A1 · Peer et al. · 2018 [cited by applicant]
US 20180232300A1 · Cmielowski et al. · 2018 [cited by applicant]
US 20180321918A1 · McClory et al. · 2018 [cited by applicant]
US 20180365139A1 · Rajpal · 2018 [cited by applicant]
US 20190138433A1 · Krishnan · 2019 [cited by examiner]
US 20190227786A1 · Price et al. · 2019 [cited by applicant]
US 20200042882A1 · Liu et al. · 2020 [cited by applicant]
US 20200073790A1 · Abhishek · 2020 [cited by applicant]
US 20210096831A1 · Satyarth · 2021 [cited by applicant]
US 20210141714A1 · Lees et al. · 2021 [cited by applicant]
US 20220327043A1 · Pearson · 2022 [cited by applicant]
US 20220327045A1 · Pearson · 2022 [cited by applicant]
US 20230418733A1 · Pearson · 2023 [cited by applicant]
Ma, Yu-Seung, Jeff Offutt, and Yong Rae Kwon. “MuJava: an automated class mutation system.” Software Testing, Verification and Reliability 15.2 (2005): 97-133. (Year: 2005). [cited by examiner]
Auerbach et al., “Lime: a Java-Compatable and Synthesizable Language for Heterogeneous Architectures”, IBM Research, 2010, pp. 89-108. [cited by applicant]
Elizono, et al., “Recent Patents of Computational Intelligence”, Centre of Computational Intelligence, School of Computing, De Monfort University, 11 pgs. [cited by applicant]
Gligoric, et al., “Selective Mutation Testing for Concurrent Code”, ISSTA, Jul. 2013, pp. 224-234. [cited by applicant]
Irvine, et al., “Jumble Java Byte Code to Measure the Effectiveness of Test Units”, Testing: Academic and Industrial Conference—Practice and Research Techniques, Mar. 2007, pp. 169-175. [cited by applicant]
Kim, “Class Mutation: Mutation Testing for Object-Oriented Programs”, 2000, 15 pgs. [cited by applicant]
Kim, et al., “Invasive Software Testing: Mutating Target Programs to Diversify Test Exploration for High Test Coverage”, IEEE, 2018, pp. 239-249. [cited by applicant]
Lochab, “Analysis of Mutation Tools in Aspect Orieted Software Engineering”, 2013, 10 pgs. [cited by applicant]
Office Action for U.S. Appl. No. 17/224,873, mailed on Jun. 16, 2021, Pearson, “Mutation Testing in Parallel Threads”, 23 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/224,904, mailed on Jun. 25, 2021, Pearson, “Mutation Testing Within Continuous Integration Systems”, 23 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/224,904, mailed Jan. 25, 2022, Pearson, “Mutation Testing Within Continuous Integration Systems”, 30 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/486,682, mailed on Oct. 21, 2022Pearson, “Mutation Testing in Parallel Threads”, 27 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/558,279, mailed on Oct. 25, 2022, Pearson, “Runtime Class Recompilation During Mutation Testing”, 18 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/486,682, mailed on Feb. 17, 2023, Pearson, “Mutation Testing in Parallel Threads”, 31 Pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/224,904, mailed on May 26, 2022, Pearson, “Mutation Testing Within Continuous Integration Systems”, 32 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/225,027, mailed on Jun. 14, 2021, Pearson, “Runtime Class Recompilation During Mutation Testing” 18 pages. [cited by applicant]
Office Action for U.S. Appl. No. 17/224,904, mailed on Sep. 7, 2021, Pearson, “Mutation Testing Within Continuous Integration Systems”, 26 pages. [cited by applicant]
Park, et al., “Fuzzing JavaScript Engines with Aspect-preserving Mutation” 2020 IEEE Symposium on Security and Privacy, 2020, pp. 1628-1642. [cited by applicant]
Phothilimthan, et al., “Portable Performance on Heterogeneous Architectures”, 2013, 13 pgs. [cited by applicant]
Tufano et al., Learning How to Mutate Source Code from Bug-Fixes, IEEE Internation Conference on Software Maintenance and Evolution, 2019, 12 pages. [cited by applicant]
Office Action for US Patent Application, U.S. Appl. No. 17/225,027, mailed on Jun. 14, 2021, Pearson, “Runtime Class Recompilation During Mutation Testing” 18 pages. [cited by applicant]