DEV Community

Cover image for How to create a test ecosystem
Will Drygla
Will Drygla

Posted on

1 1 1 1 1

How to create a test ecosystem

As a QA Engineer, I have developed a robust test ecosystem that ensures the reliability and efficiency of our software. This ecosystem comprises multiple layers of testing, supported by shared libraries and exported modules. Below, I will explain the architecture, its components, and how they interact to maintain a high-quality standard in our software testing strategy.

The test ecosystem consists of four top-level testing strategies:

  • API Tests
  • Performance Tests
  • End-to-End (E2E) Tests
  • Manual Load Tests

These top-level tests leverage a set of shared libraries and exported modules to facilitate efficient test execution and data management.

Shared Libraries (LIBS)
These are essential utilities and tools that provide core functionalities:

  • QA-Utils: A collection of utilities for authentication, database connections, and entity management.
  • DB Operations: Handles database interactions including seeding and querying.
  • Massive Data Generator: Automates large-scale data generation for performance and load tests.

Exported Modules
These modules encapsulate specific functionalities and are consumed across different tests:

  • DB Operations - Seeder: Inserts test data into the database.
  • DB Operations - Queries: Validates and retrieves test data from the database.
  • QA-Utils - Entities: Defines data structures used across different tests.
  • QA-Utils - DB Connection: Manages the database connection as a singleton instance.
  • QA-Utils - Cognito Auth: Handles authentication using AWS Cognito.

Each type of test consumes specific modules based on its requirements.

API Tests

  1. Utilize QA-Utils - Cognito Auth to validate user tokens.
  2. Use DB Operations - Seeder to insert initial test data.
  3. Leverage DB Operations - Queries to validate test results in the database.

Performance Tests

  1. Utilize QA-Utils - Cognito Auth to validate user tokens.
  2. Use Massive Data Generator to create initial test data for performance evaluation.

E2E Tests

  1. Utilize QA-Utils - Cognito Auth to validate user tokens.
  2. Use DB Operations - Seeder to create initial test data required for automated workflows.

Manual Load Tests

  1. Use Massive Data Generator to create the necessary volume of test data to simulate real-world load conditions.

To streamline data creation and validation, the following internal dependencies exist:

Massive Data Generator relies on the Seeder module to insert bulk data efficiently.

Seeder consumes both DB Connection and Entities from QA-Utils to maintain consistency and reliability in test data setup.

Conclusion

This well-structured test ecosystem ensures that testing is automated, scalable, and efficient. By modularizing key functionalities and utilizing shared libraries, we achieve a seamless integration between different types of tests. This approach not only reduces redundancy but also enhances maintainability, making our software testing process robust and future-proof.

This mind map shows how the top level uses interacts with the libs

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more