What Is a Continuous Test Stack
A continuous test stack connects every stage of manufacturing test into one integrated workflow: writing tests, deploying them to stations, executing on the production floor, collecting data, and analyzing results. Instead of disconnected tools at each stage, a continuous stack feeds data from production back into test development, creating a loop that improves test quality over time.
The Fragmented Stack Problem
Most manufacturing test operations look like this:
| Stage | Tool | Data Format | Connection to Next Stage |
|---|---|---|---|
| Write tests | Text editor or IDE | Python/LabVIEW files | Manual copy to station |
| Deploy to stations | USB drive or shared folder | Executable or script | None |
| Execute tests | Test executive (OpenHTF, TestStand) | Internal format | CSV export or local DB |
| Store results | File server or spreadsheet | CSV, Excel | Manual report generation |
| Analyze | Excel, custom scripts | Charts, pivot tables | Email to engineering |
| Improve | Engineer reads report, updates test | Back to step 1 | Manual, delayed |
Every handoff between stages is manual. Data changes format. Context is lost. The feedback loop from production data back to test improvement takes weeks or months.
The Continuous Stack
A continuous test stack eliminates the handoffs:
| Stage | How It Works | Feedback Loop |
|---|---|---|
| Write tests | Python scripts in Git | Production failure data informs what to test next |
| Deploy to stations | pip install or Docker pull | Version-controlled, reproducible |
| Execute tests | OpenHTF runs phases, streams results | Real-time operator UI |
| Store results | Automatic upload to TofuPilot | Structured, searchable, traceable |
| Analyze | Live dashboards, automated alerts | Immediate visibility |
| Improve | Engineer sees data, updates test, pushes to Git | Hours, not weeks |
The key difference: data flows automatically from execution to analysis, and insights flow back to development. There's no manual export step, no Excel processing, no emailed reports.
Components of a Continuous Test Stack
| Component | Purpose | Open Source Option |
|---|---|---|
| Test framework | Sequence and execute test phases | OpenHTF, pytest |
| Version control | Track test script changes | Git |
| Package management | Deploy test scripts to stations | pip, Docker |
| Data platform | Store and query test results | TofuPilot |
| Operator interface | Production floor UI | TofuPilot streaming |
| Analytics | Yield, SPC, Pareto, trends | TofuPilot Analytics |
| Alerting | Notify on yield drops or drift | TofuPilot alerts |
Prerequisites
- Python 3.10+
- OpenHTF installed (
pip install openhtf) - TofuPilot Python SDK installed (
pip install tofupilot) - Git for version control
Step 1: Write Tests in Git
Keep test scripts in a Git repository. Every change is tracked, reviewable, and reversible.
import openhtf as htf
from openhtf.util import units
@htf.measures(
htf.Measurement("output_voltage_V")
.in_range(minimum=4.9, maximum=5.1)
.with_units(units.VOLT),
htf.Measurement("current_draw_mA")
.in_range(minimum=90, maximum=110)
.with_units(units.MILLIAMPERE),
)
def phase_electrical(test):
"""Production electrical test."""
test.measurements.output_voltage_V = 5.01
test.measurements.current_draw_mA = 99.3Step 2: Deploy with pip
Package your tests as a Python package. Stations install or update with one command.
pip install --upgrade your-test-packageThis replaces the USB drive workflow. Every station runs the same version. Updates are traceable.
Step 3: Stream Results to TofuPilot
Connect the test to TofuPilot. Results flow automatically from every station to a central platform.
from tofupilot.openhtf import TofuPilot
test = htf.Test(phase_electrical)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scan serial: "))Step 4: Close the Loop
The continuous part: use production data to improve tests.
| Signal in TofuPilot | Action |
|---|---|
| Phase with 0% failure rate for 10K units | Consider removing from production test |
| Measurement consistently at 99% of limit | Investigate design margin, adjust limit |
| Yield drop after test script update | Git blame the change, revert if needed |
| New failure mode appears | Add a test phase to catch it |
| Station 3 has lower yield than stations 1-2 | Investigate fixture or equipment on station 3 |
Each action results in a code change in Git, a new deployment to stations, and the cycle continues. The stack is continuous because data flows in a loop, not a line.
Continuous Stack vs Point Solutions
| Approach | Pros | Cons |
|---|---|---|
| Point solutions (TestStand + custom DB + Excel) | Each tool is best-in-class for its stage | No integration, manual handoffs, data silos |
| Continuous stack (OpenHTF + Git + TofuPilot) | Integrated data flow, fast feedback loops | Requires upfront architecture decisions |
| Custom-built everything | Perfectly tailored | Expensive to build and maintain |
The continuous stack approach trades some per-tool flexibility for end-to-end integration. The ROI comes from faster feedback loops: when you can go from "yield dropped" to "root cause identified" to "fix deployed" in hours instead of weeks, the investment pays for itself quickly.