As a feature suggestion stemming from earlier discussions, if issue #143 is implemented (specifying constructor args via config), it may be worth considering the fuzzing of constructor arguments as well.
Currently for Echidna to test a contract, it cannot take constructor arguments. If it does, the user is encouraged to derive from it, specifying values to the base constructor call, so the inheriting constructor does not need to take arguments. Echidna then tests the derivative.
The motivation behind this feature suggestion:
Property-based testing in Echidna provides an advantage over unit testing. While unit testing tests cases the user has thought of, property testing may generate test cases which the user has not thought of.
Imagine a contract takes many constructor arguments which affect the computation of values in later function calls, or set conditions which allow/block some code paths where invariants may be violated. (The experimental ABI pragma allows passing of structs which may have many members and affect many code paths).
The ability for Echidna to test all edge cases would then be contingent on the user writing a good set of derivatives which specify a wide range of constructor argument permutations, allowing these code paths to be reached.
Limitation: The user is only creating test cases which they have thought of, and they may miss an edge case for supplied constructor arguments.
If constructor argument support is to be added to Echidna in the future, then including constructor arguments to the fuzzing process would help discover edge cases which the user has not thought of.
As a feature suggestion stemming from earlier discussions, if issue #143 is implemented (specifying constructor args via config), it may be worth considering the fuzzing of constructor arguments as well.
Currently for Echidna to test a contract, it cannot take constructor arguments. If it does, the user is encouraged to derive from it, specifying values to the base constructor call, so the inheriting constructor does not need to take arguments. Echidna then tests the derivative.
The motivation behind this feature suggestion: