Testabdeckung in IEC61131-3 Structured Text/ ST

Softwaretest – Eine Frage des Vertrauens

Entwicklungskosten reduzieren, die Qualität von Software verbessern und Fehler nicht erst beim Kunden finden - dafür sind Softwaretests da. Doch in der Steuerungswelt ist dieses Thema noch nicht sehr verbreitet - darauf macht Patrick Dressel, freiberuflicher Software-Entwickler, aufmerksam. Er bietet dafür ein Test-Framework an und zeigt auf, wie die Testabdeckung ermittelt wird.
 Mit dem AutomateYourCode-Generator lässt sich die Code Coverage Analyse einfach durchführen.
Mit dem AutomateYourCode-Generator lässt sich die Code Coverage Analyse einfach durchführen.Bild: Hoox Software / ©Dcstudio/freepik.com

In Automatisierungswelt werden die Anforderungen an die Qualität von Software immer höher und es kommen immer mehr Entwicklungsmethoden der Hochsprachenwelt zum Einsatz. Die Verwendung einer Versionsverwaltung wie TFS, SVN, Git bzw Gitlab ist inzwischen Standard. Zur Sicherung der Softwarequalität können Buildserver überprüfen, ob der aktuelle Stand fehlerfrei kompilierbar ist. Buildpipelines können automatisiert Tests starten und auswerten. Das Ergebnis des Testlaufs führt dann zu weiteren Aktionen wie beispielsweise E-Mail-Versand und das Archivieren von Daten. Der Entwicklungsabteilung dienen automatisierte Tests, um zu einem frühen Zeitpunkt Fehler bereits im eigenen Haus statt beim Kunden zu erkennen. Metriken, zum Beispiel die Erfassung der Testabdeckung, helfen dabei, die Qualität des Tests zu ermitteln und sind ein belegbarer Nachweis der Testtiefe.

Patrick Dressel, freiberuflicher Software-Entwickler: "Die Code Coverage Analyse als Whitebox-Verfahren zeigt sehr einfach welche Codeteile nicht durch Tests abgedeckt sind."
Patrick Dressel, freiberuflicher Software-Entwickler: "Die Code Coverage Analyse als Whitebox-Verfahren zeigt sehr einfach welche Codeteile nicht durch Tests abgedeckt sind."Bild: Hoox Software

Nachholbedarf in der Automatisierung

„In der Welt der internationalen Norm IEC61131 ist das Thema Softwaretest noch nicht sehr verbreitet, aber es begegnet mir immer öfter in Gesprächen mit Kunden und Kollegen“, berichtet Patrick Dressel. Deshalb stellte er sich vor ein paar Jahren die Frage, wie sich aussagekräftige Tests erstellen lassen. „Bei der Fortbildung zum ISTQB-Testanalyst konnte ich mich intensiv damit beschäftigen und es wurde konkreter. Dabei stellte sich heraus, dass das Thema gerade im Automatisierungsbereich verbreiteter sein könnte“, fährt er fort.

Setzen sich die Entwicklungsabteilungen mit dem Thema Softwaretest auseinander, würden sie sehr schnell zu folgenden Fragen kommen:

• Woher weiß ich, wie gut mein Test ist?

• Welche Kriterien helfen mir bei der Bewertung meines Tests?

Die Antwort liefert Dressel in Form einer parallel zum Test laufenden Code-Coverage-Analyse. Diese zeigt, welche Teile des Quellcodes erreicht werden und in welchem Umfang.

Konzept: Code Coverage Analyse

Bei Beginn der Umsetzung entsprechender Softwaretests stehen die sogenannten Blackbox-Verfahren. Diese helfen dabei die Testfälle und deren Testdaten anhand der Dokumentation zu erstellen, ohne den Code zu kennen. Im besten Fall ist das gewünschte Verhalten einer Funktion definiert und die Formeln für Berechnungen dokumentiert. Anhand dieser Daten kann der Tester dann die Testfälle mit den zugehörigen Testdaten definieren und implementieren.

