Our unit tests and functional tests are non-deterministic in the overall execution, but the coverage should not be affected by that. I.e. some functions might be executed in a different order or sometimes skipped, but every line, function and branch should be executed at least once.
This is currently not true, even for serialization errors that should be hit exactly once.
Beside the obvious issue of missing test coverage on some runs, this also makes it impossible to see how test coverage changes between two commits.