Suchen

Neue Debugger So wird der Debugger zum Basiswerkzeug für Integration und Test

Autor / Redakteur: Heiko Rießland * / Margit Kuther

Die immensen Datenmengen heutiger Embedded Software bedürfen einer neuen Generation von Debuggern, die neben den klassischen Basisfunktionen umfangreiche Testmöglichkeiten auf Systemebene bis hin zur automatischen Generierung von Reports bieten.

Firmen zum Thema

Big Data: Moderne Debugger bieten neben klassischen Basisfunktionen auch umfangreiche Testmöglichkeiten auf Systemebene.
Big Data: Moderne Debugger bieten neben klassischen Basisfunktionen auch umfangreiche Testmöglichkeiten auf Systemebene.
(Bild: © kras99 - Fotolia)

Komplexe Embedded-Softwareprogramme mit mehreren 100 MByte Quellcode und die ständig steigenden Qualitätsanforderungen erfordern zunehmend weitgehend automatisierte Testprogramme.

Wenn die Entwicklung in größeren Teams an verteilten Standorten stattfindet, sind solche Testmethoden für die sichere Zusammenführung der einzelnen Softwareteile unerlässlich. Teilweise werden sie durch einschlägige Normen wie die für den Automobilbereich geltende ISO2626 inzwischen sogar zwingend vorgeschrieben.

Bildergalerie

Die gewünschte Effektivität lässt sich allerdings nur erreichen, wenn der verwendete Debugger seine Funktionalität und seine grafische Bedienoberfläche auch tatsächlich uneingeschränkt in einer für automatisierte Tests geeigneten Form zur Verfügung stellt.

Dafür wird ein Werkzeug benötigt, das neben den klassischen Eigenschaften eines Debuggers, z.B. die Steuerung und Beobachtung des Targets mit vielfältigen Anzeige- und Analysemöglichkeiten, über ein grafisches Nutzerinterface weitere neue Möglichkeiten bietet. Die komplette Funktionalität muss auch im voll- oder halbautomatischen Betrieb nutzbar sein.

Ein typisches Beispiel für solche Vorgänge, die mit entsprechend ausgestatteten Tools völlig autonom ablaufen können, sind Regressionstests. Hierfür werden für bestimmte Funktionen der Software vorab eindeutige Testroutinen entwickelt, beispielsweise beschrieben durch Ein- und Ausgaben für Funktionen oder Module. Solche im Idealfall automatisierten Testläufe dienen dem sicheren Nachweis einer bestimmten Funktionalität auch nach mehrfachen Änderungen an der Software. Bei dieser Art der Anwendung übernimmt häufig ein drittes Programm die Verwaltung und Steuerung der Testfälle. Die eigentliche Bedienoberfläche des Debuggers kommt also gar nicht zur Anwendung, nur seine Funktionalität.

Halbautomatische Nutzung des Debuggers

Für die Integration verschiedener Softwareteile zu einer Gesamtapplikation ist wiederum eine halbautomatische Nutzung des Debuggers besonders interessant. Die Anwendung wird dabei unter verschiedenen Betriebsbedingungen manuell durch Bedienung über das grafische Nutzerinterface getestet. Neben dem Debugger ist das Steuergerät dabei noch mit einem komplexen Hardware-in-the-Loop (HiL)-System verbunden, welches die vorgesehene Steuergeräteumgebung simuliert. Besonders wichtig dabei: Skripte, welche die Debugger-Funktionalität nutzen, können bei auftretenden Anomalien oder Fehlern sofort einen detaillierten Report über den Zustand des Targets und der Applikationssoftware liefern. Dabei werden beispielsweise am Ort eines Breakpoints in einer Fehler- oder Trap-Funktion alle relevanten Variablen, Register, Speicherinhalte, usw. für eine Analyse bzw. spätere erneute Verifikation der Software gespeichert.

Bei korrekt laufender Software lässt sich im Idealfall zudem mittels vorbestimmter Funktionen ein Skript zur automatischen Code-Coverage-Analyse starten. Code Coverage ist ein Verfahren zur Messung der Testabdeckung und damit eine indirekte Bestimmung der Softwarequalität und wird in einschlägigen Normen wie der ISO26262 vorgeschrieben. Dabei wird ermittelt, ob während der Tests alle Instruktionen (Statement Coverage) und Verzweigungen (Branch Coverage) bzw. unterschiedliche logische Verknüpfungen (MC/DC) innerhalb einer Software durchlaufen werden.

Eine vollständige MC/DC-Analyse ist meist nur mit Code-Instrumentierung und damit einhergehender Veränderung der Laufzeit und Größe der Applikation möglich. Anwendungen, für die diese Variante aus technischen Gründen nicht in Frage kommt, verwenden stattdessen in der Regel auf in Echtzeit gewonnenen Trace-Daten basierendes Branch Coverage.

Artikelfiles und Artikellinks

(ID:43586657)