Title
Evolving Software Test Data - GA's learn Self Expression
Abstract
This paper examines the use of genetic algorithms (GAs) in generating sets of input data to use for software testing. The aim is to produce test sets which max- imise coverage of the software using a given metric, whilst minimising the size of the sets. Using the well known triangle program as an example, a representation is described which allows the GA to learn the number of test cases in a set. This is done by adding a set of flags to the encoding, which determine whether or not a gene is expressed (in this case, whether a test case is used as input to the pro- gram). A simple mechanism for biassing the search towards longer or shorter sets is described. A study is then made of the effect of changing chromosome lengths and initiali- sation procedures, and the relationship that this has to the quality and size of the test sets evolved, in order to assess the scalability of the evolutionary approach to "real-world" problems, and the factors that would need to be taken into con- sideration when designing systems for the automatic generation of test cases. Introduction The art of software testing is one that is beginning to enjoy an increasing status in the life-cycle of product development as commercial programs rapidly increase in size, complexity and hence vulnerability to errors. Of equal importance (especially given some of the more embarrassing bug disclosures of the last year) is the related task of verification of hardware i.e. testing against a software model to ensure that it performs correctly. A common approach to both problems is the creation of a set of test cases, with the aim of satisfying some coverage metric. In the case of software, two typical metrics considered are Statement Coverage (the percentage of statements in the code executed during execution of the tests) and Branch coverage (the percent- age of possible branches through the code taken). Similarly one approach to hardware verification is to create a set of cases which achieve coverage of the software model of the microprocessor and then use these to test the hardware by ensuring that the output remains consistent with that of the simulator. However, although hand-crafting of tests may be feasible for small software problems, and tools exist to aid the creation of tests that satisfy a set of constraints for hardware e.g (Chandra et al. 1995), the sheer complexity of many programs and (almost all) microprocessors mean that this approach becomes infeasible. A second approach is the application of brute force - i.e. the use of large numbers (often millions for verification) of randomly generated tests with the hope of achieving coverage. However this is far from efficient and does not guarantee coverage. An automatic method of generating sets of test data would therefore be highly desirable. The nature
Year
DOI
Venue
1996
10.1007/BFb0032779
Evolutionary Computing, AISB Workshop
Keywords
Field
DocType
evolving software test data,self expression,genetic algorithm,life cycle,software testing,satisfiability,product development
Computer science,Software,Software reliability testing,Test data,Artificial intelligence,Software development process,Software verification and validation,Software construction,Machine learning,Software development,Software verification
Conference
ISBN
Citations 
PageRank 
3-540-61749-3
4
0.45
References 
Authors
10
2
Name
Order
Citations
PageRank
Jim Smith113520.92
T C Fogarty21147152.53