POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Visualizing interactions in program executions
ICSE '97 Proceedings of the 19th international conference on Software engineering
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
An open graph visualization system and its applications to software engineering
Software—Practice & Experience - Special issue on discrete algorithm engineering
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Trace analysis of Erlang programs
ACM SIGPLAN Notices
Integrating visualization support into distributed computing systems
ICDCS '95 Proceedings of the 15th International Conference on Distributed Computing Systems
Troubleshooting a large erlang system
ERLANG '04 Proceedings of the 2004 ACM SIGPLAN workshop on Erlang
Testing telecoms software with quviq QuickCheck
Proceedings of the 2006 ACM SIGPLAN workshop on Erlang
McErlang: a model checker for a distributed functional programming language
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Extended process registry for erlang
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
A more accurate semantics for distributed erlang
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Visualization of Concurrent Program Executions
COMPSAC '07 Proceedings of the 31st Annual International Computer Software and Applications Conference - Volume 02
Towards Trace Visualization and Exploration for Reactive Systems
VLHCC '07 Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
IEEE Transactions on Computers
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Race directed random testing of concurrent programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Randomized active atomicity violation detection in concurrent programs
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Finding and reproducing Heisenbugs in concurrent programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
QuickCheck testing for fun and profit
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
A trace simplification technique for effective debugging of concurrent programs
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Property-based testing: the ProTest project
FMCO'09 Proceedings of the 8th international conference on Formal methods for components and objects
FortressCheck: automatic testing for generic properties
Proceedings of the 2011 ACM Symposium on Applied Computing
Accelerating race condition detection through procrastination
Proceedings of the 10th ACM SIGPLAN workshop on Erlang
Test-driven development of concurrent programs using concuerror
Proceedings of the 10th ACM SIGPLAN workshop on Erlang
Testing a database for race conditions with QuickCheck: none
Proceedings of the 10th ACM SIGPLAN workshop on Erlang
Static detection of race conditions in erlang
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Hansei: property-based development of concurrent systems
Proceedings of the eleventh ACM SIGPLAN workshop on Erlang workshop
Property-Based testing and verification: a catalog of classroom examples
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Testing blocking operations with QuickCheck's component library
Proceedings of the twelfth ACM SIGPLAN workshop on Erlang
Hi-index | 0.00 |
We address the problem of testing and debugging concurrent, distributed Erlang applications. In concurrent programs, race conditions are a common class of bugs and are very hard to find in practice. Traditional unit testing is normally unable to help finding all race conditions, because their occurrence depends so much on timing. Therefore, race conditions are often found during system testing, where due to the vast amount of code under test, it is often hard to diagnose the error resulting from race conditions. We present three tools (QuickCheck, PULSE, and a visualizer) that in combination can be used to test and debug concurrent programs in unit testing with a much better possibility of detecting race conditions. We evaluate our method on an industrial concurrent case study and illustrate how we find and analyze the race conditions.