Tests significantly help with understanding a codebase and safely making modifications.<p>Unit tests describe the behavior and usage of the individual systems, while integration tests describe business use cases in core workflows (usually just the happy paths). Integration tests should ideally be written in a gherkin style with feature description and acceptance criteria clearly outlined.<p>Tests should be optimized for readability foremost. For example, most people try and make their tests DRY (which is an abuse of DRY because it should only apply to concepts, not code, but I digress) while they should instead be making them DAMP. Each test should be able tell a story without jumping up and down around the file and outside the file. It&#x27;s a lot more dangerous to misunderstand a test than it is to have a little bit of code duplication in your tests.<p>When I come across a project that has no documentation, I look at the tests. This isn&#x27;t an excuse not to write proper documentation of course.