Encoding the certainty of boolean variables to improve the guidance for search-based test generation
Autor: | Gordon Fraser, Sebastian Schweikl, Sebastian Vogl |
---|---|
Rok vydání: | 2021 |
Předmět: |
Theoretical computer science
Fitness landscape Computer science Code coverage 0102 computer and information sciences 02 engineering and technology ENCODE 01 natural sciences Set (abstract data type) Transformation (function) 010201 computation theory & mathematics Encoding (memory) 0202 electrical engineering electronic engineering information engineering 020201 artificial intelligence & image processing Boolean data type Testability |
Zdroj: | GECCO |
DOI: | 10.1145/3449639.3459339 |
Popis: | Search-based test generation commonly uses fitness functions based on branch distances, i.e., estimations of how close conditional statements in a program are to evaluating to true or to false. When conditional statements depend on Boolean variables or Boolean-valued methods, the branch distance metric is unable to provide any guidance to the search, causing challenging plateaus in the fitness landscape. A commonly proposed solution is to apply testability transformations, which transform the program in a way that avoids conditional statements from depending on Boolean values. In this paper we introduce the concept of Certainty Booleans, which encode how certain a true or false Boolean value is. Using these Certainty Booleans, a basic testability transformation allows to restore gradients in the fitness landscape for Boolean branches, even when Boolean values are the result of complex interprocedural calculations. Evaluation on a set of complex Java classes and the EvoSuite test generator shows that this testability transformation substantially alters the fitness landscape for Boolean branches, and the altered fitness landscape leads to performance improvements. However, Boolean branches turn out to be much rarer than anticipated, such that the overall effects on code coverage are minimal. |
Databáze: | OpenAIRE |
Externí odkaz: |