Adaptive problem solving method and apparatus utilizing evolutionary computation techniques
First Claim
1. A method of operating a computer system to generate chromosomes for use in an evolutionary computation system that tests a software program, the method comprising:
- analyzing the software program to identify methods for objects in the software program;
determining parameters of application programming interfaces for the methods;
calling the application programming interfaces using the parameters; and
assembling the chromosomes from the application programming interfaces based on results from the application programming interface calls.
2 Assignments
0 Petitions
Accused Products
Abstract
A system for adaptively solving sequential problems in a target system utilizing evolutionary computation techniques and in particular genetic algorithms and modified genetic algorithms. Stimuli to a target system such as a software system are represented as actions. A single sequence of actions is a chromosome. Chromosomes are generated by a goal-seeking algorithm that uses a hint database and recursion to intelligently and efficiently generate a robust chromosome population. The chromosomes are applied to the target system one action at a time and the change in properties of the target system is measured after each action is applied. A fitness rating is calculated for each chromosome based on the property changes produced in the target system by the chromosome. The fitness rating calculation is defined so that successive generations of chromosomes will converge upon desired characteristics. For example, desired characteristics for a software testing application are defect discovery and code coverage. Chromosomes with high fitness ratings are selected as parent chromosomes and various techniques are used to mate the parent chromosomes to produce children chromosomes. Children chromosomes with high fitness ratings are entered into the chromosome population. Defects in a target software system are minimized by evolving ever-shorter chromosomes that produce the same defect. Defect discovery rate, or any other desired characteristic, is thereby maximized.
-
Citations
29 Claims
-
1. A method of operating a computer system to generate chromosomes for use in an evolutionary computation system that tests a software program, the method comprising:
-
analyzing the software program to identify methods for objects in the software program;
determining parameters of application programming interfaces for the methods;
calling the application programming interfaces using the parameters; and
assembling the chromosomes from the application programming interfaces based on results from the application programming interface calls. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
retrieving hint information from a hint database; and
recursively processing the hint information to identify values for use as the parameters.
-
-
6. The method of claim 1 further comprising:
- retrieving hint information from a hint database; and
identifying a sequence of the application programming interfaces to call based on the hint information.
- retrieving hint information from a hint database; and
-
7. The method of claim 1 further comprising:
-
retrieving hint information from a hint database; and
evaluating the results from the application programming interface calls based on the hint information.
-
-
8. The method of claim 7 wherein evaluating the results further comprises identifying defects and the software program based on hint information.
-
9. The method of claim 1 further comprising determining targets of application programming interfaces for the methods.
-
10. A method of operating computer system to test a software program, the method comprising:
-
inputting chromosomes to the software program;
receiving results from the software program based on the chromosomes; and
evolving the chromosomes using the results to minimize select chromosomes that cause defects in the software program. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A memory device storing computer-executable instructions, wherein the instructions are configured to direct a computer system to generate chromosomes for use in an evolutionary computation system that tests a software program, the product comprising:
-
population generation instructions operational when executed to direct the computer system to analyze the software program and determine methods for objects in the software program, to determine parameters of application programming interfaces for the methods, to call the application programming interfaces using the parameters, and to assemble the chromosomes from the application programming interfaces based on results from the application programming interface calls; and
a software storage medium operational to store the population generation instructions. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
-
24. An evolutionary computation system for testing a software program, the evolutionary computation system comprising:
-
a computer system;
instructions stored in the computer system that are operational when executed to direct the computer system to input chromosomes to the software program, to receive results from the software program based on the chromosomes, and to evolve the chromosomes using the results to minimize select chromosomes that cause defects in the software program, and wherein the computer system is operational to store and execute the instructions. - View Dependent Claims (25, 26, 27, 28, 29)
-
Specification