Open Systems Laboratory at Illinois

Targeted test generation for actor systems

By Sihan Li, Farah Hariri, and Gul Agha. In 32nd European Conference on Object-Oriented Programming, ECOOP 2018, July 16-21, 2018, Amsterdam, The Netherlands, volume 109 of LIPIcs, 8:1–8:31. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 2018.

DOI:
10.4230/LIPIcs.ECOOP.2018.8
Publisher Link:
https://doi.org/10.4230/LIPIcs.ECOOP.2018.8

Abstract

This paper addresses the problem of targeted test generation for actor systems. Specifically, we propose a method to support generation of system-level tests to cover a given code location in an actor system. The test generation method consists of two phases. First, static analysis is used to construct an abstraction of an entire actor system in terms of a message flow graph (MFG). An MFG captures potential actor interactions that are defined in a program. Second, a backwards symbolic execution (BSE) from a target location to an" entry point" of the actor system is performed. BSE uses the MFG constructed in the first phase of our targeted test generation method to guide execution across actors. Because concurrency leads to a huge search space which can potentially be explored through BSE, we prune the search space by using two heuristics combined with a feedback-directed technique. We implement our method in Tap, a tool for Java Akka programs, and evaluate Tap on the Savina benchmarks as well as four open source projects. Our evaluation shows that the Tap achieves a relatively high target coverage (78% on 1,000 targets) and detects six previously unreported bugs in the subjects.

BibTeX

@inproceedings{conf/ecoop/LiHA18,
    author = "Li, Sihan and Hariri, Farah and Agha, Gul",
    editor = "Millstein, Todd D.",
    title = "Targeted Test Generation for Actor Systems",
    biburl = "https://dblp.org/rec/bib/conf/ecoop/LiHA18",
    booktitle = "32nd European Conference on Object-Oriented
                 Programming, {ECOOP} 2018, July 16-21, 2018, Amsterdam, The
                 Netherlands",
    crossref = "conf/ecoop/2018",
    doi = "10.4230/LIPIcs.ECOOP.2018.8",
    pages = "8:1--8:31",
    timestamp = "Thu, 23 Aug 2018 01:00:00 +0200",
    url = "https://doi.org/10.4230/LIPIcs.ECOOP.2018.8",
    year = "2018",
}

@proceedings{conf/ecoop/2018,
    editor = "Millstein, Todd D.",
    title = "32nd European Conference on Object-Oriented Programming,
             {ECOOP} 2018, July 16-21, 2018, Amsterdam, The Netherlands",
    biburl = "https://dblp.org/rec/bib/conf/ecoop/2018",
    isbn = "978-3-95977-079-8",
    publisher = "Schloss Dagstuhl - Leibniz-Zentrum fuer
                 Informatik",
    series = "LIPIcs",
    timestamp = "Tue, 10 Jul 2018 12:57:53 +0200",
    url = "http://www.dagstuhl.de/dagpub/978-3-95977-079-8",
    volume = "109",
    year = "2018",
}