Recenlty there was a good tweet exchange between James Bach, Michael Bolton and Ben Simon on “100% coverage”. Good point worth writing down:
“100% test coverage” is a standard that lacks a standard. Might as well demand 100% pure programming. 100% of what? ‘code’ is an ambiguous denominator. Even if lines, branches and paths were finite, data isn’t.
Testing requires heuristic choices. 100% *check* coverage is a much smaller (infinite) set than 100% *test* coverage. This is a very important difference… unless you believe that the only important thing about a product is “100% functional correctness of the code you wrote”.
100% check/test coverage still does not save from buggy software.