Software applications typically consist of several components (=a service), which can broken down into a set of features. (A module is actually a subroutine, but is often confused or equated with a component). For larger software projects, several developers are used, each working on different components. By using a program like Jenkins, the components are integrated on a continuous basis, for example in a night run (continuous integration). Thus it can be tested, whether the different components work together as expected.
While the developers of a component usually test and ensure the functionality of a software component in a self-test (module test), the responsibility for the smooth interaction of different components cannot simply be delegated to a single developer. This is usually where the test engineer comes in, who designs and executes test scenarios that check the data exchange between the components (Integration testing). Methodologically, interface tests, but also functional tests, are therefore crucial here.