diff --git a/testing/system-tests.rst b/testing/system-tests.rst
new file mode 100644
index 0000000..0c64a5d
--- /dev/null
+++ b/testing/system-tests.rst
@@ -0,0 +1,161 @@
+System Testing
+==============
+
+The Aether system is tested using Robot Framework.
+The tests are located inside the aether-system-tests repository and they are run nightly using a Jenkins job.
+
+Test Structure
+--------------
+
+At a high level, functional tests are ran by:
+
+- Configuring ROC with various slices required for tests using pre-defined input data.
+- ROC updates using pre-defined input data with patch updates built with the test framework.
+- Control plane and data plane validated using NG40.
+
+5G
+---
+Functional testing includes multiple slice creations, enable/disable of device groups,
+QoS validations, rate limiting tests (at UE, slice, application), application filtering tests, container restart tests.
+
+4G
+---
+Functional testing includes multiple slice creations, enable/disable of device groups,
+QoS validations, rate limiting tests (at UE, slice, application), application filtering tests, container restart tests.
+
+Development Prerequisites
+-------------------------
+
+Deploying each component is done with the use of Helm.
+Instructions can be found on `this page <https://docs.onosproject.org/onos-docs/docs/content/developers/deploy_with_helm/>`_.
+
+The following steps are needed to deploy the Aether system:
+
+- If applicable, remove ROC, CRDs, and other resources. Fetch Kubernetes config.
+- Deploy SD-Core components
+- Deploy SD-Fabric components
+- Deploy ROC
+- Wait for pods to be up
+- Sync with SD-Core adapter
+
+Running Tests
+-------------
+
+System tests are executed in the following Jenkins views:
+
+`Automated Test Jobs (Nightly) <https://jenkins.aetherproject.org/view/Aether%20System%20Tests/>`_
+
+Tests are executed in the following order after deployment:
+
+- Functional
+- Failure/Restart
+- Cleanup
+
+Test Setup
+----------
+
+.. code-block:: shell
+
+    # Set up virtual environment
+    cd aether-system-tests/
+    make ast-venv
+    source ast-venv/bin/activate; set -u;
+
+Running Tests (4G)
+------------------
+
+Functional, Failure/Restart, and Cleanup are executed similarly.
+Replace `${TEST_FILE}` with the test file to execute.
+This runs all tests in the suite. Add `-i ${TEST_TAG}` to robot arguments to run a specific test case.
+
+.. code-block:: shell
+
+    cd ${WORKSPACE_DIR}
+    robot -d ${WORKSPACE_DIR}/${TEST_TYPE}/robotlogs \
+        --debugfile ${WORKSPACE_DIR}/functionality/robotlogs/${TEST_FILE}_debug \
+        -o ${log_xml} \
+        -l ${log_html} \
+        -r ${report_html} \
+        -e notready \
+        -v ACC_CONTEXT:${accContext} \
+        -v AMP_CONTEXT:${rocContext} \
+        -v ACE_CONTEXT:${aceContext} \
+        -v UPF_NAMESPACE:${upfNamespace} \
+        -v UPF_NAMESPACE2:${upfNamespace2} \
+        -v UPF_NAMESPACE3:${upfNamespace3} \
+        -v PFCP_NAMESPACE:${pfcpNamespace} \
+        -v CORE_TYPE:${coreType} \
+        -v UPF_TYPE:${upfType} \
+        -v UPF_TYPE_NAME:${upfTypeName}\
+        -v NG40_HOST:${ng40Host} \
+        -v NG40_USER:${ng40User} \
+        -v NG40RAN_DIR:${ng40RanDir} \
+        -v NG40TEST_DIR:${ng40TestDir} \
+        -v CSV_DIR:${ng40CsvDir} \
+        -v PCAP_DIR:${WORKSPACE_DIR}/functionality/${pcapDir} \
+        -v NG40_LOG_DIR:${WORKSPACE_DIR}/functionality/${ng40LogDir} \
+        -v CDR_LOG_DIR:${WORKSPACE_DIR}/functionality/${cdrLogDir} \
+        -v CONTAINER_LOG_DIR:${WORKSPACE_DIR}/functionality/${containerLogDir} \
+        -v POD_NAME:${pod} \
+        aether-system-tests/system-tests/tests/4G/functional/${TEST_FILE}.robot || true
+
+Variables
+---------
+
+| `${WORKSPACE_DIR}` - Current workspace directory for Aether System Tests. Used for output logs and PCAPs.
+| `${TEST_TYPE}` - Directories for logs for each test type Ex: functional, failure, cleanup.
+| `${accContext}` - SD-Core context.
+| `${rocContext}` - ROC context.
+| `${aceContext}` - SD-Fabric and UPF context.
+| `${upfNamespace}` - UPF namespace used in tests. Ex: `aether-sdcore-upf1`.
+| `${pfcpNamespace}` - PFCP namespace used in tests. Ex: `tost`.
+| `${coreType}` - 4G or 5G.
+| `${upfType}` - UPF type used in tests. Ex: `bess`. Can also be `${None}` or empty.
+| `${upfTypeName}` - UPF type name used in tests.
+  This affects which input files are used. Ex: `p4`.
+  Can also be `${None}` or empty.
+| `${ng40Host}` - IP address for NG40 host.
+| `${ng40User}` - NG40 User.
+| `${ng40RanDir}` - NG40. RAN directory.
+| `${ng40CsvDir}` - NG40 CSV directory.
+| `${ng40TestDir}` - NG40 tests directory.
+| `${pcapDir}` - Saved PCAP directory.
+| `${cdrLogDir}` - NG40 CDR directory.
+| `${containerLogDir}` - Log directory for each deployed component.
+| `${pod}` - Pod name used in tests. This affects which input files are used. Ex: `qa`, `qa2`.
+
+Running Tests (5G)
+------------------
+5G tests are executed similar to 4G, except using the tests located in the 5G directory.
+
+.. code-block:: shell
+
+    cd ${WORKSPACE_DIR}
+    robot -d ${WORKSPACE_DIR}/${TEST_TYPE}/robotlogs \
+        --debugfile ${WORKSPACE_DIR}/functionality/robotlogs/${TEST_FILE}_debug \
+        -o ${log_xml} \
+        -l ${log_html} \
+        -r ${report_html} \
+        -e notready \
+        -v ACC_CONTEXT:${accContext} \
+        -v AMP_CONTEXT:${rocContext} \
+        -v ACE_CONTEXT:${aceContext} \
+        -v UPF_NAMESPACE:${upfNamespace} \
+        -v UPF_NAMESPACE2:${upfNamespace2} \
+        -v UPF_NAMESPACE3:${upfNamespace3} \
+        -v PFCP_NAMESPACE:${pfcpNamespace} \
+        -v CORE_TYPE:${coreType} \
+        -v UPF_TYPE:${upfType} \
+        -v UPF_TYPE_NAME:${upfTypeName}\
+        -v NG40_HOST:${ng40Host} \
+        -v NG40_USER:${ng40User} \
+        -v NG40RAN_DIR:${ng40RanDir} \
+        -v NG40TEST_DIR:${ng40TestDir} \
+        -v CSV_DIR:${ng40CsvDir} \
+        -v PCAP_DIR:${WORKSPACE_DIR}/functionality/${pcapDir} \
+        -v NG40_LOG_DIR:${WORKSPACE_DIR}/functionality/${ng40LogDir} \
+        -v CDR_LOG_DIR:${WORKSPACE_DIR}/functionality/${cdrLogDir} \
+        -v CONTAINER_LOG_DIR:${WORKSPACE_DIR}/functionality/${containerLogDir} \
+        -v POD_NAME:${pod} \
+        aether-system-tests/system-tests/tests/5G/functional/${TEST_FILE}.robot || true
+
