Tools

Embedded Software Engineering Reloaded: mbeddr

Seite: 3/4

Anbieter zum Thema

Hardwareunabhängiges Testen

Dieser konsequent komponentenorientierte Architekturansatz war gleichzeitig der Wegbereiter für weitere Innovationen bei der Umsetzung der Smart Meter Software. So wurde es einfach möglich, hardwareunabhängige Modul- und Integrationstests zu realisieren, die auf dem Entwicklungsrechner oder einem Buildserver ausführbar und nicht an das Vorhandensein der Zielhardware gebunden sind.

Dazu mussten lediglich die Komponenten der Hardwareabstraktionsschicht durch geeignete Pseudoimplementierungen oder Emulatoren ersetzt werden. Dies wird in mbeddr über die Konzepte “stub component” und “mock component” unterstützt. Auch für das Schreiben des Testcodes, der die zu testenden Komponenten aufruft und die resultierenden Ergebnisse prüft, stehen dedizierte Konzepte wie z.B. “testcase” und “assert” bereit (siehe Bild 5 in der Bildergalerie).

Neben der Realisierung zahlreicher Modultests für einzelne Komponenten konnte dieses Prinzip sehr vorteilhaft für das Testen der Komponenten zur Berechnung der Energieverbrauchswerte in der Metrology-Schicht genutzt werden. Die Besonderheit bestand hier darin, dass die zu testenden Komponenten nicht durch einzelne Aufrufe getestet werden konnten, sondern für eine repräsentative Zeitdauer mit diskreten Eingangssignalen belegt werden mussten.

Zu diesem Zweck wurden die Komponenten zur Ansteuerung der Sigma-Delta-A/D-Wandler durch einen Simulator ersetzt, mit dem sich vordefinierte Reihen von abgetasteten Momentanspannungs- und -stromwerten generieren lassen. Die Tests selbst wurden so gestaltet, dass die Wertebereiche der jeweils relevanten Eingangssignale in kleinen Schritten vollständig durchlaufen werden (z.B. 0V bis 250V in 1V-Schritten im Falle der Tests für die Komponente zur Berechnung der Effektivspannung). Für jeden Schritt wird eine Reihe von abgetasteten Momentanspannungs- und/oder Stromwerten simuliert, die dem aktuell betrachteten Eingangssignalwert entspricht.

Anschließend wird der tatsächlich berechnete gegen den erwarteten Energieverbrauchswert geprüft. Dabei ist zu berücksichtigen, dass die Berechnung der Energieverbrauchswerte aus Effizienzgründen unter Verwendung von Festpunktarithmetik implementiert werden musste und somit keine 100% exakten Ergebnisse liefern kann. In den zugehörigen Tests wird deshalb die Abweichung zwischen dem tatsächlich berechneten und theoretisch zu erwartenden Energieverbrauchswert bestimmt und geprüft, ob diese Abweichung für alle betrachteten Kombinationen von Eingangssignalen unterhalb eines bestimmten Grenzwertes bleibt.

Letztendlich konnte mit Hilfe von solchermaßen umgesetzten hardwareunabhängigen Tests nicht nur die Richtigkeit der Komponenten zur Berechnung der Energieverbrauchswerte sichergestellt sondern auch eine Aussage über ihre Genauigkeit getroffen werden (siehe Tabelle 1 in der Bildergalerie).

Schrittweise Inbetriebnahme

Obwohl der Großteil der Smart Meter Software durch hardwareunabhängiges Testen validiert werden konnte, war es natürlich nicht möglich, alle Aspekte auf diesem Wege zu überprüfen: zu letzteren zählen einerseits die meisten hardwarenahen Komponenten aus der Hardwareabstraktionsschicht und andererseits das Echtzeitverhalten der Gesamtanwendung. Das Testen dieser Aspekte sowie auch die Inbetriebnahme der Smart Meter Software als Ganzes musste daher in herkömmlicher Weise auf der Zielhardware zu erfolgen.

Nichtsdestotrotz hat sich auch hier die modulare Architektur der Smart Meter Software als entscheidender Vorteile erwiesen. Anstatt den gesamten Code auf einmal zum Laufen bringen zu müssen, war es sehr einfach möglich, zunächst lediglich ausgewählte Untermengen von Komponenten auf der Zielhardware zu integrieren und zu testen. Somit konnte die Inbetriebnahme mit einer sehr kleinen und überschaubaren Auswahl von Komponenten begonnen werden.

Anschließend wurden schrittweise immer mehr Komponenten hinzugefügt bis schließlich der Gesamtumfang der Smart Meter Software erreicht war. Diese Vorgehensweise war eine enorme Erleichterung für das Integrieren und Testen der Komponenten aus der Hardwareabstraktionsschicht. Sie war ebenfalls sehr hilfreich, um einen schwer auffindbaren Fehler zu isolieren, der erst dann in Erscheinung trat, als damit begonnen wurde, zwei der zu unterstützenden Kommunikationsprotokolle (DLT645 und MQTT-SN) parallel zu nutzen.

Dank der im Vorfeld durchgeführten hardwareunabhängigen Tests konnte die Inbetriebnahme der Smart Meter Software auf der Zielhardware in kürzester Zeit abgeschlossen werden. Nach Aufdeckung und Korrektur der wenigen noch verbleibenden Fehler war die gesamte Funktionalität umgehend voll verfügbar. Das ansonsten übliche langwierige Debuggen auf der Zielhardware und mühsame sich Vorwärtsarbeiten von Bug zu Bug konnte dagegen fast vollständig vermieden werden.

(ID:44309111)