PropEr
What it is
PropEr is free, open-source software for automated, semi-random property-based testing of Erlang programs. It can generate test data from Erlang type declarations and test functions using information in their specifications. Properties are written as Erlang expressions with predefined macros. For stateful systems, PropEr supports model-based random testing, and recent releases add targeted property-based testing using search-based techniques. The tool works with EUnit and Common Test and supports shrinking failing cases. Its generator language differs from Erlang’s type language for list expressions, so generators can describe particular lengths and element types. Custom generators express constraints that Erlang types cannot, although filtering may continue trying random values until a generated value passes. The user guide describes obtaining source from GitHub, compiling with make, or installing through Homebrew. PropEr is self-hosted and distributed under GPL version 3 or later.
For and against
For
- Generates data from Erlang type declarations
- Supports stateful model-based testing
- Includes targeted property-based testing
- Works with EUnit and Common Test
- Shrinks failing cases
Against
- Focused on Erlang programs
- Filtering may keep trying random values
- Self-hosted installation is required
- Generator and type languages differ for lists
The verdict
PropEr offers a broad property-based testing workflow for Erlang, including stateful and targeted approaches. Its open-source license and test-runner integrations suit teams comfortable managing the tool themselves.
Who it suits
It is designed for developers testing Erlang programs, especially pure functions and library modules for stateful code. Teams using EUnit or Common Test can connect it to those runners.
Plans and prices
PropEr
Open-source software · GPL version 3 or later
Read 5 Oct 2026 · proper-testing.github.io
On the record
- Automatic testing
- PropEr can test functions automatically using information in their Erlang specifications.proper-testing.github.io · read 5 Oct 2026
- 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.proper-testing.github.io · read 5 Oct 2026
- Erlang types
- Erlang type declarations can be used as input specifications, and PropEr can generate data from them.proper-testing.github.io · read 5 Oct 2026
- Installation
- The user guide describes obtaining source from GitHub, compiling it with make, or installing it with Homebrew.proper-testing.github.io · read 5 Oct 2026
- Integrations
- The user guide explains using PropEr with EUnit and describes handling a shared ?LET macro and captured output.proper-testing.github.io · read 5 Oct 2026
- Intended users
- PropEr is designed for testing programs written in Erlang, with a focus on pure functions and library modules for stateful code.proper-testing.github.io · read 5 Oct 2026
- 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.proper-testing.github.io · read 5 Oct 2026
- License
- PropEr is open-source software distributed under the GPL, version 3 or later.proper-testing.github.io · read 5 Oct 2026
- Properties
- Properties are written using Erlang expressions with predefined macros.proper-testing.github.io · read 5 Oct 2026
- Purpose
- PropEr is a tool for automated, semi-random, property-based testing of Erlang programs.proper-testing.github.io · read 5 Oct 2026
- Stateful testing
- It can also be used for model-based random testing of stateful systems.proper-testing.github.io · read 5 Oct 2026
- Support
- The developers invite comments, suggestions, feature requests, bug reports, patches, and other contributions through the project website, GitHub, or email.proper-testing.github.io · read 5 Oct 2026
- Targeted testing
- Recent releases support targeted property-based testing, which brings search-based testing techniques into property-based testing.proper-testing.github.io · read 5 Oct 2026