Embedded-Softwaretests auf echter Hardware

Midair führt dieselbe Testsuite auf allen Ihren Boards, Builds und Netzwerkaufbauten aus und speichert die Nachweise jedes Laufs.

In Embedded-Systemen zeigen sich die wichtigen Fehler auf einer Board-Revision, nach einem Update oder unter einer bestimmten Last. Midair zeigt, wo.

fw-smoke auf vier ZielsystemenBeispiel
fw 2.3.0fw 2.4.0fw 2.4.1board rev Aboard rev Bboard rev CQEMU aarch64
board rev A · fw 2.3.0 12 as expected boot/time_to_shell PASSED 6.1 s update/keep_config PASSED
board rev A · fw 2.4.0 12 as expected boot/time_to_shell PASSED 6.1 s update/keep_config PASSED
board rev A · fw 2.4.1 12 as expected boot/time_to_shell PASSED 6.1 s update/keep_config PASSED
board rev B · fw 2.3.0 12 as expected boot/time_to_shell PASSED 6.4 s update/keep_config PASSED
board rev B · fw 2.4.0 12 as expected boot/time_to_shell PASSED 6.4 s update/keep_config PASSED
board rev B · fw 2.4.1 11 as expected, 1 unexpected update/keep_config FAILED expected PASSED console Kernel panic - not syncing after the update
board rev C · fw 2.3.0 12 as expected boot/time_to_shell PASSED 6.4 s update/keep_config PASSED
board rev C · fw 2.4.0 12 as expected boot/time_to_shell PASSED 6.4 s update/keep_config PASSED
board rev C · fw 2.4.1 12 as expected boot/time_to_shell PASSED 6.4 s update/keep_config PASSED
QEMU aarch64 · fw 2.3.0 12 as expected boot/time_to_shell PASSED 2.9 s peripheral tests skipped: no hardware on this target
QEMU aarch64 · fw 2.4.0 12 as expected boot/time_to_shell PASSED 2.9 s peripheral tests skipped: no hardware on this target
QEMU aarch64 · fw 2.4.1 12 as expected boot/time_to_shell PASSED 2.9 s peripheral tests skipped: no hardware on this target

Was Embedded-Tests sind.Software, zusammen mit ihrer Hardware getestet.

Embedded-Tests prüfen Software zusammen mit der Hardware, auf der sie läuft. Dazu gehören das Board, seine Peripherie, das Betriebssystem, das Netz und die anderen Geräte in der Umgebung.

Firmware-Tests sind ein Teil davon. Embedded-Tests prüfen auch, wie sich Treiber, Dienste und Anwendungen auf dem Gerät verhalten und wie sich eine Geräteflotte im Feld verhält.

Die Ergebnisse hängen von der Board-Revision, dem Build, dem Timing und dem Zustand des Geräts ab. Ein brauchbarer Test zeichnet deshalb all das neben dem Ergebnis auf.

Unser Leitfaden (auf Englisch) beschreibt Methoden und typische Fehler ausführlicher: How to test embedded systems.

Teststufen.Vom Arbeitsplatzrechner bis zur Flotte.

Jede Stufe findet Fehler, die die vorherige Stufe nicht sieht. Wählen Sie eine Stufe aus, um zu sehen, was sie findet und wie Midair damit umgeht.

Auf dem Arbeitsplatzrechner

Findet
Logikfehler, Parserfehler, falsche Arithmetik und verletzte Schnittstellenverträge.
Übersieht
Timing, Peripherie und alles, was das echte Board anders macht.
In Midair
Visao analysiert dieselben Quellen mit Ihrer Cross-Toolchain, bevor etwas läuft. Mit dem Profil MISRA C:2012 nennt Visao die Regelnummern.
Mehr lesen

Im Emulator

Findet
Boot-Probleme, Integration ins Betriebssystem und Dienste, die nicht starten.
Übersieht
Echte Peripherie, analoges Verhalten und genaues Timing.
In Midair
Dieselbe Suite läuft auf QEMU mit Snapshots. So gibt es die Tests schon, bevor das Board auf dem Tisch liegt.
Mehr lesen

Auf einem Board

Findet
Fehler in der Peripherie, Timing, Stromausfall und Wiederanlauf nach einem Fehler.
Übersieht
Probleme, für die andere Geräte oder ein Netz rund um das Board nötig sind.
In Midair
Ein Rechner neben dem Board steuert im Test die Stromversorgung, das Flashen, die serielle Konsole und JTAG.
Mehr lesen

Mit der umgebenden Hardware

Findet
Protokollfehler, die Startreihenfolge und Treiber im Zusammenspiel mit echten Geräten.
Übersieht
Seltene Fehler, die erst bei vielen Einheiten auftreten.
In Midair
Test Environment koordiniert in einem Lauf Agenten auf mehreren Rechnern. So gehören das Board, das Netz und die Gegenstellen zum Test.
Mehr lesen

In einer Flotte

Findet
Abweichende Konfigurationen, eine Einheit, die sich von den anderen unterscheidet, und Änderungen nach einem Update.
Übersieht
Ob das ganze Produkt seine Aufgabe für den Nutzer erfüllt.
In Midair
Delta vergleicht jedes Gerät mit einer Baseline und zeigt die Ausreißer in einer Flotte.
Mehr lesen

Als Gesamtsystem

