Losing faith in testing

Role of Tests vs Design

  • Many argue tests can’t rescue fundamentally bad architecture; simplification and comprehensibility matter more.
  • Others report success using integration tests to first “wrap” a legacy mess, then safely refactor it, seeing tests as an enabler of simplification rather than a substitute.
  • Tests are described as a tool for confidence and change, not a guarantee of correctness.

Where Tests Provide High Value

  • Core, stable, load‑bearing components (VMs, DBs, core business logic) benefit greatly from extensive testing and fuzzing.
  • Integration and end‑to‑end tests are praised for catching real, cross‑system bugs and enabling fearless refactors, especially in multi‑service and infra‑heavy systems.
  • Tests are valuable for upgrading libraries/frameworks, preventing regressions, and preserving behavior when original authors leave.
  • Property testing and strong suites are framed as “battle‑hardening” for mature systems.

Where Tests Are Seen as Low ROI

  • Fast‑changing product features and UI polish in early‑stage startups can be over‑tested, killing velocity and leading to brittle, constantly‑failing suites.
  • Interactive tools (text editors, terminals) may get away with fewer automated tests if main paths are exercised continuously by use.
  • Some teams report shipping acceptable products with little automation, relying on manual testing, metrics, canary deploys, and rollbacks.

Cultural and Process Issues

  • Testing is often treated as religion: coverage targets, TDD dogma, and mandatory tests-for-every-line produce low‑value, mock‑heavy suites.
  • Goodhart’s law: coverage as a KPI leads to trivial or redundant tests that don’t improve quality but slow change.
  • Incentives (ticket throughput, lack of time) push devs toward “hacked‑together crap”; blaming individuals instead of systems is criticized.

Alternatives, Complements, and Strategies

  • Strong type systems eliminate many classes of bugs and reduce needed tests, but don’t replace them; types and tests are seen as complementary.
  • Manual exploratory testing is still considered crucial for UX issues, performance surprises, and unanticipated interactions.
  • Several commenters advocate treating tests as investments: focus on high‑value scenarios, core invariants, and regression protection; keep suites fast, low‑flake, and be willing to delete or avoid low‑ROI tests.