Was ist eingebettetes Testen beim Softwaretesten?

⚡ Intelligente Zusammenfassung

Bei eingebetteten Tests wird das funktionale und nicht-funktionale Verhalten von Software und Hardware gemeinsam geprüft, da in einem eingebetteten System beide eng miteinander verbunden sind und keines von beiden allein ordnungsgemäß validiert werden kann.

  • 🔘 Feste Kopplung: Die Hardware wird parallel zur Software entwickelt, daher steht die eigentliche Testumgebung oft erst spät zur Verfügung.
  • ☑️ Fünf Ebenen: Software-Unit-, Integrations-, System-Unit-, Systemintegrations- und Systemvalidierungstests zielen jeweils auf eine andere Modulgrenze ab.
  • ✅ Sicherheitsrisiken: Produkte für die Medizin-, Bahn-, Luftfahrt- und Automobilindustrie müssen strengen, dokumentierten Tests unterzogen werden, bevor eine Zertifizierung erteilt werden kann.
  • 🧪 Präferenz für graue Boxen: Systemkomponententests beobachten interne Ressourcen und RTOS-Meldungen, daher eignen sich Grey-Box-Methoden am besten.
  • ️ Haupthindernisse: Eingeschränkter Hardwarezugriff, Open-Source-Komponenten, gemischte Software- und Hardwarefehler sowie reproduzierbare Fehler.

Eingebettetes Testen von Software und Hardware in einem eingebetteten System

Was sind eingebettete Systeme?

Eingebettete Systeme Es handelt sich um elektronisch gesteuerte Geräte, bei denen Software und Hardware eng miteinander verbunden sind. Eingebettete Systeme können eine Vielzahl von Rechenkomponenten enthalten. Dabei sind PCs in andere Geräte integriert, um anwendungsspezifische Funktionen auszuführen. Der Endbenutzer bemerkt deren Existenz in der Regel gar nicht.

Eingebettetes Testen

Eingebettetes Testen ist ein Testprozess zur Überprüfung der Funktionalität und nicht funktionsfähig Die Eigenschaften der Software und Hardware in einem eingebetteten System werden geprüft, um sicherzustellen, dass das Endprodukt fehlerfrei ist. Hauptzweck des Embedded-Testings ist die Überprüfung und Validierung, ob das fertige Produkt aus eingebetteter Hardware und Software die Anforderungen des Kunden erfüllt.

Das Testen eingebetteter Software prüft und gewährleistet die Qualität der Software und die Einhaltung aller Anforderungen. Es ist ein hervorragender Ansatz, um die Sicherheit kritischer Anwendungen wie Medizintechnik, Bahntechnik, Luftfahrt, Fahrzeugindustrie usw. zu gewährleisten. Strenge und sorgfältige Tests sind für die Softwarezertifizierung unerlässlich.

So führen Sie eingebettete Softwaretests durch

Im Allgemeinen testen Sie aus vier Gründen:

  • Um Fehler in der Software zu finden
  • Trägt dazu bei, das Risiko sowohl für Benutzer als auch für das Unternehmen zu reduzieren
  • Reduzieren Sie die Entwicklungs- und Wartungskosten
  • Um die Leistung zu verbessern

Beim Embedded-Testing werden folgende Aktivitäten durchgeführt:

  1. Die Software erhält einige Eingabeparameter.
  2. Ein Teil der Software wird ausgeführt.
  3. Der Softwarezustand wird beobachtet und die Ausgaben werden auf erwartete Eigenschaften überprüft, z. B. ob die Ausgabe dem erwarteten Ergebnis entspricht, ob die Anforderungen erfüllt sind und ob Systemabstürze auftreten.

Testtypen für eingebettete Software

Grundsätzlich gibt es fünf Testebenen, die auf eingebettete Software angewendet werden können.

Software-Unit-Tests

Das Modul ist entweder eine Funktion oder eine Klasse. Modultests werden vom Entwicklungsteam, primär vom Entwickler, durchgeführt und erfolgen üblicherweise im Rahmen eines Peer-Review-Verfahrens. Die Testfälle basieren auf der Modulspezifikation.

