# US 6,298,317 B1 · Enhanced functional testing through the filtration of non-subtle mutations

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 6,298,317 B1
- Document ID: US6298317B1
- Status: Granted
- Kind: B1
- Application number: 09/237,286
- Filed: 1999-01-25
- Granted: 2001-10-02
- Earliest claimed: 1999-01-25
- Assignees: Hewlett-Packard Company
- Inventors: Alan Wiemann
- Web page: https://patentgrep.com/patent/US6298317B1

## CPC

- G06F 11/3688: {for test execution, e.g. scheduling of test suites}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A function simulates and verifies a computer program by inserting a syntactic mutation into one of the source code modules comprising the program. The mutated computer program is compiled and subjected to a subtlety check which detects non-subtle (i.e., easily detectable) syntactic mutations. If the subtlety check identifies the inserted syntactic mutation as non-subtle, functional testing on this mutated computer program is terminated, and a new mutated computer program is generated. However, if the subtlety check determines that the syntactic mutation is subtle, the mutated computer program is subjected to additional regression testing. If the regression testing is able to detect the subtle syntactic mutation within a predetermined simulation period, functional testing is terminated and a new mutated computer program is generated. However, if the subtle syntactic mutation is not detected within the predetermined simulation period, a functional coverage deficiency in the functional verification test suite is noted, and the regression test suite is enhanced accordingly.

## Claims

### Claim 1

A functional testing system for functionally simulating and verifying a computer program, the system comprising:
a mutation generator for generating a series of mutated computer programs, wherein each mutated computer program has a syntactic mutation;
a first functional simulator for serially processing each mutated computer program, wherein the first functional simulator identifies whether the syntactic mutation in each mutated computer program is a non-subtle syntactic mutation and terminates the functional simulation of each mutated computer program having an identified non-subtle syntactic mutation, and wherein each syntactic mutation not identified as a non-subtle mutation is identified as a subtle mutation; and
a second functional simulator for serially processing each mutated computer program having a subtle syntactic mutation, wherein the second functional simulator terminates the functional simulation of each mutated computer program if it detects the subtle syntactic mutation within a predetermined simulation period, and wherein the second functional simulator provides an indication that the subtle syntactic mutation was not detected if it does not detect the subtle syntactic mutation within the predetermined simulation period.

### Claim 2 (depends on 1)

The functional testing system of claim 1, wherein the computer program comprises a plurality of source code modules.

### Claim 3 (depends on 2)

The functional testing system of claim 2, wherein the plurality of source code modules are functional models of an integrated circuit.

### Claim 4 (depends on 2)

The functional testing system of claim 2, wherein the mutation generator identifies a set of eligible source code modules from the plurality of source code modules, and wherein the set of eligible source code modules are candidates for insertion of a syntactic mutation.

### Claim 5 (depends on 4)

The functional testing system of claim 4, wherein a member of the set of eligible source code modules is selected randomly, and a syntactic mutation is inserted within the member of the set of eligible source code modules.

### Claim 6 (depends on 4)

The functional testing system of claim 4, wherein the selection of the member of the set of eligible source code modules occurs according to a given distribution scheme.

### Claim 7 (depends on 1)

The functional testing system of claim 1, wherein the mutation generator randomly selects a syntactic mutation from a predefined set of syntactic mutation types.

### Claim 8 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes a logical negation error.

### Claim 9 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes a logical term omission.

### Claim 10 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes a logical factor omission.

### Claim 11 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes an incorrect logical term.

### Claim 12 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes an incorrect logical factor.

### Claim 13 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes an incorrect numerical value.

### Claim 14 (depends on 7)

The functional testing system of claim 7, wherein the predefined set of syntactic mutation types includes a case omission.

### Claim 15 (depends on 1)

The functional testing system of claim 1, wherein the mutation generator selects a syntactic mutation from a predefined set of syntactic mutation types according to a distribution scheme, wherein the distribution scheme reflects actual operating conditions of the computer program.

