Skip to content
Test Data & Analytics

What Is Test Observability

Test observability gives full visibility into what your test systems are doing, why they fail, and how they perform. Learn how it applies to manufacturing test.

JJulien Buteau
intermediate7 min readMarch 14, 2026

What Is Test Observability

Test observability is the ability to understand what your test systems are doing, why units are failing, and how station performance is changing, all from the data the systems produce. It borrows from software engineering's observability concept (logs, metrics, traces) and applies it to manufacturing test. This guide covers what test observability means, how it differs from test data management, and what it looks like in practice.

Observability vs Data Management

AspectTest Data ManagementTest Observability
FocusStoring and retrieving test recordsUnderstanding system behavior in real time
Question answered"What happened to this unit?""Why is yield dropping right now?"
Data useCompliance, traceability, auditsDebugging, optimization, early warning
TimelinessAfter the fact (batch reports)Real-time (streaming dashboards)
ScopeIndividual test resultsSystem-wide patterns and correlations

Test data management answers: did this unit pass? Test observability answers: why are 15% of units failing phase_voltage_check on station 3 since Tuesday?

The Three Pillars of Test Observability

Borrowing from software observability, test observability has three pillars:

1. Measurements (Metrics)

Structured measurement data with units, limits, and timestamps. This is the equivalent of application metrics in software.

MetricWhat It Shows
First pass yield per stationStation health
Measurement distribution per phaseProcess stability
Cycle time per unitThroughput efficiency
Failure rate per test stepWhere defects concentrate
Marginal rate per measurementEarly warning of drift

2. Test Records (Logs)

Detailed records of every test run: serial number, phases executed, measurements collected, pass/fail decisions, timestamps, and errors.

Record FieldWhy It Matters
Serial numberLinks test data to the physical unit
Phase sequenceShows exactly what ran and in what order
Measurement valuesThe actual data for analysis
Error messagesWhat went wrong when a phase failed
Station IDWhich equipment ran the test
Firmware/software versionWhich test script version was used

3. Traces (Correlation)

The ability to trace a unit's journey across test stages: IQC, assembly, FCT, EOL, ORT. Traces connect upstream events to downstream outcomes.

TraceWhat It Reveals
Unit historyEvery test this serial number has ever been through
Lot traceabilityAll units from the same component lot
Station correlationWhether failures cluster on specific stations
Temporal correlationWhether failures cluster at specific times

What Observable Test Systems Look Like

Without Observability

The test engineer gets a call: "yield dropped on line 2." They walk to the station, review logs, export data to Excel, build charts, and three hours later identify the root cause.

With Observability

The test engineer sees an alert: "yield on station 3 dropped below 90% in the last hour. Top failure: phase_voltage_check. Measurement distribution shifted 200mV compared to yesterday." They open the dashboard, see the shift, correlate it with a supplier lot change at IQC, and contain the issue in minutes.

Prerequisites

  • Python 3.10+
  • OpenHTF installed (pip install openhtf)
  • TofuPilot Python SDK installed (pip install tofupilot)

Step 1: Instrument Your Tests

Every test phase should produce structured measurements. This is the foundation of observability.

observable_test.py
import openhtf as htf
from openhtf.util import units


@htf.measures(
    htf.Measurement("supply_voltage_V")
    .in_range(minimum=4.9, maximum=5.1)
    .with_units(units.VOLT),
    htf.Measurement("supply_current_mA")
    .in_range(minimum=90, maximum=110)
    .with_units(units.MILLIAMPERE),
)
def phase_power_check(test):
    """Measure and validate power supply characteristics."""
    test.measurements.supply_voltage_V = 5.01
    test.measurements.supply_current_mA = 98.5


@htf.measures(
    htf.Measurement("signal_amplitude_V")
    .in_range(minimum=1.8, maximum=2.2)
    .with_units(units.VOLT),
)
def phase_signal_check(test):
    """Measure output signal amplitude."""
    test.measurements.signal_amplitude_V = 2.01

Step 2: Stream to TofuPilot

TofuPilot provides the observability layer. Every run streams in real time with full measurement detail.

observable_test.py
from tofupilot.openhtf import TofuPilot

test = htf.Test(
    phase_power_check,
    phase_signal_check,
)

with TofuPilot(test):
    test.execute(test_start=lambda: input("Scan serial: "))

Step 3: Monitor and Respond

TofuPilot provides the observability tools:

ToolWhat It Shows
Yield dashboardReal-time FPY across stations and procedures
Failure ParetoWhich test steps fail most, ranked by frequency
Measurement distributionsHistograms with limit overlays for every measurement
Control chartsSPC charts detecting out-of-control conditions
Station comparisonSide-by-side performance across stations
Unit historyFull test trace for any serial number
AlertsNotifications when yield drops below threshold

Observability Maturity Levels

LevelCapabilityQuestion Answered
1. LoggingTest results are stored"Did this unit pass?"
2. MonitoringDashboards show yield and throughput"How is the line performing?"
3. AlertingNotifications on yield drops or measurement drift"Is something going wrong right now?"
4. DebuggingDrill down into failures, correlate across stations and lots"Why is this happening?"
5. PredictingUse patterns to forecast future failures"What will happen next?"

Most manufacturing operations are at level 1 or 2. Levels 3-4 are where test observability delivers the highest ROI. Level 5 is where predictive quality begins.

More Guides

Put this guide into practice