Was ist eingebettetes Testen beim Softwaretesten?
Was sind eingebettete Systeme?
Eingebettete Systeme sind elektronisch gesteuerte Geräte, bei denen Software und Hardware eng miteinander verbunden sind. Eingebettete Systeme können verschiedene Computergeräte enthalten. Dabei handelt es sich um PCs, die in andere Geräte integriert sind, um anwendungsspezifische Funktionen auszuführen. Der Endbenutzer ist sich ihrer Existenz normalerweise nicht einmal bewusst.
Eingebettetes Testen
Eingebettetes Testen ist ein Testverfahren zur Überprüfung funktionaler und nichtfunktionaler Eigenschaften von Software und Hardware in einem eingebetteten System und zur Sicherstellung, dass das Endprodukt fehlerfrei ist. Der Hauptzweck des Embedded-Tests besteht darin, zu überprüfen und zu validieren, ob das Endprodukt der eingebetteten Hardware und Software die Anforderungen des Kunden erfüllt oder nicht.
Beim Testen eingebetteter Software wird überprüft und sichergestellt, dass die betreffende Software von guter Qualität ist und alle Anforderungen erfüllt, die sie erfüllen sollte. Das Testen eingebetteter Software ist ein hervorragender Ansatz, um die Sicherheit in kritischen Anwendungen wie medizinischen Geräten, Eisenbahnen, Luftfahrt, Fahrzeugindustrie usw. zu gewährleisten. Strenge und sorgfältige Tests sind für die Erteilung einer Softwarezertifizierung von entscheidender Bedeutung.
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 verfügt über einige Eingaben.
2. Ein Teil der Software wird ausgeführt.
3. Der Softwarestatus wird beobachtet und die Ausgaben werden auf erwartete Eigenschaften überprüft, z. B. ob die Ausgabe dem erwarteten Ergebnis entspricht, ob sie den Anforderungen entspricht und ob es keine Systemabstürze gibt.
Testtypen für eingebettete Software
Grundsätzlich gibt es fünf Teststufen, die auf eingebettete Software angewendet werden können
Software-Unit-Tests
Das Unit-Modul ist entweder eine Funktion oder eine Klasse. Unit-Tests werden vom Entwicklungsteam, in erster Linie vom Entwickler, durchgeführt und erfolgen normalerweise in einem Peer-Review-Modell. Basierend auf der Spezifikation des Moduls werden Testfälle entwickelt.
Integrationstests
Integrationstests können in zwei Segmente eingeteilt werden:
- Software-Integrationstests
- Software-/Hardware-Integrationstests.
Abschließend wird das Zusammenspiel der Hardwaredomäne und der Softwarekomponenten getestet. Dies kann die Untersuchung des Zusammenspiels zwischen eingebauten Peripheriegeräten und Software umfassen.
Die Entwicklung eingebetteter Software weist ein einzigartiges Merkmal auf, das sich auf die tatsächliche Umgebung konzentriert, in der die Software ausgeführt wird und im Allgemeinen parallel zur Software erstellt wird. Dies führt zu Unannehmlichkeiten beim 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 vollständigem Softwarecode und allem besteht Echtzeitbetriebssystem (RTOS) und plattformbezogene Teile wie Interrupts, Tasking-Mechanismen, Kommunikation usw. Das Point of Control-Protokoll ist kein Aufruf einer Funktion oder eines Methodenaufrufs mehr, sondern eine Nachricht, die über die RTOS-Nachrichtenwarteschlangen gesendet/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: Gray-Box-Tests ist die bevorzugte Testmethode. Abhängig von der Organisation ist das Testen von Systemeinheiten entweder die Aufgabe des Entwicklers oder eines dedizierten Systemintegrationsteams.
Systemintegrationstests
Das zu testende Modul beginnt mit einer Reihe von Komponenten innerhalb eines einzelnen Knotens. Die Points of Control and Observations (PCOs) sind eine Mischung aus netzwerkbezogenen Kommunikationsprotokollen und RTOS, wie Netzwerknachrichten und RTOS-Ereignissen. Zusätzlich zu einer Komponente kann ein virtueller Tester auch die Rolle eines Knotens übernehmen.
Systemvalidierungstests
Das zu testende Modul ist ein Subsystem mit einer vollständigen Implementierung oder das komplette eingebettete System. Das Ziel dieses Abschlusstests besteht darin, die funktionalen Anforderungen externer Einheiten zu erfüllen. Beachten Sie, dass eine externe Entität entweder eine Person oder ein Gerät in einem Telekommunikationsnetzwerk oder beides sein kann.
Unterschied: Eingebettete Tests und Softwaretests
| Softwaretest | Eingebettetes Testen |
|---|---|
| Softwaretests beziehen sich nur auf Software. | Eingebettete Tests beziehen sich sowohl auf Software als auch auf Hardware. |
| Durchschnittlich 90 % der weltweit durchgeführten Tests sind rein manuelle Blackbox-Tests. | Eingebettete Tests werden an eingebetteten Systemen oder Chips durchgeführt. Es kann sich um einen Blackbox- oder einen Whitebox-Test handeln. |
| Die Haupttestbereiche sind GUI-Prüfungen, Funktionalität, Validierung und ein gewisses Maß an Datenbanktests. | Haupttestbereiche sind das Verhalten der Hardware für die Nr. der ihm gegebenen Eingaben. |
| Softwaretests werden hauptsächlich für Client-Server-, Web- und mobile Anwendungen durchgeführt. | Eingebettete Tests werden im Allgemeinen 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
Aufgrund des begrenzten Zugriffs auf Hardware gehört die Hardwareabhängigkeit zu den Hauptschwierigkeiten beim Testen eingebetteter Software. Allerdings repräsentieren Emulatoren und Simulatoren möglicherweise nicht genau das Verhalten des tatsächlichen Geräts und könnten ein falsches Gefühl für die Systemleistung und die Benutzerfreundlichkeit der Anwendung vermitteln.
Open Source Software
Die meisten eingebetteten Softwarekomponenten sind Open-Source-Komponenten, werden nicht intern erstellt und verfügen nicht über umfassende Tests. Die Auswahl an Testkombinationen und daraus resultierenden Szenarien ist vielfältig.
Software- vs. Hardwarefehler
Ein weiterer Aspekt besteht darin, dass bei der Entwicklung von Software für eine frisch erstellte Hardware während dieses Prozesses ein hoher Prozentsatz an Hardwaredefekten festgestellt werden kann. Der festgestellte Mangel ist nicht nur auf Software beschränkt. Es kann auch mit der Hardware zusammenhängen.
Reproduzierbare Mängel
Bei eingebetteten Systemen sind Defekte schwerer zu reproduzieren/nachzubilden. Das zwingt das eingebettete Testverfahren dazu, jedes Auftreten eines Defekts wesentlich höher zu bewerten als in einem Standardfall, abgesehen davon, dass so viele Daten wie sinnvollerweise erforderlich sein könnten, um das System zu ändern und die Ursache des Defekts zu finden.
Kontinuierliche Software-Updates
Eingebettete Systeme erfordern regelmäßige Software-Updates wie Kernel-Upgrades, Sicherheitsfixes, verschiedene Gerätetreiber usw. Einschränkungen im Zusammenhang mit den Auswirkungen von Software-Updates erschweren die Fehleridentifizierung. Darüber hinaus erhöht es die Bedeutung des Build- und Bereitstellungsverfahrens.
Zusammenfassung
Beim Testen eingebetteter Software gibt es einige Schwierigkeiten, die es schwieriger machen als normale Softwaretests. Das grundlegendste Problem ist die starke Abhängigkeit von der Hardwareumgebung, die gleichzeitig mit der Software vorbereitet wird und die regelmäßig erforderlich ist, um zuverlässige Softwaretests durchzuführen. Manchmal ist es sogar schwierig, die Software ohne benutzerdefinierte Tools zu testen, was es mühelos außergewöhnlich verlockend macht, sich auf Tests in späten Phasen zu konzentrieren.
Eines der wichtigsten Dinge, über die Sie nachdenken sollten, ist die Tatsache, dass Sie sich häufig für automatisierte Softwaretests entscheiden sollten. Das eingebettete automatisierte Testen ist ein schnellerer Prozess, der einige Stunden dauern würde, und auf diese Weise wird das Problem Ihrer Software gelöst.
