Overview

What the system does

The system connects to devices over serial or wireless interfaces, drives them through defined test sequences, and captures both the device’s own internal data and external instrument measurements. Tests are scripted in Python, held in source control alongside the firmware, and triggered from CI.

It has run over a million tests on client motor-control products, on rigs running 24/7 across 20 or more units at a time.

Architecture

What the system is made of

Source control

Firmware, test scripts, configuration, and analysis all in Git, so any result traces to the build that produced it.

CI scheduling

Jenkins owns the schedules, resolves contention for shared resources, and triggers on release or on a cron.

Test nodes

Raspberry Pi nodes and PCs run the tests and hold the link to the device. Capacity grows by adding nodes.

Instruments

Dynos, torque sensors and encoders, programmable AC and DC power supplies, bench multimeters, function generators, mixed-signal oscilloscopes, power profilers, and NI DAQ cards.

Environmental

Ovens and freezers driven by the same scheduler for thermal cycling.

Data and analysis

One HDF5 database per run on a network store, with automated summaries, fault breakdowns, and trend plots.

Capabilities

What it validates

Testing conditions

  • Characterize behaviour across a matrix of operating conditions.
  • Environmental testing with ovens and freezers.
  • Reproduce intermittent issues by concentrating on high-risk areas.

Stress and lifetime

  • Lifetime testing over extended periods, unattended.
  • High power-cycling rates.
  • Stress specific regions of the electronics and firmware.

Performance and reliability

  • Worst-case memory and CPU usage.
  • Stability of power supplies and control loops.
  • Failure rates and signal-to-noise ratios on well-defined signals.

Integration

  • Real-time feedback validation and system-integration testing.
  • Trigger from cloud pipelines on a firmware release.
  • Scenario frameworks including python-behave for readable test definitions.

Design decisions

Two things that make it different

The device reports its own internals Rather than instrumenting from outside, we add diagnostics to the firmware so the device streams its own state. On most projects this removes the need for external DAQ hardware entirely, and it captures data no external probe could reach.

Raw data is retained, not reduced Results are stored per run rather than collapsed to pass or fail. This has repeatedly allowed us to answer questions raised months later, including trend analysis across millions of runs that identified temperature-dependent ADC error nobody was looking for at the time.

Related

Related