Structural Testing of Concurrent Programs
IEEE Transactions on Software Engineering
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Conformance test experiments for distributed real-time systems
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
A Temporal Approach for Testing Distributed Systems
IEEE Transactions on Software Engineering
The many faces of publish/subscribe
ACM Computing Surveys (CSUR)
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Specification-Based Unit Testing of Publish/Subscribe Applications
ICDCSW '06 Proceedings of the 26th IEEE International ConferenceWorkshops on Distributed Computing Systems
Architecting a Testing Framework for Publish/Subscribe Applications
COMPSAC '06 Proceedings of the 30th Annual International Computer Software and Applications Conference - Volume 01
Simulation-based test adequacy criteria for distributed systems
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Using queries for distributed monitoring and forensics
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
On Accurate Automatic Verification of Publish-Subscribe Architectures
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Pip: detecting the unexpected in distributed systems
NSDI'06 Proceedings of the 3rd conference on Networked Systems Design & Implementation - Volume 3
Race directed random testing of concurrent programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
MODIST: transparent model checking of unmodified distributed systems
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
Saturation-based testing of concurrent programs
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Overcoming observability problems in distributed test architectures
Information Processing Letters
A decision procedure for bit-vectors and arrays
CAV'07 Proceedings of the 19th international conference on Computer aided verification
KleeNet: discovering insidious interaction bugs in wireless sensor networks before deployment
Proceedings of the 9th ACM/IEEE International Conference on Information Processing in Sensor Networks
KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
dBug: systematic evaluation of distributed systems
SSV'10 Proceedings of the 5th international conference on Systems software verification
Friday: global comprehension for distributed replay
NSDI'07 Proceedings of the 4th USENIX conference on Networked systems design & implementation
Loupe: Verifying Publish-Subscribe Architectures with a Magnifying Lens
IEEE Transactions on Software Engineering
Coverage guided systematic concurrency testing
Proceedings of the 33rd International Conference on Software Engineering
Scalable Symbolic Execution of Distributed Systems
ICDCS '11 Proceedings of the 2011 31st International Conference on Distributed Computing Systems
Towards fine-grained automated verification of publish-subscribe architectures
FORTE'06 Proceedings of the 26th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Hi-index | 0.00 |
Testing the components of a distributed system is challenging as it requires consideration of not just the state of a component, but also the sequence of messages it may receive from the rest of the system or the environment. Such messages may vary in type and content, and more particularly, in the frequency at which they are generated. All of these factors, in the right combination, may lead to faulty behavior. In this paper we present an approach to address these challenges by systematically analyzing a component in a distributed system to identify specific message sequences and frequencies at which a failure can occur. At the core of the analysis is the generation of a test driver that defines the space of message sequences to be generated, the exploration of that space through the use of dynamic symbolic execution, and the timing and analysis of the generated tests to identify problematic frequencies. We implemented our approach in the context of the popular Robotic Operating System and investigated its application to three systems of increasing complexity.