QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
TestEra: Specification-Based Testing of Java Programs Using SAT
Automated Software Engineering
CMC: a pragmatic approach to model checking real code
OSDI '02 Proceedings of the 5th symposium on Operating systems design and implementationCopyright restrictions prevent ACM from being able to make the PDFs for this conference available for downloading
Hilda: A High-Level Language for Data-DrivenWeb Applications
ICDE '06 Proceedings of the 22nd International Conference on Data Engineering
Declarative networking: language, execution and optimization
Proceedings of the 2006 ACM SIGMOD international conference on Management of data
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
The software model checker Blast: Applications to software engineering
International Journal on Software Tools for Technology Transfer (STTT)
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
PADS: a policy architecture for distributed storage systems
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
ACM Computing Surveys (CSUR)
Boom analytics: exploring data-centric, declarative programming for the cloud
Proceedings of the 5th European conference on Computer systems
Relational transducers for declarative networking
Proceedings of the thirtieth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Logic and lattices for distributed programming
Proceedings of the Third ACM Symposium on Cloud Computing
Distributed programming and consistency: principles and practice
Proceedings of the Third ACM Symposium on Cloud Computing
In data veritas: data driven testing for distributed systems
Proceedings of the Sixth International Workshop on Testing Database Systems
Hi-index | 0.00 |
We present BloomUnit, a testing framework for distributed programs written in the Bloom language. BloomUnit allows developers to write declarative test specifications that describe the input/output behavior of a software module. Test specifications are expressed as Bloom queries over (distributed) execution traces of the program under test. To allow execution traces to be produced automatically, BloomUnit synthesizes program inputs that satisfy user-provided constraints. For a given input, BloomUnit systematically explores the space of possible network message reorderings. BloomUnit searches this space efficiently by exploiting program semantics to ignore "uninteresting" message schedules. We illustrate the utility of BloomUnit by demonstrating an incremental process by which a programmer might provide and refine a set of queries and constraints until they define a rich set of correctness tests for a distributed system.