QA ATLAS Releasestrategy QA LVL3 Systemtests
Originally
ADR-0050 QA_ATLAS-ReleaseStrategy-QA-LVL3-SystemTests (v7) · Source on Confluence ↗Release Strategy - QA - Level 3 - System Tests
Context
System tests are a critical phase in the software development lifecycle. These tests evaluate a complete, integrated software system to ensure it meets specified requirements and performs as expected. For the Atlas this software system takes the form of an Airflow Directed Acyclic Graph (DAG).
The Airflow DAG can be seen as an application responsible for the loading of data, its transformation in accordance with business rules, and the storage of the results within the data lake layer. It consists of a sequence of various Airflow tasks and PySpark scripts, each of which undergoes separate testing at lower levels.
Application
Tests on that level should be performed with treating the Airflow DAG as a black box. Those test should be run on a separate airflow environment. Within this isolated environment critical adjustments are made, such as redirecting HTTP connections to interact with fabricated data sources and modifying bucket references to target mock storage locations.
Once these configurations are in place, the Airflow DAGs are executed and rigorously validate whether the fake data generation aligns with the expected output, thereby confirming the system’s behavior under these controlled conditions. This systematic approach allows us to thoroughly assess the software system’s functionality and reliability.
This can be described as 4 steps:
- Prepare fake data for each DAG (inputs and expected outputs)
- Mock Airflow HTTP Connectors config to point to fake data
- Mock Airflow Buckets config to point to fake data
- Examine if the DAG results matches the expected output
Main goals of this test level
System tests are crucial within Atlas test strategy as they validate the entire integrated system. These tests serve as evidence that the system has been thoughtfully designed to effectively manage the specific data it was created to support. Ultimately this test level gives a final proof if the change done to the system has any impact on the produced output.
This test level gives an answer to the question:
Is the system handling correctly the data we expect it to handle?