In Integration Testing the cooperation / interplay / ensemble of multiple, independently developed software components are tested, to assure that they function together as intended.
The borders of Integration Tests are blurry. Any Unit Test, that switches to actual (instead of mocked, stubbed, ..) components becomes an Integration Test. On the upper end, a highly complex Integration Test, that uses most parts of a system, might already be an End-2-End Test.
External “expensive” dependencies are usually simulated (e.g. with test-dummies).
Integration Tests are considered by many to be in the sweet spot between chore’y Unit Tests (that won’t even reveal much about the overall functionality of an application) and “forever running”, hard to write and often fragile End-2-End Tests. Their execution speed + writing effort vs assurance-it-works has “the best score”. If wondering where to start: Start with Integration Tests.