Test Fixture Design and Management with TofuPilot
The test fixture is the most underappreciated part of hardware test infrastructure. A worn pogo pin or a loose cable causes more false failures than bad product. TofuPilot helps you monitor fixture health through measurement trends and station-specific analytics.
What Makes a Test Fixture
A test fixture connects the DUT (device under test) to the test instruments. It typically includes:
| Component | Purpose | Failure mode |
|---|---|---|
| Pogo pins / spring probes | Electrical contact to DUT | Wear, contamination, broken springs |
| Alignment hardware | Position DUT consistently | Wear, loosening over time |
| Cable harness | Connect fixture to instruments | Broken wires, loose connectors |
| Pneumatic actuator | Clamp DUT against probes | Seal failure, pressure loss |
| Guide pins | Align PCB to probe positions | Wear, bending |
Monitoring Fixture Health Through Test Data
You don't need dedicated fixture tests. Your production test data already contains fixture health signals.
Contact Resistance as a Health Indicator
If your test includes a continuity or resistance measurement, track it per station.
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# This measurement doubles as a DUT test AND a fixture health indicator
client.create_run(
procedure_id="BOARD-FUNCTIONAL",
unit_under_test={"serial_number": serial},
run_passed=True,
steps=[{
"name": "Contact Verification",
"step_type": "measurement",
"status": True,
"measurements": [
{"name": "probe_contact_mohm", "value": 35, "unit": "mohm", "limit_high": 100},
],
}],
)Track probe_contact_mohm per station over time:
| Week | Station 1 | Station 2 | Station 3 |
|---|---|---|---|
| 1 | 25 mohm | 28 mohm | 30 mohm |
| 4 | 28 mohm | 30 mohm | 45 mohm |
| 8 | 30 mohm | 32 mohm | 72 mohm |
| 12 | 32 mohm | 35 mohm | 95 mohm |
Station 3's contact resistance is climbing fast. Service the pogo pins before it hits the 100 mohm limit and starts causing false failures.
Measurement Variance as a Health Indicator
Even when measurements pass, increasing variance signals fixture problems.
A voltage measurement that bounces between 3.29V and 3.33V has more variance than one that reads 3.31V consistently. High variance on a specific station means something is intermittent: a loose wire, a dirty probe, or a worn alignment pin.
Cycle Time as a Health Indicator
If a test normally takes 42 seconds and starts taking 55 seconds on one station, something changed:
- Pneumatic actuator slowing down (low air pressure, seal wear)
- Instrument communication timeout (loose cable, aging connector)
- Retry loops from intermittent contacts
Fixture Lifecycle Tracking
Maintenance Schedule Based on Data
Replace calendar-based maintenance with data-driven maintenance.
| Approach | Schedule | Basis |
|---|---|---|
| Calendar-based | Every 3 months | Time elapsed |
| Count-based | Every 50,000 cycles | Insertion count |
| Condition-based | When data shows degradation | Measurement trends |
Condition-based maintenance costs less and catches problems earlier. TofuPilot's measurement trends tell you which fixtures need attention now and which are fine.
Tracking Pogo Pin Life
Pogo pins have a rated cycle life (typically 100,000-1,000,000 cycles). Track cycles per fixture.
# Track fixture cycle count alongside DUT test
client.create_run(
procedure_id="BOARD-FUNCTIONAL",
unit_under_test={"serial_number": serial},
run_passed=True,
steps=[{
"name": "Contact Verification",
"step_type": "measurement",
"status": True,
"measurements": [
{"name": "probe_contact_mohm", "value": contact_r, "unit": "mohm", "limit_high": 100},
{"name": "fixture_cycle_count", "value": get_fixture_count(), "unit": "cycles"},
],
}],
)When contact resistance starts rising, check the cycle count. If you're at 80% of rated life, schedule replacement during the next planned downtime.
Fixture Design Best Practices
| Practice | Why |
|---|---|
| Use keyed connectors | Prevent incorrect cable connections |
| Include a "golden board" test point | Verify fixture health independently from DUT |
| Minimize cable length | Reduces noise, improves measurement accuracy |
| Use separate ground pins | Don't rely on one ground contact for the whole fixture |
| Design for probe replacement | Make pogo pins individually replaceable |
| Add alignment features | Ensure consistent DUT positioning |
| Include interlock sensors | Detect when DUT is properly seated |
Golden Board Verification
A "golden board" is a known-good reference board. Run it through the fixture periodically to verify the fixture is working correctly.
# Weekly golden board verification
GOLDEN_SERIAL = "GOLDEN-001"
EXPECTED_VCC = 3.310 # Known value from initial characterization
vcc = measure_voltage()
drift = abs(vcc - EXPECTED_VCC)
client.create_run(
procedure_id="FIXTURE-GOLDEN-BOARD-CHECK",
unit_under_test={"serial_number": GOLDEN_SERIAL},
run_passed=drift < 0.010, # Less than 10mV drift
steps=[{
"name": "Golden Board Verification",
"step_type": "measurement",
"status": drift < 0.010,
"measurements": [
{"name": "vcc_3v3", "value": vcc, "unit": "V", "limit_low": 3.300, "limit_high": 3.320},
{"name": "drift_from_reference_mv", "value": drift * 1000, "unit": "mV", "limit_high": 10},
],
}],
)If the golden board measurement drifts, the fixture or instrument has changed, not the board.
Common Fixture Failures and Detection
| Failure | Detection in TofuPilot | Fix |
|---|---|---|
| Worn pogo pins | Rising contact resistance trend | Replace affected pins |
| Loose cable | Intermittent measurement failures (random, no pattern) | Reseat or replace cable |
| Alignment wear | Increasing measurement variance across all channels | Replace guide pins |
| Contamination | Gradual measurement shift, contact resistance increase | Clean probes and PCB contacts |
| Pneumatic leak | Longer cycle times, intermittent contacts | Replace seals |
Multi-Fixture Management
For production lines with multiple fixtures for the same test:
- Give each fixture a unique identifier
- Track which fixture ran each test (station ID in TofuPilot)
- Compare performance across fixtures
- Rotate golden board checks across all fixtures
If Fixture A has 98% yield and Fixture B has 94% yield on the same product, Fixture B needs attention. TofuPilot's station comparison view shows this at a glance.