PropEr
proper-testing.github.io
What it is
PropEr is a free, open-source testing tool for Erlang programs. It performs automated, semi-random property-based testing and can generate input data from Erlang type declarations. Functions can be tested automatically from information in their Erlang specifications, while properties are written as Erlang expressions with predefined macros. PropEr also supports model-based random testing for stateful systems and targeted property-based testing using search-based techniques. Failing cases can be shrunk, and the project supports EUnit and Common Test. Constraints that Erlang’s type language cannot express can be handled with custom generators; filtering may keep trying random values until one passes. The generator language differs from Erlang’s type language for list expressions, including support for particular list lengths and element types. PropEr is self-hosted, supports Erlang, and is distributed under GPL version 3 or later. The guide describes installation from GitHub source, with make, or through Homebrew.
Spec sheet
- Purpose
- PropEr is a tool for automated, semi-random, property-based testing of Erlang programs.Read 5 Oct 2026 · proper-testing.github.io
- Intended users
- PropEr is designed for testing programs written in Erlang, with a focus on pure functions and library modules for stateful code.Read 5 Oct 2026 · proper-testing.github.io
- Integrations
- The user guide explains using PropEr with EUnit and describes handling a shared ?LET macro and captured output.Read 5 Oct 2026 · proper-testing.github.io
- Support
- The developers invite comments, suggestions, feature requests, bug reports, patches, and other contributions through the project website, GitHub, or email.Read 5 Oct 2026 · proper-testing.github.io
- License
- PropEr is open-source software distributed under the GPL, version 3 or later.Read 5 Oct 2026 · proper-testing.github.io
- Automatic testing
- PropEr can test functions automatically using information in their Erlang specifications.Read 5 Oct 2026 · proper-testing.github.io
- Constraints
- Constraints that cannot be expressed in Erlang's type language can be expressed with custom generators; the FAQ cautions that filtering may keep trying random values until one passes.Read 5 Oct 2026 · proper-testing.github.io
- Erlang types
- Erlang type declarations can be used as input specifications, and PropEr can generate data from them.Read 5 Oct 2026 · proper-testing.github.io
- Installation
- The user guide describes obtaining source from GitHub, compiling it with make, or installing it with Homebrew.Read 5 Oct 2026 · proper-testing.github.io
- Known limitation
- PropEr's generator language and Erlang type language differ for list expressions, allowing generators to specify lists of particular lengths and element types.Read 5 Oct 2026 · proper-testing.github.io
- Properties
- Properties are written using Erlang expressions with predefined macros.Read 5 Oct 2026 · proper-testing.github.io
- Stateful testing
- It can also be used for model-based random testing of stateful systems.Read 5 Oct 2026 · proper-testing.github.io
- Targeted testing
- Recent releases support targeted property-based testing, which brings search-based testing techniques into property-based testing.Read 5 Oct 2026 · proper-testing.github.io
Plans and prices
Strong points and limits
Strong points
- Generates data from Erlang type declarations
- Supports model-based stateful testing
- Includes targeted property-based testing
- Supports EUnit and Common Test
- Provides failing-case shrinking
Limits
- Filtering may retry random values repeatedly
- Generator and type languages differ for lists
- Self-hosted deployment is required
Who it suits
PropEr suits Erlang developers testing pure functions, library modules, and stateful code. It is aimed at teams wanting property-based testing with EUnit or Common Test integration.
Verdict
PropEr focuses on property-based and model-based testing for Erlang, with targeted searches, shrinking, and test-runner support. Its self-hosted GPL licensing and generator-language details are important planning considerations.
Where Specifiction places it
- Property-Based Testing Tools#14 of 287.5