The philosophy behind testing in software and in general
Photo by Mykenzie Johnson on Unsplash
Testing is like double-entry bookkeeping.
Testing is insurance. It may not find anything, but when it does, it saves significant time.
It is cheaper to fix things earlier.
You should not make assumptions. Always test.
Testing makes it sure that you are moving in the right direction.
Test small, test often, and test fast.
Keep your test coverage high. An excellent way to do that is for every new line of commits to have a test coverage of 100%.
TDD (Test First) is 50% more efficient in the long term.
Writing unit tests first only works well when you know exactly what you want to write. If you are experimenting, it may be useless.
You could invert the last line . If you can’t write tests first, you need to learn.
Every new bug should get a new test written first. (adapted from Facebook Engineering)
Keep your overall QC process as automated as possible.
Like SpaceX, push beyond failure during testing/development. So you can ensure everything goes well in prod.
The more you test, the more data points you have. The easy it will be to isolate the infected and avoid disease spread.
Test the most critical things often.
You never accept the alternative hypothesis. You always reject it. You would rarely know if a hypothesis is 100% current unless it is a logical statement.
To test, you can plug the numbers right in and see if the equation holds.
If you are learning, you can only know if you have learned right by testing yourself.