Findet
Das Verhalten des fertigen Produkts in seiner echten Umgebung.
Übersieht
Keine einzelne Stufe kann das ersetzen, denn diese Stufe baut auf den anderen auf.
In Midair
Ein Datensatz pro Lauf hält Befunde im Code, Testergebnisse und Nachweise vom Gerät zusammen.
Mehr lesen

Warum Embedded-Systeme schwerer zu testen sind.Fünf Gründe.

  1. Das Ergebnis hängt von der Hardware ab

    Derselbe Build kann auf einer Board-Revision bestehen und auf einer anderen fehlschlagen.

  2. Das Timing entscheidet

    Eine verspätete Antwort ist ein Fehler, und vielleicht kommt sie nur unter Last zu spät.

  3. Das Gerät zeigt wenig

    Oft gibt es keinen Debugger, nur eine Konsole und ein paar Logs.

  4. Der Zustand bleibt erhalten

    Ein vorheriger Test, eine lange Betriebszeit oder ein halb fertiges Update ändern, was der nächste Test sieht.

  5. Späte Fehler kosten am meisten

    Ein Fehler, der erst nach der Hardware-Integration auftaucht, kann ein neues Board-Design oder ein verschobenes Release bedeuten.

Wie Midair Embedded-Systeme testet.Vier Schritte, ein Datensatz.

  1. 1
    Visao

    Zuerst den Code prüfen

    Visao analysiert C, C++ und Assembler mit Ihrer Cross-Toolchain, auch für Bare-Metal-Ziele. Mit einer Baseline meldet Visao nur neue Befunde.

    visao · arm-none-eabi-gcc · baseline: main
    otp.cpp:20:20  error  arithm/integer/overflow        MISRA 12.4
    otp.cpp:31:5   error  cpp/string/no_null_terminator  MISRA 21.17
    2 new findings, 0 fixed since the baseline
  2. 2
    Test Environment

    Eine Suite auf allen Zielsystemen ausführen

    Agenten auf den Testrechnern führen dieselbe Suite auf jedem Board, Build und Netzwerkaufbau aus. Jeder Test hat ein erwartetes Ergebnis, daher fällt eine Regression sofort auf.

    fw-smoke · fw 2.4.1 · 4 targets
    board rev A    12 as expected
    board rev B    11 as expected, 1 unexpected
    board rev C    12 as expected
    QEMU aarch64   12 as expected
    update/keep_config fails on rev B only
  3. 3
    Delta

    Das Gerät selbst untersuchen

    Delta untersucht das laufende System oder das Root-Dateisystem der Firmware: Ports, Persistenzdateien, Binärdateien und deren Härtung. Delta meldet die Abweichungen von einer Baseline.

    delta · board rev B · baseline golden.json
    appeared  /etc/cron.d/backup   mode 0666  T1053.003
    appeared  tcp 0.0.0.0:2375     dockerd
    missing   stack canary in /usr/bin/agent
    3 differences from the baseline
  4. 4
    Midair

    Den Fehler im Zusammenhang lesen

    Midair speichert jeden Lauf mit Konfiguration, Logs und Ergebnissen und überschreibt ihn nie. Ein über MCP angebundener KI-Assistent liest dieselben Fehler und Logs.

    mcp · midair_run_failures
    update/keep_config   board rev B   FAILED   expected PASSED
    mcp · midair_get_log
    console  config v3 found, reader expects v4
    console  Kernel panic - not syncing

Fragen.Kurze Antworten.

Was sind Embedded-Tests?

Embedded-Tests prüfen Software zusammen mit der Hardware, auf der sie läuft. Dazu gehören das Board, seine Peripherie, das Betriebssystem, das Netz und die Geräte in der Umgebung.

Welche Stufen gibt es bei Embedded-Tests?

Unit-Tests auf dem Arbeitsplatzrechner, Tests im Emulator und Tests auf einem Board (Hardware-in-the-Loop). Danach folgen die Integration mit der umgebenden Hardware, Tests in einer Flotte und die Validierung des ganzen Systems.

Worin unterscheidet sich das von Firmware-Tests?

Firmware-Tests konzentrieren sich auf die Software in einem Gerät: Flashen, Booten, Peripherie und Wiederanlauf. Embedded-Tests decken zusätzlich die Anwendungen auf dem Gerät, das Netz und Geräteflotten ab.

Können wir testen, bevor die Hardware fertig ist?

Ja, teilweise. Visao analysiert den Quellcode, ohne ihn auszuführen. Tests können auf QEMU laufen, und Delta kann ein Root-Dateisystem der Firmware offline untersuchen.

Mit welchen Boards und Systemen arbeitet Midair?

Tests erreichen das Board über einen Rechner daneben, das Board braucht also keinen Agenten. Delta läuft auf Embedded Linux unter x86_64, AArch64, ARMv7, RISC-V und MIPS. Visao analysiert Code, der mit Cross-Toolchains gebaut wird, auch für Bare-Metal-Ziele.

Passt das in unsere CI?

Ja. Läufe starten aus Ihrer CI, zum Beispiel mit dem Jenkins-Plugin. Ein KI-Assistent kann über MCP Läufe starten und Fehler lesen.

Starten Sie mit einem Board und einer Suite.Danach kommt der Rest des Labors dazu.

Vergleichen Sie die Tarife auf der Preisseite. Die Preise gelten pro Monat, in Euro.

Pilot starten