Sobes.tech
Senior

How to test the entire service flow (E2E/Integration)?

sobes.tech AI

Answer from AI

To test the entire service flow (E2E or integration testing), it is necessary to verify the operation of all components together, as in a real environment.

Main steps:

  • Set up a test environment that closely resembles production: database, external services (you can use mock services or test instances).

  • Run the service as a whole (for example, via Docker or locally) so that it can accept real requests.

  • Write tests that go through all layers:

    • Sending HTTP requests to the API
    • Checking interaction with the database
    • Checking integration with external systems
  • Use frameworks for E2E testing, for example, in Java — Spring Boot Test with @SpringBootTest annotations, Testcontainers for dependency setup in containers.

  • Automate test runs in CI/CD to ensure stability during changes.

Example using Spring Boot Test and Testcontainers:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Testcontainers
public class E2ETest {

    @Container
    public static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:13");

    @LocalServerPort
    private int port;

    @Test
    public void testFullFlow() {
        // Send HTTP request to the service
        RestTemplate restTemplate = new RestTemplate();
        String url = "http://localhost:" + port + "/api/resource";

        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

        // Check the response
        assertEquals(HttpStatus.OK, response.getStatusCode());

        // Additionally, you can check the database state
    }
}

This approach allows testing the service as a whole, including interaction with infrastructure.