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.
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.“