Three Laws of TDD


  1. No production code unless it is to make a failing test pass.
  2. No more of a unit test than is sufficient to fail.
  3. No more production code than is sufficient to pass the one failing test.

4 most basic tests we must write


  1. all happy paths
  2. edge/corner/boundary cases
  3. negative test cases
  4. security and illegal issues