### Claim 16 (depends on 1)

The functional testing system of claim 1, wherein upon completion of the functional simulation, the functional testing system provides a user with a statistically derived probability that undetected actual mutations still reside within the computer program.

### Claim 17

A method for functionally simulating and verifying the correctness of a computer program, the method comprising the steps of:
a) generating a mutated computer program, wherein the mutated computer program includes a syntactic mutation;
b) pre-processing the mutated computer program to identify the syntactic mutation within the mutated computer program as either a subtle or non-subtle syntactic mutation;
c) if the mutated computer program has a non-subtle syntactic mutation, terminating the functional simulation of the mutated computer program, then returning to step (a) to generate another mutated computer program;
d) simulating the mutated computer program having the subtle syntactic mutation to attempt to detect the subtle syntactic mutation within the mutated computer program within a predetermined simulation period;
e) if the subtle syntactic mutation is detected within a predetermined simulation period, terminating the functional simulation of the mutated computer program and returning to step (a) to generate another mutated computer program; and
f) if the subtle syntactic mutation is not detected within a predetermined simulation period, indicating that the subtle syntactic mutation was not detected.

### Claim 18 (depends on 17)

The method of claim 17, wherein the computer program comprises a plurality of source code modules.

### Claim 19 (depends on 18)

The method of claim 18, wherein the plurality of source code modules are functional models of an integrated circuit.

### Claim 20 (depends on 18)

The method of claim 18, wherein the mutation generator identifies a set of eligible source code modules from the plurality of source code modules, and wherein the set of eligible source code modules are candidates for insertion of a syntactic mutation.

### Claim 21 (depends on 20)

The method of claim 20, wherein a member of the set of eligible source code modules is selected randomly, and a syntactic mutation is inserted within the member of the set of eligible source code modules.

### Claim 22 (depends on 20)

The method of claim 20, wherein the selection of the member of the set of eligible source code modules occurs according to a given distribution scheme, wherein the distribution scheme reflects actual operating conditions of the computer program.

### Claim 23 (depends on 17)

The method of claim 17, wherein the mutation generator randomly selects a syntactic mutation from a predefined set of syntactic mutation types.

### Claim 24 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes a logical negation error.

### Claim 25 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes a logical term omission.

### Claim 26 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes a logical factor omission.

### Claim 27 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes an incorrect logical term.

### Claim 28 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes an incorrect logical factor.

### Claim 29 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes an incorrect numerical value.

### Claim 30 (depends on 23)

The method of claim 23, wherein the predefined set of syntactic mutation types includes a case omission.

### Claim 31 (depends on 17)

The method of claim 17, wherein the mutation generator selects a syntactic mutation from a predefined set of syntactic mutation types according to a distribution scheme, wherein the distribution scheme reflects actual operating conditions of the computer program.

### Claim 32 (depends on 17)

The method of claim 17, wherein upon completion of the functional simulation, the functional testing system provides a user with a statistically derived probability that undetected actual mutations still reside within the computer program.

### Claim 33

A computer readable medium containing instructions for controlling a computer system to perform a method comprising the steps of:
a) generating a mutated computer program, wherein the mutated computer program includes a syntactic mutation;
b) pre-processing the mutated computer program to identify the syntactic mutation within the mutated computer program as either a subtle or non-subtle syntactic mutation;
c) if the mutated computer program has a non-subtle syntactic mutation, terminating the functional simulation of the mutated computer program, then returning to step (a) to generate another mutated computer program;
d) simulating the mutated computer program having the subtle syntactic mutation to attempt to detect the subtle syntactic mutation within the mutated computer program within a predetermined simulation period;
e) if the subtle syntactic mutation is detected within a predetermined simulation period, terminating the functional simulation of the mutated computer program and returning to step (a) to generate another mutated computer program; and
f) if the subtle syntactic mutation is not detected within a predetermined simulation period, indicating that the subtle syntactic mutation was not detected.
