What UDS testing is, every ISO 14229 service explained, and how to automate session management, security access, DID validation, fault memory, and flash programming.

UDS (Unified Diagnostic Services) testing is the automated validation of ISO 14229-compliant diagnostic communication between a tester and an ECU - verifying that the ECU correctly handles diagnostic service requests, responds with correct PDUs, and manages session states, security access, and timing within specification.
UDS (ISO 14229) defines 22 diagnostic services used by every automotive OEM and Tier-1 supplier: session management, DID read/write, fault memory operations, ECU reset, security access, routine control, communication control, software download, and more. Every ECU in a modern vehicle implements a subset of these services - testing that implementation is the purpose of UDS testing.
Why UDS testing is critical: Incorrect UDS implementation blocks field diagnosis, prevents software updates, fails ISO 26262 validation evidence requirements, and can trigger regulatory non-compliance for OBD2-connected vehicles. A 22-block UDS test suite run overnight catches these defects before the ECU reaches a vehicle integration lab.
TestBot's UDS Client Agent implements all 22 services. Each is a configurable test block.
| Service ID | Service Name | What It Tests |
|---|---|---|
| 0x10 | DiagnosticSessionControl | Transition between Default, Extended, and Programming sessions; session timeout behaviour |
| 0x11 | ECUReset | Hard reset, soft reset, key-off-on - ECU restart behaviour and recovery time |
| 0x14 | ClearDiagnosticInformation | DTC memory clear, confirmation response, post-clear behaviour |
| 0x19 | ReadDTCInformation | DTC read by status mask, by record number, snapshot data - fault memory content validation |
| 0x22 | ReadDataByIdentifier | DID value read, scaling, offset, multi-DID batching |
| 0x23 | ReadMemoryByAddress | Raw memory read at specified address and length |
| 0x24 | ReadScalingDataByIdentifier | DID scaling data - units, formula, display range |
| 0x27 | SecurityAccess | Seed/key exchange, algorithm validation, attempt counter, lockout behaviour |
| 0x28 | CommunicationControl | Enable/disable TX/RX, network management message control |
| 0x2A | ReadDataByPeriodicIdentifier | Periodic DID scheduling, rate validation |
| 0x2C | DynamicallyDefineDataIdentifier | Dynamic DID composition from DIDs and memory addresses |
| 0x2E | WriteDataByIdentifier | DID write, range validation, write-protected DID rejection |
| 0x2F | InputOutputControlByIdentifier | IO control activation, return-to-normal, input substitution |
| 0x31 | RoutineControl | Start/stop/result for diagnostic routines - flash erase, checksum verification |
| 0x34 | RequestDownload | Flash download initiation - address, length, compression method |
| 0x35 | RequestUpload | ECU data upload initiation |
| 0x36 | TransferData | Chunk-by-chunk data transfer, block sequence counter validation |
| 0x37 | RequestTransferExit | Transfer completion, final checksum |
| 0x38 | RequestFileTransfer | File-based transfer for applicable ECUs |
| 0x3D | WriteMemoryByAddress | Raw memory write at specified address |
| 0x3E | TesterPresent | Keep-alive during long operations - session timeout prevention |
| 0x85 | ControlDTCSetting | Enable/disable DTC storage - used during calibration and parameter write sequences |
TestBot's UDS Client Agent implements all 22 ISO 14229 services as drag-and-drop test blocks. The UDS Server Agent simulates an ECU responding to diagnostic requests. Both run over the CAN Adapter.
| Scenario | UDS Services Used | Validated Outcome |
|---|---|---|
| ECU Startup Diagnostic Check | 0x10 (Default Session) + 0x19 (ReadDTC) | No unexpected DTCs after cold start, all required DIDs readable |
| Security Access Sequence | 0x27 (SecurityAccess) + Seed/Key Algorithm | Seed received, key computed correctly, Extended session granted |
| Flash Programming Cycle | 0x10 (Programming Session) + 0x27 + 0x31 (Erase) + 0x34-0x37 | All blocks written, CRC verified, ECU boots correctly post-flash |
| Fault Injection + DTC Read | I/O Module fault injection + 0x19 (ReadDTC) + 0x14 (ClearDTC) | Correct DTC stored with freeze frame, cleared correctly, no ghost DTCs |
| DID Write Validation | 0x10 (Extended Session) + 0x27 + 0x2E (WriteDID) | All writable DIDs accept valid values, reject out-of-range, honour write-protection |
| Communication Control | 0x28 (CommControl) + CAN Monitor | TX suppressed on command, RX unaffected, NM messages handled correctly |

UDS testing is the automated validation of ISO 14229 Unified Diagnostic Services communication between a tester and an ECU. It verifies that the ECU correctly handles all implemented diagnostic service requests - session management, DID read/write, fault memory operations, security access, routine control, and flash programming - and responds with correct PDUs within timing specification.

The underlying transport layer for UDS over CAN - frame validation, DBC testing, fault injection.

ISO 13400 - UDS over Ethernet for EV and ADAS ECUs. Zero hardware required.

ISO 15031 - OBD-II diagnostic services that overlap with UDS for emissions-related ECUs.
All 22 ISO 14229 services. Drag-and-drop or Python. 14-day free trial.