Why Most Unit Testing is Waste (2014) [pdf]
Ok let&#x27;s stop writing UT and see what happens. Wait... we&#x27;ve already tried that, and we know the result pretty well:<p>1. In dynamic languages, simple type mismatches, wrong variable names etc. are now caught in &quot;top level system level test&quot;. Yes these are bugs that should have been caught by a compiler had we had one.<p>2. There&#x27;s no documentation as to how something should work, or what functionality a module is trying to express.<p>3. No one dares to refactor anything ==&gt; Code rottens ==&gt; maintenance hell.<p>4. Bugs are caught by costly human beings (often used to execute &quot;system level tests&quot;) instead of pieces of code.<p>5. When something does break in those &quot;top level system tests&quot;, no one has a clue where to look, as all the building blocks of our system are now considered equally broken.<p>6. It&#x27;s scary to reuse existing modules, as no one knows if they work or not, outside the scope of the specific system with which they were previously tested. Hence re-invention, code duplication, and yet another maintenance hell.<p>Did I fail to mention something?<p>UT cannot assert the correctness of your code. But it will constructively assert its incorrectness.