Softwaretests für sicherheitsrelevante Embedded C Projekte nach EN50128/SIL4
In sicherheitsrelevanten Embedded Softwareprojekten in C aus dem Bahnbereich gibt es einige Anforderungen an den Nachweis der Softwarequalität. Einerseits müssen Anforderungen aus der Norm EN50128 nachgewiesen werden und einer Begutachtung standhalten, andererseits müssen die Tests innerhalb eines Vernünftigen Zeit- und Kostenrahmen stattfinden.
Hier können schon bei der Planung eines Projektes Stolpersteine gesetzt werden, die sich negativ auf die Softwarequalität und die geschätzten Kosten auswirken können. Habe ich einen geeigneten Compiler (Stichwort „Compilernachweis“) gewählt? Gibt es zu diesem Compiler bereits Unterstützung durch verschiedene Testtools (z.B. Cantata, QA-C)? Wo muss ich die Tests für mein Embedded Projekt ausführen (Test-On-Target oder Simulator)? Welcher SIL ist für mein Projekt gefordert und was muss ich dann testen? Softwaretests während oder nach der
Wenn man sich diesen Fragen zum Softwaretesten bereits bei der Projektplanung bewusst ist, lassen sich viele Probleme vermeiden.
Das Projekt wurde nun gestartet, es stehen Ressourcen und Tools zum Testen zur Verfügung. Doch wann setze ich diese ein?
Natürlich darf man Anforderungen des Compilerherstellers aus zum Beispiel eines Safety Manuals in den Softwareanforderungen nicht vergessen die dem Entwickler und Softwaretester bewusst seinen müssen. Einen ganz wichtigen Punkt kann man aber bei der Planung der Softwarearchitektur durch eine genaue Schnittstellenspezifikation und guter Modularisierung erreichen. Der hier investierte Aufwand zahlt sich durch eine schnellere und wartungsärmere Softwareentwicklung und der guten Testbarkeit aus. Die Bereitstellung/Entwicklung einer oder mehrerer Softwaretestumgebungen um zum Beispiel Test Driven Deployment, Softwaretests und Integrationstests zu ermöglichen muss durch den Softwaretester bereits begonnen werden.
Durch verschiedene Testmethoden wie der statischen Codeanalyse (Prüfung der firmeninternen Codingstandards und/oder anderer Standards wie z.B. MISRA), Code Reviews und Test Driven Deployment kann schon während der Entwicklung durch die Zusammenarbeit von Entwicklern und Softwaretestern eine hohe Softwarequalität erreicht und Bugs sehr früh erkannt werden. All diese Methoden lassen sich sehr gut mit dem Prinzip der agilen Softwareentwicklung vereinbaren welche uns kontinuierlich eine lauffähige und getestete Software bereitstellen kann.
Der Tester war nun bei der Planung, der Architektur und der Entwicklung des Projektes beteiligt und kann nach dem Abschluss der Entwicklung seine abschließenden Tests durchführen, die laut EN50128 gefordert sind. Da wären unter anderem die Code Coverage Prüfung nach MC/DC zu erwähnen, die Erstellung der benötigten Reports und Nachweise für die Begutachtung. Dies sollte wie bereits während der Entwicklung Toolgestützt stattfinden und die Unit-Tests die die Entwickler während der Entwicklung im TDD erfahren erstellt haben, sollen als Input für den abschließenden Softwaretest verwendet werden.
Das selbe vorgehen wie bei den Softwaretests kann nun bei den SW-SW-Integrationstests übernommen werden. D.h. die Tests werden Toolgestützt vom Softwaretester spezifiziert und ausgeführt. Mit Hilfe der Software-Software-Integrationstests lässt sich die korrekte Zusammenarbeit von Softwaremodulen über definierte Schnittstellen, welche in der Softwarearchitekturspezifikation festgelegt wurden, nachweisen.
Einsteiger
Zeit
12:15-13:00
03. Juli
Raum
Raum "Madrid"
Zielpublikum
C-Programmierer, Softwaretester, QA-Mitarbeiter, Projektplanung, Projektmanagement
Themengebiet
Embedded Testing
ID
Mi1.2