B Duncan Ltd
Automation Testing System
A scalable, Python-based platform for automated device validation.
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
Test Automation
Prefer it delivered as a service? We design the test strategy, build the rigs, and run the validation campaigns for you.
Motor Control
Drive validation is the platform’s most common application, running motor-control products continuously across temperature, load, and product lifetime.
SDK
The diagnostics interface the test system drives comes straight from our in-house firmware SDK, so nothing is bolted on.
Want to see it on your product?
Tell us what needs validating and we’ll show you how the system would run it.