| humans are very good at overlooking edge cases, off by one errors etc. so if you generate test data randomly you have a higher chance of "accidentally" running into overlooked edge cases you could say there is a "adding more random -> cost" ladder like - no randomness, no cost, nothing gained - a bit of randomness, very small cost, very rarely beneficial (<- doable in unit tests) - (limited) prop testing, high cost (test runs multiple times with many random values), decent chance to find incorrect edge cases (<- can be barely doable in unit tests, if limited enough, often feature gates as too expensive) - (full) prop testing/fuzzing, very very high cost, very high chance incorrect edge cases are found IFF the domain isn't too large (<- a full test run might need days to complete) |