Simulation-Based Testing of Distributed Systems

Abstract

Developers of distributed systems routinely construct discrete-event simulations to help them understand and evaluate the behavior of inter-component protocols. Typically written using an imperative programming language, these simulations capture basic algorithmic functionality at the same time as they focus attention on properties critical to distribution, including topology, timing, bandwidth, and overall scalability. We ask the following question: Can simulations also be used to help in the testing of distributed-system implementations? Because simulations amount to specifications of intended behavior, the code of a simulation can be viewed as an operational, albeit non-traditional, formal model. We claim that this kind of model, when used within a specification-based testing regime, provides developers with the foundations of a powerful new method for selecting effective test suites. The primary tool used in our method is a fault-based analysis of the simulation code in which a set of mutants are generated using standard code-mutation techniques. The analysis can be used to rate the effectiveness of a test suite, as well as the criterion used to form it. We substantiate our claim through experiments performed on the simulations and implementations of two different distributed systems.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Jan 01, 2006
Accession Number
ADA444809

Entities

People

  • Alexander L. Wolf
  • Antonio Carzaniga
  • Matthew J. Rutherford

Organizations

  • University of Colorado Boulder

Tags

DTIC Thesaurus Topics

  • Abstracts
  • Algorithms
  • Complex Systems
  • Computer Programming
  • Computer Programs
  • Computer Science
  • Language
  • Mutations
  • Network Protocols
  • Procedural Programming Language
  • Programming Languages
  • Simulations
  • Software Design
  • Specifications
  • Standards
  • Test Methods
  • Topology

Fields of Study

  • Computer science
  • Engineering

Readers

  • Computational Modeling and Simulation
  • Distributed Systems and Data Platform Development
  • Software Engineering.