Integration tests with test server in GraphQL - Time & Space Complexity
When running integration tests with a test server, we want to know how the time to complete tests changes as we add more test cases or data.
We ask: How does the test execution time grow when the test inputs get bigger?
Analyze the time complexity of the following GraphQL integration test snippet.
query GetUsers {
users {
id
name
posts {
id
title
}
}
}
This query fetches all users and their posts from the test server during integration testing.
Look for repeated actions in the query execution.
- Primary operation: Fetching each user and then fetching each post for that user.
- How many times: For each user (n users), the server fetches their posts (m posts per user).
As the number of users and posts grows, the total work grows too.
| Input Size (users n, posts m) | Approx. Operations |
|---|---|
| 10 users, 5 posts each | 10 + (10 * 5) = 60 |
| 100 users, 5 posts each | 100 + (100 * 5) = 600 |
| 1000 users, 5 posts each | 1000 + (1000 * 5) = 6000 |
Pattern observation: The operations grow roughly in proportion to the number of users times their posts.
Time Complexity: O(n * m)
This means the time grows with the number of users multiplied by the number of posts per user.
[X] Wrong: "The query time grows only with the number of users, not posts."
[OK] Correct: Each user's posts are also fetched, so posts add extra work that grows with their count.
Understanding how test queries scale helps you write efficient tests and spot slow points in real systems.
What if the query only fetched users without their posts? How would the time complexity change?