# Savings Calculation

**Test Optimization** is a core SeaLights functionality designed to accelerate development velocity by identifying and skipping tests that are not impacted by recent code changes. By analyzing the delta between builds, SeaLights intelligently recommends a subset of the test suite that is relevant to the specific code modified, ensuring quality while drastically reducing execution overhead.

The "savings" metrics within SeaLights provide a transparent view of the time and resources conserved by transitioning from traditional, exhaustive testing to an optimized, impact-based approach.

### Core Metrics Definitions

To provide a precise view of optimization efficiency, SeaLights utilizes the following metrics:

* **Original Time:** The total compute time it would have taken to execute the entire relevant test suite if no optimization was applied.
* **Actual Time:** The total compute time actually spent executing the tests that ran in the optimized cycle.
* **Saved Time:** The total compute time conserved. This specifically accounts for the time of tests recommended for skipping by SeaLights and that were actually skipped.
* **Original Test Count:** The total number of tests in the suite before optimization.
* **Actual Test Count:** The number of tests that were actually executed in the optimized run.
* **Saved Test Count:** The number of tests recommended for skipping by SeaLights that were not executed.

{% hint style="info" %}
**Note on "Compute Time"** \
Compute time refers to the total machine time required to run tests, not the elapsed "wall-clock" time. In parallel environments, if 10 machines run for 1 minute each, the compute time is 10 minutes, even if the user only waited 1 minute.
{% endhint %}

### Calculating Optimization Savings

#### **1. Estimating "Original" Values**

To determine what the run *would* have looked like without optimization:

* For tests that **ran**: SeaLights uses their real execution duration.
* For tests **skipped by Test Optimization**: SeaLights estimates their duration by calculating the average of their last five historical runs.
* Only tests reported in the current execution context are included, ensuring deleted or obsolete tests do not skew the data.

#### **2. The Savings Formula**

The percentage of savings is the primary KPI for the efficiency of your optimization policy.

**Time Savings Percentage:** The formula calculates the ratio of skipped time relative to the total potential time:

$$
\text{% Savings (Time)} = 1 - \left( \frac{\text{Actual Time}}{\text{Actual Time} + \text{Skipped by SeaLights Time}} \right)
$$

**Count Savings Percentage:** The same logic applies to the volume of tests:

$$
\text{% Savings (Count)} = 1 - \left( \frac{\text{Actual Test Count}}{\text{Actual Test Count} + \text{Skipped by SeaLights Count}} \right)
$$

#### **3. Defining Saved Time**

SeaLights is strict about what constitutes "Savings." **Saved Time** only accounts for the time of tests that met two criteria:

1. They were officially recommended to be skipped by the SeaLights analysis.
2. They were actually skipped (not executed) in the build.

***

### FAQ

<details>

<summary><strong>Why doesn't "Saved Time" always equal "Original Time - Actual Time"?</strong> </summary>

"Saved Time" is specifically tied to SeaLights' recommendations. If a test was skipped for other reasons (e.g., manually disabled in code or failed due to environment issues before the test started), it is not credited to SeaLights Test Optimization savings.

</details>

<details>

<summary><strong>How does SeaLights handle new tests?</strong></summary>

New tests have no historical data. SeaLights typically defaults to running new tests to establish a baseline and ensure coverage, meaning they will contribute to "Actual Time" and "Actual Test Count" in their first run.

</details>

<details>

<summary><strong>What happens if a test's execution time fluctuates wildly?</strong></summary>

SeaLights uses a rolling average of the last five runs to smooth out environmental noise and provide the most accurate "Original Time" estimate possible.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sealights.io/knowledgebase/test-optimization/savings-calculation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
