OpenTest consists of three components:

  • The OpenTest server - a Node.js application that orchestrates the test execution, implements the OpenTest web UI and exposes an API that can be used to integrate with external systems (CI/CD, advanced reporting, test management, etc.)

  • The test actor - a Java application that executes test steps, as instructed by the OpenTest server. There can be multiple actors participating in the same test and actors can be deployed on any machine in any network, or in the cloud. The test actor communicates with the OpenTest server through the server’s HTTP API. The communication is always initiated by the actor, which greatly simplifies the setup in scenarios where the actors are running behind a firewall or in a network that is not accessible from the machine running the sync server (which is the case for many labs and test environments).

  • The test repository - a directory with a predefined structure, typically under source control, containing the various test assets (test files, data files, scripts, test session templates, etc.).

OpenTest high-level architecture
Figure 1. OpenTest high-level architecture

This architecture makes OpenTest adaptable to a large number of test automation scenarios and environments and enables a number of useful features, the most notable of which being distributed testing and parallelization.