There are many types of tests, the following is an opinionated short list of them:
1) UNIT TESTS
Unit tests are very very very important.
They tell the developer immediately where he is wrong and also they will defend the code against unwanted changes and bugs in the future, like many small powerful soldiers.
2) ACCEPTANCE TESTS
Acceptance test are also very important because they are defined by or with the product owners and they contain the actual functionality expected from the business.
3) INTEGRATION TESTS
Integration tests are less important, but still important. They are there to test “happy paths” and make sure communication between components is fine. Communication NOT functionality!
They are difficult to maintain, to mock, to extends. Slow to run. Hard to understand. They corrupt code coverage. They give big false positive thinking.
I know what you are thinking.....the maiden flight of the Ariane 5 launcher failure, still I'm not a big fan of these.
4) PERFORMANCE & STRESS TESTS
Performance and stress tests are important, as you can imagine they test your software under extreme circumstances. They tell you if you met the product owner expectations in terms of SLA and Throughput, and they tell you also if you introduced some kind of nasty bottleneck before going to production.
Keep them simple, automate them, and run them against a production-like environment.
5) MANUAL UAT TESTS
And finally manual UAT tests, that are normally run by product owners to verify that everything is cool and ready to make the business rich.