IP Library Granted Patent US 11,720,483
Granted Patent B2
US 11,720,483 · App. 17/558,279 · Granted Aug 8, 2023

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 11,720,483
App. No.
17/558,279
Granted
Aug 8, 2023
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 (33)

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 target source code including the class file containing the mutation to non-volatile storage 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 of the target source code, 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. 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 target source code including the class file containing the mutation to non-volatile storage 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 of the target source code, 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.

8. The computing host of claim 7 , 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.

9. The computing host of claim 7 , 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.

10. The computing host of claim 7 , 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.

11. The computing host of claim 7 , 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.

12. The computing host of claim 7 , wherein the computer-executable submodules 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.

13. A 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 target source code including the class file containing the mutation to non-volatile storage 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 of the target source code, 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.

14. The computer-readable storage medium of claim 13 , wherein mutating the part of the class file comprises mutating a line of code of the class file.

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

16. The computer-readable storage medium of claim 13 , 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.

17. The computer-readable storage medium of claim 13 , wherein the operations further comprise executing, 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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 29, 2021
From: PEARSON, ANDREW L; SHEPHERD, NATE
To: STATE FARM MUTUAL AUTOMOBILE INSURANCE COMPANY
Reel/Frame 058498/0326 →
Continuity (2)
Continuation 17225027 · Apr 7, 2021
Related Publication 20220327045A1 · Oct 13, 2022
Cited By (1)
US 12,386,594