Testing / Analysis
Dialyzer
Dialyzer is a static analysis tool that looks for software discrepancies such as type errors, useless tests, code paths that will never be executed, will warn about some unsafe practices and can detect some cases of data race conditions.
Allows the user to declare function contracts and custom types. See the types and functions specifications page. Note that Dialyzer is based on success typings[PDF].
Tsung
Tsung is a multi-protocol distributed load testing tool that can be used to conduct stress tests on HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP servers.
It has the advantage of making it possible to distribute the tests across many nodes to simulate a large number of users accessing the server, or a DoS attack.
McErlang
McErlang is a model checker for programs written in the Erlang programming language. The idea is to replace the part of the standard Erlang runtime system that concerns distribution, concurrency and communication with a new runtime system which simulates processes inside the model checker, and which offers easy access to the program state.
See the user manual[PDF] for more details.
Quviq Quickcheck
Quvic Quickcheck is a commercial testing application that generates random test cases based on predefined specifications. Quickcheck simplifies failing cases to generalize them and make it easier to fix the problems in your code.
Triq
Triq is an Open Source/free version of Quiviq eqc. It is a property testing library born out of Kresten Krab Thorup's erjang project.
Proper
proper is an(other) property testing library for Erlang. An(other) Open Source version of QuickCheck (the Haskell property testing library). Developed by Manolis Papadakis and Kostis Sagonas and released under the GPL.
Tidier
Tidier is a commercial tool with a free web-based interface that takes your Erlang code, analyses it, and then spits out a cleaner version that is easier to read. The tool is actually used by the OTP team at Ericsson in order to clean up the current Erlang code base.
Cover
Cover is one of the standard applications from the OTP tool chain. It is to be used in conjunction with test frameworks in order to know if you really check every possible code path. It works by annotating the modules you want to analyse (reducing performance a bit, something acceptable for tests). After this, you run any test you want, without regard to what framework you use, and cover will take note of every line of code called. You can then generate coverage analysis by module, function, line, etc.