Integrationstests

Integrationstests lässt sich in zwei Segmente unterteilen:

  • Software-Integrationstests
  • Software-/Hardware-Integrationstests

Abschließend wird das Zusammenspiel von Hardware- und Softwarekomponenten getestet. Dies kann die Untersuchung der Interaktion zwischen integrierten Peripheriegeräten und Software umfassen.

Die Entwicklung eingebetteter Software weist eine Besonderheit auf: Die tatsächliche Laufzeitumgebung der Software wird in der Regel parallel zur Softwareentwicklung erstellt. Dies erschwert das Testen, da umfassende Tests nicht unter simulierten Bedingungen durchgeführt werden können.

Testen von Systemeinheiten

Das zu testende Modul ist nun ein vollständiges Framework, das aus dem gesamten Softwarecode und allen Echtzeit-Betriebssystem (RTOS) und plattformbezogene Komponenten wie Interrupts, Tasking-Mechanismen, Kommunikationsmechanismen usw. Das Point-of-Control-Protokoll ist kein Funktions- oder Methodenaufruf mehr, sondern eine Nachricht, die über die RTOS-Nachrichtenwarteschlangen gesendet oder empfangen wird.

Systemressourcen werden beobachtet, um die Fähigkeit des Systems zu bewerten, die Ausführung eingebetteter Systeme zu unterstützen. Für diesen Aspekt gilt: Graubox-Test ist die bevorzugte Testmethode. Je nach Organisation obliegt das Systemkomponententesting entweder dem Entwickler oder einem dedizierten Systemintegrationsteam.

Systemintegrationstests

Das zu testende Modul basiert auf einer Reihe von Komponenten innerhalb eines einzelnen Knotens. Die Kontroll- und Beobachtungspunkte (PCOs) umfassen eine Mischung aus netzwerkbezogenen Kommunikationsprotokollen und RTOS-Ereignissen, wie beispielsweise Netzwerkmeldungen. Neben einer Komponente kann auch ein virtueller Tester die Rolle eines Knotens übernehmen.

Systemvalidierungstests

Das zu testende Modul ist entweder ein vollständig implementiertes Teilsystem oder das gesamte eingebettete System. Ziel dieses abschließenden Tests ist die Erfüllung der funktionalen Anforderungen externer Entitäten. Eine externe Entität kann eine Person, ein Gerät in einem Telekommunikationsnetz oder beides sein.

Unterschied: Eingebettete Tests und Softwaretests

Die folgende Tabelle vergleicht eingebettete Tests mit herkömmlichen Tests. Softwaretest.

Softwaretest Eingebettetes Testen
Softwaretests beziehen sich nur auf Software. Eingebettete Tests beziehen sich sowohl auf Software als auch auf Hardware.
Im Durchschnitt werden weltweit 90 % aller Tests manuell durchgeführt. Black-Box-Test. Embedded-Tests werden an eingebetteten Systemen oder Chips durchgeführt und können Black-Box- oder Embedded-Tests sein. White-Box-Tests.
Die Haupttestbereiche sind GUI-Prüfungen, Funktionalität, Validierung und ein gewisses Maß an Datenbanktests. Hauptprüfungsgegenstand ist das Verhalten der Hardware in Abhängigkeit von der Anzahl der ihr zugeführten Eingaben.
Softwaretests werden hauptsächlich für Client-Server-, Web- und mobile Anwendungen durchgeführt. Eingebettete Tests werden im Allgemeinen direkt auf der Hardware durchgeführt.
z.B, Google Mail, Yahoo Mail, Android um weitere Anwendungsbeispiele zu finden. z. B. Maschinen im Gesundheitswesen, Mikrocontroller, die in Computern verwendet werden.

Herausforderungen: Testen eingebetteter Software

Einige der Herausforderungen, denen man beim Testen eingebetteter Software begegnen kann:

Hardwareabhängigkeit

