skip to Main Content

What can we call the testing described below?
Integration testing, functional testing, or E2E testing?

It’s a set of tests that call the server’s APIs to simulate the user’s workflow. This test uses real server components, such as running PostgreSQL, Redis, and ElasticSearch using Docker Compose. However, this test doesn’t cover the client’s behavior.

I’ve seen this kind of test many times, and some say it’s functional testing, while others say it’s E2E testing.

In the sense that it simulates the user’s workflow, we can call it E2E testing. However, since it doesn’t cover the client’s (UI) behavior, some say it’s not E2E testing.

So is it functional testing? But some say functional testing focuses on one product function. In that sense, it’s not functional testing as it covers multiple product functions to follow the user’s workflow.
Then, is the safest way to call this just integration testing?

2

Answers


  1. The type of testing described in your scenario can be considered as "Integration Testing."

    Here’s why:

    1.It calls the server’s APIs: Integration testing focuses on verifying the interactions and data exchanges between different components or services in an application. In your case, calling the server’s APIs involves testing how the server components interact with each other, making it an integration test.

    1. Simulates user’s workflow: End-to-End (E2E) testing also simulates the user’s workflow, but E2E tests typically cover the entire application stack, including the frontend (UI) and backend. In your case, the testing doesn’t cover the client’s behavior, which means it’s not fully end-to-end.

    2. Real server components: Using real server components like PostgreSQL, Redis, and ElasticSearch in Docker Compose indicates that the focus is on testing the interactions between these real server components, which aligns with integration testing.

    Functional testing typically involves testing specific functions or features of the application in isolation. Since your tests simulate the user’s workflow across multiple product functions, it doesn’t fully fit the definition of functional testing.

    In conclusion, the safest and most accurate way to categorize this type of testing is "Integration Testing." However, testing terminology can vary between different teams or organizations, so it’s essential to have clear and agreed-upon definitions within your team to avoid confusion.

    Login or Signup to reply.
  2. These all are not mutually exclusive. I think there are several good candidates: System Functional Tests, API Functional Tests or even System API Functional Tests. Naming conventions in testing are far from perfect, please read Holes in testing terminology: Test Types and Test Levels.

    The goal of the tests

    If you’re testing the functionality with these tests – they are Functional Tests. If you’re testing performance – they are Performance Tests. If your focus it the API compatibility between systems, data formats, etc – these are Integration Tests*.

    The level

    You can do Unit, System testing, or something in-between (I call those Component Tests). You can come up with your own name for the level. Probably System Testing would be appropriate (because you deploy the system on a real env) or API testing (because that’s what you’re using). If you have other types of System tests, I’d call these System API Tests.

    *Note, that Integration Testing is a very overloaded term. People call all sorts of tests Integration Tests in practice.

    PS: E2E is a quite vague term. To me it doesn’t seem like what you’re doing is actually E2E.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search