Tests Don't Prove Code Is Correct They Just Agree with It
5 hours ago
- #Software Testing
- #Proof-Driven Development
- #Clean Code
- Proof-Driven Development emphasizes proving the correctness of algorithms or applications, contrasting with industry reliance on testing.
- Testing can only prove incorrectness in specific cases, not correctness in all scenarios.
- Software complexity often leads to treating systems as non-deterministic, despite computers being deterministic.
- Clean Code and modular architecture make it easier to prove correctness of individual components and broader scenarios.
- Clean Code reduces bugs and debugging time, improving productivity and business value.
- Formal proofs may not be necessary, but reasoning about correctness and peer reviews are essential.
- Testing remains important for exploratory testing, performance, catching simple mistakes, and ensuring correctness during changes.
- Clean Code and refactoring skills are crucial for maintaining code quality over time.
- Poka Yoke (mistake-proofing) techniques in code help prevent errors and aid in proving correctness.
- Testing should be treated like scientific experiments, designed to fail if claims are incorrect.