EUnit: a lightweight unit testing framework for Erlang
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
Programming distributed erlang applications: pitfalls and recipes
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Finding race conditions in Erlang with QuickCheck and PULSE
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A PropEr integration of types and function specifications with property-based testing
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
QuickCheck testing for fun and profit
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
Avoiding concurrency errors remains one of the main challenges in day-to-day Erlang development. Errors can arise both from unexpected process and message interleaving, as well as concurrent clients or users interacting with the system in an unanticipated manner. To address this issue, many testing tools have been developed over the years. One approach is to pair a property-based testing tool with a tool that overrides the Erlang scheduler. This allows developers to focus on defining the properties of their system, and let the testing tools worry about testing these properties across different interleavings. This paper builds upon this approach and presents the Hansei testing framework. Hansei provides an approach to writing property-based tests that build on standard OTP abstractions, as well as a testing infrastructure designed to support test-driven development of concurrent systems. The Hansei infrastructure builds on the existing QuickCheck property-based testing tool, and supports both built-in message interleaving as well as a testing mode that works with existing process interleaving tools. Existing tools are more mature and feature-complete, while the built-in Hansei support has the unique property of being able to operate on code that spans multiple Erlang VMs.