Die Hardwareabhängigkeit zählt aufgrund des eingeschränkten Hardwarezugriffs zu den größten Schwierigkeiten beim Testen eingebetteter Software. Emulatoren und Simulatoren bilden das Verhalten des realen Geräts jedoch möglicherweise nicht präzise ab und können ein falsches Bild der Systemleistung und Anwendungsnutzbarkeit vermitteln.

Open Source Software

Die meisten eingebetteten Softwarekomponenten sind Open Source, werden nicht intern entwickelt und es existiert keine vollständige Testsuite für sie. Es gibt eine Vielzahl von Testkombinationen und daraus resultierenden Szenarien.

Software- vs. Hardwarefehler

Ein weiterer Aspekt ist die Softwareentwicklung für neu entwickelte Hardware. Dabei können häufig Hardwarefehler festgestellt werden. Diese Fehler beschränken sich nicht nur auf die Software, sondern können auch Hardwareprobleme verursachen.

Reproduzierbare Mängel

Bei eingebetteten Systemen sind Fehler schwieriger zu reproduzieren. Daher muss im Testverfahren für eingebettete Systeme jedem Fehler ein deutlich höherer Stellenwert beigemessen werden als in Standardsystemen, und es müssen so viele Daten wie vernünftigerweise erforderlich erfasst werden, um die Ursache des Fehlers zu ermitteln.

Kontinuierliche Software-Updates

Eingebettete Systeme benötigen regelmäßige Software-Updates wie Kernel-Aktualisierungen, Sicherheitskorrekturen, neue Gerätetreiber usw. Die mit diesen Updates verbundenen Einschränkungen erschweren die Fehlersuche. Zudem erhöht dies die Bedeutung des Build- und Deployment-Prozesses.

Häufig gestellte Fragen

Typische Stacks kombinieren statische Analyse, Unit-Test-Frameworks für C und C++, Busanalysatoren, trace-fähige Debugger und Hardware-in-the-Loop-Systeme, plus Testautomatisierung Regressionstests laufen also unbeaufsichtigt.

Bei der Hardware-in-the-Loop-Technologie (HIL) wird die reale Firmware auf dem realen Controller ausgeführt, während ein Simulator die Signale liefert, die die umgebende Anlage erzeugen würde, und dabei Fehlerzustände simuliert, die physikalisch nicht realisierbar sind.

Ein Simulator modelliert das Verhalten und führt eine Host-Anwendung aus; ein Emulator reproduziert den Zielbefehlssatz, sodass die reale Binärdatei ausgeführt wird. Beide bilden analoge und Timing-Effekte nicht exakt nach.

IEC 61508 ist die generische Norm für funktionale Sicherheit. Branchenspezifische Versionen umfassen ISO 26262 für Straßenfahrzeuge, DO-178C für Bordsoftware, IEC 62304 für Medizinprodukte und EN 50128 für die Bahnsteuerung.

KI-Modelle sichten die großen Baumstämme und tracDie vom System erzeugten Mengen, die Häufung wiederholter Fehler und die Priorisierung der Regressionstests auf der knappen Hardware werden analysiert. Die Sicherheitsbeurteilung obliegt dem Ingenieur.

GitHub-Copilot Entwürfe für Testkabelbäume und Stubs für C oder C++ Module und beschleunigen wiederholtes Mocking. Registerverhalten und Timing-Beschränkungen, die es nie gesehen hat, müssen noch überprüft werden.

Durch eine Worst-Case-Ausführungszeitanalyse, instrumentiert tracDie Tests werden auf dem Zielsystem durchgeführt und unter Volllast ausgeführt. Deadline-Verletzungen und Interrupt-Latenzen werden auf realer Hardware gemessen, was mit Host-Builds nicht reproduziert werden kann.

Lesen C und C++Vertrautheit mit Schaltplänen und Logikanalysatoren, Kenntnisse von RTOS-Konzepten und Busprotokollen sowie Skripting. Verwandte Arbeiten wie z. B. IoT-Tests basiert auf der gleichen Grundlage.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: