Coevolving programs and unit tests from their specification

Andrea ARCURI, Xin YAO

Research output: Book Chapters | Papers in Conference ProceedingsConference paper (refereed)Researchpeer-review

29 Citations (Scopus)


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. Copyright 2007 ACM.
Original languageEnglish
Title of host publicationASE'07 - 2007 ACM/IEEE International Conference on Automated Software Engineering
Number of pages4
Publication statusPublished - 5 Nov 2007
Externally publishedYes


  • automatic programming
  • coevolution
  • formal specification
  • genetic programming
  • software testing
  • sorting


Dive into the research topics of 'Coevolving programs and unit tests from their specification'. Together they form a unique fingerprint.

Cite this