https://medium.com/@n.garbusa/software-testing-101-an-introduction-to-types-of-testing-for-better-code-quality-1-6-b8ebb0d8e915