„Die Code-Coverage-Analyse als Whitebox-Verfahren zeigt sehr einfach welche Codeteile nicht durch Tests abgedeckt sind“, erklärt der Software-Entwickler. Hier wird das Testobjekt (übersetztes Programm) auf einem SPS-System innerhalb seiner Laufzeitumgebung getestet und die Codeabdeckung aufgezeichnet. Dazu ist es notwendig, das zu testende Programm zu instrumentieren und neu zu übersetzen. Diese Vorgehensweise benötigt zwar zusätzlichen Speicher und Rechenleistung, was für aktuelle Systeme aber kein Problem mehr darstellt. Im Zweifelsfall können die Testläufe entsprechend angepasst werden. Nach Ende des Testlaufs erfolgt die Auswertung der durchlaufenen Bausteine und Anweisungen. Diese wird in Form einer lesbaren XML-Datei bereitgestellt.

Aktuell mögliche Testabdeckung für zwei Steuerungen

Der AutomateYourCode-Generator macht es möglich diese Analyse einfach durchzuführen. Mit einer Konfigurationsdatei im XML-Format wird festgelegt was genau zu tun ist und welche Toolchain verwendet werden soll. Dressel: „Aktuell unterstützt der Generator Beckhoff-Twincat-3- und Sigmatek-Lasal-Class-2-Steuerungen, weitere sind in Entwicklung.“

Für die Messung der Code Coverage erzeugt der Generator zunächst eine Kopie des Originals, das Testobjekt. Anschließend wird in diesem der Quellcode jeder Datei analysiert und instrumentiert. An den relevanten Stellen wird zusätzlicher Code eingetragen, um die spätere Analyse zu ermöglichen. Der Generator führt das Testobjekt aus und erstellt am Ende des Testlaufs die Datei mit der abschließenden Auswertung. Dafür wird der Soll- und Istzustand verglichen und das Ergebnis im Cobertura-Format abgelegt. Dieses XML-Format ist einfach lesbar. Buildserver die über ein Cobertura-Plugin verfügen, können das Ergebnis übersichtlicher, tabellarisch und grafisch darstellen. Die Datei enthält das Ergebnis der Zeilen- und Zweigabdeckung. Eine Berechnung der Bedingungsabdeckung ist für eine Folgeversion geplant. „Bei der Entwicklung wurde explizit auf eine einfache Anwendung geachtet, die schnell zu einem Ergebnis führt“, erklärt der Software-Spezialist abschließend.

Das könnte Sie auch Interessieren

Weitere Beiträge

Bild: U.I. Lapp GmbH
Bild: U.I. Lapp GmbH
Ein Klick: KI-gestützte Bilderkennungssoftware sorgt für schnelle Bestellung

Ein Klick: KI-gestützte Bilderkennungssoftware sorgt für schnelle Bestellung

Das Prinzip ist simpel und beschleunigt den Bestellprozess: Mit der Bilderkennungssoftware Lapp Visual Search lässt sich ein gewünschtes Produkt per Fotoaufnahme identifizieren und direkt über den Onlineshop nachbestellen. Hinter der Idee steht eine komplexe, KI-gestützte Softwarelösung aus dem Hause Lapp. Die Entwickler haben dafür den unternehmenseigenen Innovationspreis erhalten.

mehr lesen
Bild: Conplement AG
Bild: Conplement AG
SaaS-Plattform Twinsphere Suite für neue Services und Geschäftsmodelle

SaaS-Plattform Twinsphere Suite für neue Services und Geschäftsmodelle

In einer Ära, in der die digitale Transformation zur Notwendigkeit wird, stehen mittelständische Unternehmen im Maschinenbau vor großen Herausforderungen: Sie müssen eine immer stärkere Vernetzung über Wertschöpfungsketten hinweg sicherstellen und parallel wachsende Kundenanforderungen nach digitalen Services bedienen – das ganze bei steigendem Kostendruck und fragilen Lieferketten. Der Launch einer neuen SaaS-Lösung für digitale Zwillinge, soll einen Wendepunkt für diese Unternehmen einleiten.

mehr lesen