| 1 | Andrea Arcuri Theoretical Analysis of Local Search in Software Testing Proceedings of the 5th Symposium on Stochastic Algorithms, Foundations and Applications (SAGA '09)Sapporo, Japan, 26-28 October 2009. |
|
| | Abstract: Available soon... |
| | @INPROCEEDINGS{Arcuri09f,
author = {Andrea Arcuri},
title = {Theoretical Analysis of Local Search in Software Testing},
booktitle = {Proceedings of the 5th Symposium on Stochastic Algorithms, Foundations and Applications (SAGA '09)},
year = {2009},
address = {Sapporo, Japan},
month = {26-28 October},
pages = {}
} |
| 2 | Andrea Arcuri Evolutionary Repair of Faulty Software University of BirminghamCSR-09-02, , 2009. |
|
| | Abstract: Testing and fault localization are very expensive software engineering tasks that have been tried to be automated. Although many successful techniques have been designed, the actual change of the code for fixing the discovered faults is still a human-only task. Even in the ideal case in which automated tools could tell us exactly where the location of a fault is, it is not always trivial how to fix the code. In this paper we analyse the possibility of automating the complex task of fixing faults. We propose to model this task as a search problem, and hence to use for example evolutionary algorithms to solve it. We then discuss the potential of this approach and how its current limits can be addressed in the future. This task is extremely challenging and mainly unexplored in literature. Hence, this paper only covers an initial investigation and gives directions for future work. A research prototype called JAFF and a case study are presented to give first validation of this approach. |
| | @TECHREPORT{Arcurid09d,
author = {Andrea Arcuri},
title = {Evolutionary Repair of Faulty Software},
institution = {University of Birmingham},
year = {2009},
type = {techreport},
number = {CSR-09-02},
address = {},
month = {},
} |
| 3 | Andrea Arcuri On Search Based Software Evolution Proceedings of the 1st International Symposium on Search Based Software Engineering (SSBSE '09)Cumberland Lodge, Windsor, UK, 13-15 May 2009. |
|
| | Abstract: Writing software is a difficult and expensive task. Its automation is hence very valuable. Search algorithms have been successfully used to tackle many software engineering problems. Unfortunately, for some problems the traditional techniques have been of only limited scope, and search algorithms have not been used yet. We hence propose a novel framework that is based on a co-evolution of programs and test cases to tackle these difficult problems.This framework can be used to tackle software engineering tasks such as Automatic Refinement, Fault Correction,Improving Non-functional Criteria and Reverse Engineering.While the programs evolve to accomplish one of these tasks, test cases are co-evolved at the the same time to find new faults in the evolving programs. |
| | @INPROCEEDINGS{Arcuri09,
author = {Andrea Arcuri},
title = {On Search Based Software Evolution},
booktitle = {Proceedings of the 1st International Symposium on Search Based Software Engineering (SSBSE '09)},
year = {2009},
address = {Cumberland Lodge, Windsor, UK},
month = {13-15 May},
pages = {39-42}
} |
| 4 | Andrea Arcuri Full Theoretical Runtime Analysis of Alternating Variable Method on the Triangle Classification Problem Proceedings of the 1st International Symposium on Search Based Software Engineering (SSBSE '09)Cumberland Lodge, Windsor, UK, 13-15 May 2009. |
|
| | Abstract: Runtime Analysis is a type of theoretical investigation that aims to determine, via rigorous mathematical proofs,the time a search algorithm needs to find an optimal solution.This type of investigation is useful to understand why a search algorithm could be successful, and it gives insight of how search algorithms work. In previous work,we proved the runtimes of different search algorithms on the test data generation for the Triangle Classification (TC)problem. We theoretically proved that Alternating Variable Method (AVM) has the best performance on the coverage of the most difficult branch in our empirical study. In this paper,we prove that the runtime of AVM on all the branches of TC is O((log n)2). That is necessary and sufficient to prove that AVM has a better runtime on TC compared to the other search algorithms we previously analysed. The theorems in this paper are useful for future analyses. In fact, to state theta search algorithm has worse runtime compared to AVM, it will be just sufficient to prove that its lower bound is higher than Ω((log n)2) on the coverage of at least one branch of TC. |
| | @INPROCEEDINGS{Arcuri09b,
author = {Andrea Arcuri},
title = {Full Theoretical Runtime Analysis of Alternating Variable Method on the Triangle Classification Problem},
booktitle = {Proceedings of the 1st International Symposium on Search Based Software Engineering (SSBSE '09)},
year = {2009},
address = {Cumberland Lodge, Windsor, UK},
month = {13-15 May},
pages = {113-121}
} |
| 5 | Andrea Arcuri Longer is Better: On the Role of Test Sequence Length in Software Testing University of BirminghamCSR-09-03, , 2009. |
|
| | Abstract: In the presence of an internal state, often it is required a sequence of function calls to test software. In fact, to cover a particular branch of the code, a sequence of previous function
calls might be required to put the internal state in the appropriate configuration. Internal states are not only present in object-oriented software, but also in procedural software (e.g.,
static variables in C programs). In literature, there are many techniques to test this type of software. However, to our best knowledge, the properties related to choosing the length of
these sequences have received only little attention in literature. In this paper, we analyse the role that the length plays in software testing. We show that on “difficult” software testing
benchmarks longer test sequences make their testing trivial. Hence, we argue that the choice of the length of the test sequences is very important in software testing. |
| | @TECHREPORT{Arcuri09e,
author = {Andrea Arcuri},
title = {Longer is Better: On the Role of Test Sequence Length in Software Testing},
institution = {University of Birmingham},
year = {2009},
type = {techreport},
number = {CSR-09-03},
address = {},
month = {},
} |
| 6 | Andrea Arcuri and Per Kristian Lehre and Xin Yao Theoretical Runtime Analysis in Search Based Software Engineering University of BirminghamCSR-09-04, , 2009. |
|
| | Abstract: Search algorithms have been used to tackle software engineering problems with promising results. Although the field has attracted a lot of attention recently, it still lacks a theoretical foundation. It has been empirically shown that search algorithms are successful in some software engineering tasks, but we need to understand why and when they are successful. The long term goal is to get insight of how search algorithms work on software engineering problems, so we can exploit this knowledge to design more efficient algorithms. Runtime Analysis is a type of theoretical investigation that aims to determine, via rigorous mathematical proofs, the time a search algorithm needs to find an optimal solution. Runtime analysis has previously been carried out on traditional combinatorial problems. In this paper, we advocate that runtime analysis would be helpful in search based software engineering as well. We give the first runtime analysis of search heuristics in the software testing domain. |
| | @TECHREPORT{ArcuriLY09,
author = {Andrea Arcuri and Per Kristian Lehre and Xin Yao},
title = {Theoretical Runtime Analysis in Search Based Software Engineering},
institution = {University of Birmingham},
year = {2009},
type = {techreport},
number = {CSR-09-04},
address = {},
month = {},
} |
| 7 | Andrea Arcuri Insight Knowledge in Search Based Software Testing Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation (GECCO '09)Montréal, Canada, 8-12 July 2009. |
|
| | Abstract: Software testing can be re-formulated as a search problem, hence search algorithms (e.g., Genetic Algorithms) can be used to tackle it. Most of the research so far has been of empirical nature, in which novel proposed techniques have been validated on software testing benchmarks. However, only little attention has been spent to understand why meta-heuristics can be effective in software testing. This insight knowledge could be used to design novel more successful techniques. Recent theoretical work has tried to fill this gap, but it is very complex to carry out. This has limited its scope so far to only small problems. In this paper, we want to get insight knowledge on a difficult software testing problem. We combine together an empirical and theoretical analysis, and we exploit the benefits of both. |
| | @INPROCEEDINGS{Arcuri09c,
author = {Andrea Arcuri},
title = {Insight Knowledge in Search Based Software Testing},
booktitle = {Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation (GECCO '09)},
year = {2009},
address = {Montréal, Canada},
month = {8-12 July},
pages = {1649-1656}
} |
| 8 | Andrea Arcuri and Per Kristian Lehre and Xin Yao Theoretical Runtime Analyses of Search Algorithms on the Test Data Generation for the Triangle Classification Problem Proceedings of 1st International Workshop on Search-Based Software Testing (SBST) in conjunction with ICST 2008Lillehammer, Norway, 9-11 April 2008. |
|
| | Abstract: Software Testing plays an important role in the life cycle of software development. Because software testing is very costly and tedious, many techniques have been proposed to automate it. One technique that has achieved good results is the use of Search Algorithms. Because most previous work on search algorithms has been of an empirical nature, there is a need for theoretical results that confirm the feasibility of search algorithms applied to software testing. Such theoretical results might shed light on the limitations and benefits of search algorithms applied in this context. In this paper, we formally analyse the expected runtime of three different search algorithms on the problem of Test Data Generation for an instance of the Triangle Classification program. The search algorithms that we analyse are Random Search, Hill Climbing and Alternating VariableMethod. We believe that this is a necessary first step that will lead and help the Software Engineering community to better understand the role of Search Based Techniques applied to software testing. |
| | @INPROCEEDINGS{ArcuriLY08,
author = {Andrea Arcuri and Per Kristian Lehre and Xin Yao},
title = {Theoretical Runtime Analyses of Search Algorithms on the Test Data Generation for the Triangle Classification Problem},
booktitle = {Proceedings of 1st International Workshop on Search-Based Software Testing (SBST) in conjunction with ICST 2008},
year = {2008},
address = {Lillehammer, Norway},
month = {9-11 April},
pages = {161-169 (Best Paper Award)}
} |
| 9 | Andrea Arcuri and Xin Yao Search Based Software Testing of Object-Oriented Containers Information Sciences, 178(15), August 2008. |
|
| | Abstract: Automatic software testing tools are still far from ideal for real world Object-Oriented (OO) Software. The use of nature inspired search algorithms for this problem has been investigated recently. Testing complex data structures (e.g., containers) is very challenging since testing software with simple states is already hard. Because containers are used in almost every type of software, their reliability is of utmost importance. Hence, this paper focuses on the difficulties of testing container classes with nature inspired search algorithms. We will first describe how input data can be automatically generated for testing Java Containers. Input space reductions and a novel testability transformation are presented to aid the search algorithms. Different search algorithms are then considered and studied in order to understand when and why a search algorithm is effective for a testing problem. In our experiments, these nature inspired search algorithms seem to give better results than the traditional techniques described in literature. Besides, the problem of minimising the length of the test sequences is also addressed. Finally, some open research questions are given. |
| | @ARTICLE{ArcuriY08b,
author = {Andrea Arcuri and Xin Yao},
title = {Search Based Software Testing of Object-Oriented Containers},
journal = {Information Sciences},
year = {2008},
month = {August},
volume = {178},
number = {15},
pages = {3075-3095}
} |
| 10 | Andrea Arcuri On the Automation of Fixing Software Bugs Proceedings of the Doctoral Symposium of the IEEE International Conference on Software Engineering (ICSE '08)Leipzig, Germany, 10-18 May 2008. |
|
| | Abstract: Software Testing can take up to half of the resources of the development of new software. Although there has been a lot of work on automating the testing phase, fixing a bug after its presence has been discovered is still a duty of the programmers. Techniques to help the software developers for locating bugs exist though, and they take name of Automated Debugging. However, to our best knowledge, there has been only little attempt in the past to completely automate the actual changing of the software for fixing the bugs. Therefore, in this paper we propose an evolutionary approach to automate the task of fixing bugs. The basic idea is to evolve the programs (e.g., by using Genetic Programming) with a fitness function that is based on how many unit tests they are able to pass. If a formal specification of the buggy software is given, more sophisticated fitness functions can be designed. Moreover, by using the formal specification as an oracle, we can generate as many unit tests as we want. Hence, a co-evolution between programs and unit tests might take place to give even better results. It is important to know that, to fix the bugs in a program with this novel approach, a user needs only to provide either a formal specification or a set of unit tests. No other information is required. |
| | @INPROCEEDINGS{Arcuri08,
author = {Andrea Arcuri},
title = {On the Automation of Fixing Software Bugs},
booktitle = {Proceedings of the Doctoral Symposium of the IEEE International Conference on Software Engineering (ICSE '08)},
year = {2008},
address = {Leipzig, Germany},
month = {10-18 May},
pages = {1003-1006}
} |
| 11 | Andrea Arcuri and David Robert White and Xin Yao Multi-Objective Improvement of Software using Co-Evolution and Smart Seeding Proceedings of the 7th International Conference on Simulated Evolution And Learning (SEAL '08)Melbourne, Australia, 7-10 December 2008. |
|
| | Abstract: Optimising non-functional properties of software is an important part of the implementation process. One such property is execution time, and compilers target a reduction in execution time using a variety of optimisation techniques. Compiler optimisation is not always able to produce semantically equivalent alternatives that improve execution times, even if such alternatives are known to exist. Often, this is due to the local nature of such optimisations. In this paper we present a novel framework for optimising existing software using a hybrid of evolutionary optimisation techniques. Given as input the implementation of a program or function, we use Genetic Programming to evolve a new semantically equivalent version, optimised to reduce execution time subject to a given probability distribution of inputs. We employ a co-evolved population of test cases to encourage the preservation of the program's semantics, and exploit the original program through seeding of the population in order to focus the search. We carry out experiments to identify the important factors in maximising efficiency gains. Although in this work we have optimised execution time, other non-functional criteria could be optimised in a similar manner. |
| | @INPROCEEDINGS{ArcuriWCY08,
author = {Andrea Arcuri and David Robert White and Xin Yao},
title = {Multi-Objective Improvement of Software using Co-Evolution and Smart Seeding},
booktitle = {Proceedings of the 7th International Conference on Simulated Evolution And Learning (SEAL '08)},
year = {2008},
address = {Melbourne, Australia},
month = {7-10 December},
pages = {61-70}
} |
| 12 | Andrea Arcuri and Xin Yao A Novel Co-evolutionary Approach to Automatic Software Bug Fixing Proceedings of the IEEE Congress on Evolutionary Computation (CEC '08)Hongkong, China, 1-6 June 2008. |
|
| | Abstract: Many tasks in Software Engineering are very expensive, and that has led the investigation to how to automate them. In particular, Software Testing can take up to half of the resources of the development of new software. Although there has been a lot of work on automating the testing phase, fixing a bug after its presence has been discovered is still a duty of the programmers. In this paper we propose an evolutionary approach to automate the task of fixing bugs. This novel evolutionary approach is based on Co-evolution, in which programs and test cases co-evolve, influencing each other with the aim of fixing the bugs of the programs. This competitive co-evolution is similar to what happens in nature for predators and prey. The user needs only to provide a buggy program and a formal specification of it. No other information is required.
Hence, the approach may work for any implementable software. We show some preliminary experiments in which bugs in an implementation of a sorting algorithm are automatically fixed. |
| | @INPROCEEDINGS{ArcuriY08,
author = {Andrea Arcuri and Xin Yao},
title = {A Novel Co-evolutionary Approach to Automatic Software Bug Fixing},
booktitle = {Proceedings of the IEEE Congress on Evolutionary Computation (CEC '08)},
year = {2008},
address = {Hongkong, China},
month = {1-6 June},
pages = {162-168}
} |
| 13 | Andrea Arcuri and Xin Yao On Test Data Generation of Object-Oriented Software Testing: Academic and Industrial Conference, Practice and Research Techniques (TAIC PART)Cumberland Lodge, Windsor, UK, 12-14 September 2007. |
|
| | Abstract: Nowadays, Object-Oriented (OO) languages are widely used in the development of many different kinds of applications. However, testing those applications is still very expensive and time-consuming for the software community. The automation of this task would therefore be highly desirable. Although automatic testing of procedural software has been studied in depth for many years, comparatively little work has been done about OO software. Different techniques exist. However, the most promising one is probably to model the task as a Search Problem.
This paper explains why automatic testing of OO software is more difficult than procedural software. These difficulties provide strong challenges to the Natural Computation and Software Engineering communities. A brief review of the literature of the subject follows. The issues of the current State-of-Art of the field are then outlined. Finally, some open research problems are discussed. |
| | @INPROCEEDINGS{ArcuriY07c,
author = {Andrea Arcuri and Xin Yao},
title = {On Test Data Generation of Object-Oriented Software},
booktitle = {Testing: Academic and Industrial Conference, Practice and Research Techniques (TAIC PART)},
year = {2007},
address = {Cumberland Lodge, Windsor, UK},
month = {12-14 September},
pages = {72-76}
} |
| 14 | Andrea Arcuri and Xin Yao Search Based Testing of Containers for Object-Oriented Software University of BirminghamCSR-07-3, , 2007. |
|
| | Abstract: Generating test data for Object-Oriented (OO) software is a hard task. Little work has been done on the subject, and a lot of open problems still need to be investigated. In this paper we focus on container classes. They are used in almost every type of software, hence their reliability is of utmost importance. We present novel techniques to generate test data for container classes in an automatic way. A new representation with novel search operators is described and tested. A way to reduce the search space for OO software is presented. This is achieved by dynamically eliminating the functions that cannot give any further help from the search. Besides, the problem of applying the branch distances of disjunctions and conjunctions to OO software is solved. Finally, Hill Climbing, Genetic Algorithms and Memetic Algorithms are used and compared. Our empirical case study shows that our Memetic Algorithm outperforms the other algorithms. |
| | @TECHREPORT{ArcuriY07,
author = {Andrea Arcuri and Xin Yao},
title = {Search Based Testing of Containers for Object-Oriented Software},
institution = {University of Birmingham},
year = {2007},
type = {techreport},
number = {CSR-07-3},
address = {},
month = {},
} |
| 15 | Ramón Sagarna and Andrea Arcuri and Xin Yao Estimation of Distribution Algorithms for Testing Object Oriented Software Proceedings of the IEEE Congress on Evolutionary Computation (CEC '07)Singapore, 25-28 September 2007. |
|
| | Abstract: One of the main tasks software testing involves is the generation of the test cases to be used during the test. Due to its expensive cost, the automation of this task has become one of the key issues in the area. While most of the work on test data generation has concentrated on procedural software, little attention has been paid to object oriented programs, even so they are a usual practice nowadays. We present an approach based on Estimation of Distribution Algorithms (EDAs) for dealing with the test data generation of a particular type of objects, that is, containers. This is the first time that an EDA has been applied to testing object oriented software. In addition to automated test data generation, the EDA approach also offers the potential of modelling the fitness landscape defined by the testing problem and thus could provide some insight into the problem. Firstly, we show results from empirical evaluations and comment on some appealing properties of EDAs in this context. Next, a framework is discussed in order to deal with the generation of efficient tests for the container classes. Preliminary results are provided as well. |
| | @INPROCEEDINGS{SagarnaAY07,
author = {Ramón Sagarna and Andrea Arcuri and Xin Yao},
title = {Estimation of Distribution Algorithms for Testing Object Oriented Software},
booktitle = {Proceedings of the IEEE Congress on Evolutionary Computation (CEC '07)},
year = {2007},
address = {Singapore},
month = {25-28 September},
pages = {438-444}
} |
| 16 | Andrea Arcuri and Xin Yao A Memetic Algorithm for Test Data Generation of Object-Oriented Software Proceedings of the 2007 IEEE Congress on Evolutionary Computation (CEC)Singapore, 25-28 September 2007. |
|
| | Abstract: Generating test data for Object-Oriented (OO) software is a hard task. Little work has been done on the subject, and a lot of open problems still need to be investigated. In this paper we focus on container classes. They are used in almost every type of software, hence their reliability is of utmost importance. We present novel techniques to generate test data for container classes in an automatic way. A new representation with novel search operators is described and tested. A way to reduce the search space for OO software is presented. This is achieved by dynamically eliminating the functions that cannot give any further help from the search. Besides, the problem of applying the branch distances of disjunctions and conjunctions to OO software is solved. Finally, Hill Climbing, Genetic Algorithms and Memetic Algorithms are used and compared. Our empirical case study shows that our Memetic Algorithm outperforms the other algorithms. |
| | @INPROCEEDINGS{ArcuriY07b,
author = {Andrea Arcuri and Xin Yao},
title = {A Memetic Algorithm for Test Data Generation of Object-Oriented Software},
booktitle = {Proceedings of the 2007 IEEE Congress on Evolutionary Computation (CEC)},
year = {2007},
address = {Singapore},
month = {25-28 September},
pages = {2048-2055}
} |
| 17 | Andrea Arcuri and Xin Yao Coevolving Programs and Unit Tests from their Specification Proceedings of the twenty-second IEEE/ACM International Conference on Automated Software Engineering (ASE '07)Atlanta, Georgia, USA, 5-9 November 2007. |
|
| | Abstract: Writing a formal specification before implementing a program helps to find problems with the system requirements. The requirements might be for example incomplete and ambiguous. Fixing these types of errors is very difficult and expensive during the implementation phase of the software development cycle. Although writing a formal specification is usually easier than implementing the actual code, writing a specification requires time, and often it is preferred, instead, to use this time on the implementation.
In this paper we introduce for the first time a framework that might evolve any possible generic program from its specification. We use the Genetic Programming to evolve the programs, and at the same time we exploit the specifications to coevolve sets of unit tests. Programs are rewarded on how many tests they do not fail, whereas the unit tests are rewarded on how many programs they make fail. We present and analyse four different problems on which this novel technique is successfully applied. |
| | @INPROCEEDINGS{ArcuriY07d,
author = {Andrea Arcuri and Xin Yao},
title = {Coevolving Programs and Unit Tests from their Specification},
booktitle = {Proceedings of the twenty-second IEEE/ACM International Conference on Automated Software Engineering (ASE '07)},
year = {2007},
address = {Atlanta, Georgia, USA},
month = {5-9 November},
pages = {397-400}
} |