In diesem Tutorial lernen Sie
- Was sind eingebettete Systeme?
- Was ist Embedded Testing?
- Testtypen für eingebettete Software
- Unterschied: Embedded Testing und Software Testing
- Herausforderungen: Testen eingebetteter Software
Was sind eingebettete Systeme?
Eingebettete Systeme sind elektronisch gesteuerte Geräte, bei denen Software und Hardware eng miteinander verbunden sind. Eingebettete Systeme können eine Vielzahl von Computergeräten enthalten. Hierbei handelt es sich um PCs, die in andere Geräte integriert sind, um anwendungsspezifische Funktionen auszuführen. Der Endbenutzer ist sich normalerweise seiner Existenz nicht einmal bewusst.
Eingebettetes Testen
Embedded Testing ist ein Testprozess zum Überprüfen der funktionalen und nicht funktionalen Eigenschaften von Software und Hardware in einem eingebetteten System und zum Sicherstellen, dass das Endprodukt fehlerfrei ist. Der Hauptzweck von Embedded-Tests besteht darin, zu überprüfen und zu validieren, ob das Endprodukt eingebetteter Hardware und Software die Anforderungen des Kunden erfüllt oder nicht.
Tests zum Testen eingebetteter Software stellen sicher, dass die betreffende Software von guter Qualität ist und alle Anforderungen erfüllt, die sie erfüllen sollte. Embedded-Software-Tests sind 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 der Software-Zertifizierung von entscheidender Bedeutung.
So führen Sie Tests mit eingebetteter Software durch
Im Allgemeinen testen Sie aus vier Gründen:
- Um Fehler in der Software zu finden
- Reduziert das Risiko für Benutzer und Unternehmen
- Reduzieren Sie die Entwicklungs- und Wartungskosten
- Um die Leistung zu verbessern
In Embedded Testing werden die folgenden Aktivitäten ausgefü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 mit dem erwarteten Ergebnis übereinstimmt, den Anforderungen entspricht und keine Systemabstürze vorliegen.
Testtypen für eingebettete Software
Grundsätzlich gibt es fünf Teststufen, die auf eingebettete Software angewendet werden können
Testen von Softwareeinheiten
Das Einheitsmodul ist entweder eine Funktion oder eine Klasse. Unit-Tests werden vom Entwicklungsteam, hauptsächlich vom Entwickler, durchgeführt und normalerweise in einem Peer-Review-Modell durchgeführt. Basierend auf der Spezifikation des Moduls werden Testfälle entwickelt.
Integrationstests
Integrationstests können in zwei Segmente unterteilt werden:
- Testen der Software-Integration
- Testen der Software- / Hardware-Integration.
Am Ende wird das Zusammenspiel von Hardwaredomäne und Softwarekomponenten getestet. Dies kann die Untersuchung der Interaktion zwischen integrierten Peripheriegeräten und Software beinhalten.
Die Entwicklung eingebetteter Software weist eine einzigartige Eigenschaft auf, die sich auf die tatsächliche Umgebung konzentriert, in der die Software ausgeführt wird. Sie wird im Allgemeinen parallel zur Software erstellt. Dies führt zu Unannehmlichkeiten beim Testen, da umfassende Tests nicht unter simulierten Bedingungen durchgeführt werden können.
Testen von Systemeinheiten
Jetzt ist das zu testende Modul ein vollständiges Framework, das aus vollständigem Softwarecode sowie allen Echtzeitbetriebssystemen (RTOS) und plattformbezogenen Elementen wie Interrupts, Tasking-Mechanismen, Kommunikation usw. besteht. Das Point of Control-Protokoll ist kein Aufruf einer Funktion oder eines Methodenaufrufs mehr, sondern eine Nachricht, die unter Verwendung der RTOS-Nachrichtenwarteschlangen gesendet / empfangen wurde.
Systemressourcen werden beobachtet, um die Fähigkeit des Systems zu bewerten, die Ausführung eingebetteter Systeme zu unterstützen. Für diesen Aspekt ist das Gray-Box-Testen die bevorzugte Testmethode. Je nach Organisation ist das Testen von Systemeinheiten entweder Aufgabe des Entwicklers oder eines dedizierten Systemintegrationsteams.
Testen der Systemintegration
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, z. B. Netzwerknachrichten und RTOS-Ereignissen. Zusätzlich zu einer Komponente kann ein virtueller Tester ebenfalls die Rolle eines Knotens spielen.
Systemvalidierungstests
Das zu testende Modul ist ein Subsystem mit einer vollständigen Implementierung oder das vollständige eingebettete System. Ziel dieses Abschlusstests ist es, 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 ist.
Unterschied: Embedded Testing und Software Testing
Softwaretest | Eingebettetes Testen |
---|---|
Softwaretests beziehen sich nur auf Software. | Eingebettete Tests beziehen sich sowohl auf Software als auch auf Hardware. |
Im Durchschnitt sind 90% der weltweit durchgeführten Tests rein manuelle Black-Box-Tests. | Eingebettete Tests werden auf eingebetteten Systemen oder Chips durchgeführt. Dies kann ein Black-Box- oder ein White-Box-Test sein. |
Haupttestbereiche sind GUI-Überprüfungen, Funktionalität, Validierung und ein gewisses Maß an Datenbanktests. | Haupttestbereiche sind das Verhalten der Hardware für die Nr. von Eingaben gegeben. |
Softwaretests werden hauptsächlich für Client-Server-, Web- und mobile Anwendungen durchgeführt. | Eingebettete Tests werden im Allgemeinen auf der Hardware durchgeführt. |
zB Google Mail, Yahoo Mail, Android-Anwendungen. | zB Maschinen im Gesundheitswesen, Mikrocontroller, die in Computern verwendet werden. |
Herausforderungen: Testen eingebetteter Software
Einige der Herausforderungen, denen man sich beim Testen von Embedded-Software stellen kann:
Hardware-Abhängigkeit
Die Hardwareabhängigkeit gehört zu den Hauptschwierigkeiten beim Testen eingebetteter Software, da der Zugriff auf Hardware eingeschränkt ist. Emulatoren und Simulatoren stellen jedoch möglicherweise das Verhalten des tatsächlichen Geräts nicht genau dar und können ein falsches Gefühl für die Systemleistung und die Benutzerfreundlichkeit der Anwendung vermitteln.
Quelloffene Software
Die meisten eingebetteten Softwarekomponenten sind Open Source-Komponenten, werden nicht intern erstellt und es stehen keine vollständigen Tests zur Verfügung. Es gibt eine Vielzahl von Testkombinationen und daraus resultierenden Szenarien.
Software- und Hardwaredefekte
Ein weiterer Aspekt ist, dass bei der Entwicklung von Software für eine frisch erstellte Hardware während dieses Prozesses ein hohes Verhältnis von Hardwaredefekten festgestellt werden kann. Der festgestellte Fehler ist nicht nur auf Software beschränkt. Es kann auch mit Hardware zusammenhängen.
Reproduzierbare Mängel
Fehler sind im Fall des eingebetteten Systems schwerer zu reproduzieren / wiederherzustellen. Dies erzwingt, dass das eingebettete Testverfahren jedes Auftreten eines Fehlers wesentlich höher bewertet als in einem Standardfall, außer dass so viele Daten erfasst werden, wie sinnvoll erforderlich sind, um das System zu ändern, um die Grundlage des Fehlers zu finden.
Kontinuierliche Software-Updates
Eingebettete Systeme erfordern regelmäßige Softwareupdates wie das Kernel-Upgrade, Sicherheitskorrekturen, verschiedene Gerätetreiber usw. Einschränkungen, die durch den Einfluss von Softwareupdates identifiziert werden, erschweren die Fehlererkennung. Darüber hinaus wird die Bedeutung des Erstellungs- und Bereitstellungsverfahrens erhöht.
Zusammenfassung
Es gibt einige Schwierigkeiten beim Testen eingebetteter Software, die es schwieriger machen als beim regulären Testen von Software. Das grundlegendste Problem ist die enge Abhängigkeit von der Hardwareumgebung, die gleichzeitig mit der Software erstellt 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ühsam macht, sich mühelos auf das Testen 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 in Anspruch nehmen würde. Auf diese Weise wird das Problem Ihrer Software gelöst.