[no image in epub file]
Softwaretest
in der Praxis
Grundlagen, Methodik und Technologie
mit Vertiefung Automobilelektronik
Stefan Schmerler
Prof. Dr.-Ing. Stefan Schmerler (* 1964) ist seit über 20 Jahren mit dem Test elektronischer Steuergeräte in Forschung und Entwicklung befasst. Seine beruflichen Stationen beinhalten u. a. das Forschungszentrum Informatik Karlsruhe, Aviatis Corp. San Jose sowie eine Reihe leitender Tätigkeiten in der Daimler Konzernforschung und Serienentwicklung, derzeit verantwortlich für die Absicherung Elektrik/Elektronik Mercedes-Benz Pkw. Seit 2009 hält er eine Vorlesung über Softwaretest am Karlsruher Institut für Technologie.
Bibliografische Information der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.
Der vorliegende Text darf nicht gescannt, kopiert, übersetzt, vervielfältigt, verbreitet oder in anderer Weise ohne Zustimmung des Autors verwendet werden, auch nicht auszugsweise: weder in gedruckter noch elektronischer Form. Jeder Verstoß verletzt das Urheberrecht und kann strafrechtlich verfolgt werden.
Printed in Germany
Druck und Verlag: epubli GmbH, Berlin, www.epubli.de
Satz, Cover und Layout: Stefan Schmerler
Cover-Grafik: Best-Backgrounds/Shutterstock.com
Lektorat: Dr. Matthias Delbrück
Copyright: © 2020 Stefan Schmerler
1. Auflage 2020
Methodisches Testen ist der
intelligente und effiziente Umgang
mit der Unvollkommenheit
Vorwort
Dieses Buch ist als praktische Hilfestellung für all jene gedacht, die sich als Entwickler oder Manager mit der Fragestellung der Absicherung von Software bzw. eingebetteten Systemen auseinandersetzen. Es ist kein akademisches Lehrbuch noch erhebt dieser Leitfaden den Anspruch wissenschaftlicher Abhandlungen. Hier gibt es bereits hervorragende Literatur. Vielmehr soll die Lücke geschlossen werden zwischen der Theorie und der praktischen Umsetzung, also zum Beispiel die Adressierung der Fragestellungen:
▶Welche Testtechnologie soll eingesetzt werden für mein spezifisches Problem?
▶Wie lange und mit welchem Aufwand sollte ich testen, um guten Gewissens (was auch immer das beim Testen heißen mag) die Testphase abbrechen zu können?
▶Wie hoch ist das dann noch verbleibende Risiko, wie fehleranfällig ist mein System dann noch?
▶Wie kann ich als Auftraggeber den Reifegrad von Software messen, um ggf. die Annahme abzulehnen bzw. Nachbesserung zu verlangen.
▶Gibt es eine Metrik für Reifegrad und Qualität von Software, die einfach und schnell anzuwenden ist?
Dieses Buch richtet sich aber auch an diejenigen, die an einem Überblick über gängige Absicherungsverfahren für eingebettete Systeme im industriellen Kontext interessiert sind. Also weniger die Fragestellung, was theoretisch möglich ist oder was die wissenschaftliche Lehre sagt, sondern konkret: Wie machen es heute die anderen und warum?
Der industrielle Praxisbezug kommt hierbei ohne Einschränkung der Allgemeingültigkeit aus der Automobilindustrie. Der Autor verfügt über 20 Jahre an Erfahrung in der Entwicklung und Absicherung von Software für automobile Steuergeräteverbünde und gerade die Automobilelektronik beinhaltet alle Aspekte, die das Testen zu einer sehr anspruchsvollen Tätigkeit werden lassen wie der Test von Echtzeitsystemen und sicherheitskritischen Systemen, eine hohe Relevanz von Safety- und Security-Aspekten oder der Einsatz modellbasierter Verfahren in Entwicklung und Test.
All diese Aspekte kommen bei der Absicherung automobiler Steuergeräteverbünde zusammen, so dass der hier zum Einsatz kommende Methoden- und Technologiebaukasten nicht ganz zu Unrecht als Übermenge des industriellen Status Quo im Bereich Softwareabsicherung angesehen werden kann. Aus Sicht einer Industrie betrachtet, die jährlich Milliarden in die Entwicklung eingebetteter Systeme mit Software als größtem Wertschöpfungsfaktor investiert, ist eine hohe Testkompetenz elementar wichtig, denn letztlich wird etwa die Hälfte dieser Milliardeninvestition für Testen aufgebracht.
Es soll noch erwähnt werden, dass die praktischen Aspekte des Testens in diesem Buch auch Gegenstand einer Vorlesung am Karlsruher Institut für Technologie (KIT) für Studierende der Elektrotechnik und Informatik sind. Es sollte hiermit dem Umstand Rechnung getragen werden, dass Studierende im Lauf ihrer hervorragenden wissenschaftlichen Ausbildung an der Hochschule nicht zwangsläufig praktische Erfahrungen oder Kenntnisse im Umgang mit Testverfahren für Software sammeln. Das Buch konzentriert sich daher nicht ausschließlich auf State of the Art-Testverfahren und testmethodische Konzepte, es schafft auch die Verbindung zu interessanten, praxisrelevanten Testverfahren mit Forschungscharakter, wie dem evolutionären Test.
Stuttgart, Dezember 2020
Prof. Dr.-Ing. Stefan Schmerler
Inhaltverzeichnis
1 Grundlagen des Testens
1.1 Fehlerbegriff
1.2 Testen von Software
1.2.1 Testbegriff
1.2.2 Warum also ist Testen so schwierig?
1.2.3 Frontloading
1.2.4 Erfolgsfaktoren für den Test
1.2.5 Die sieben Grundsätze des Softwaretests
1.2.6 Testaufwände
1.3 Analytische Qualitätssicherung
1.3.1 Reviews
1.3.2 Statische Analysen
1.3.3 Symbolische Ausführung
1.3.4 Model Checking
1.3.5 Simulation
1.3.6 Testmethoden
1.3.6.1 Funktionaler Test
1.3.6.2 Strukturtest
1.3.6.3 Statistischer Test
1.3.6.4 Mutationentest
1.3.6.5 Evolutionärer Test
1.3.7 Back-to-Back-Test und Testorakel
1.4 Psychologische Aspekte des Testens
1.5 Zusammenfassung
2 Zuverlässigkeitsanalysen
2.1 Wichtige Eigenschaften von Embedded Software
2.2 Zuverlässigkeitsmodelle
2.2.1 Software-FMECA
2.2.2 Fehlerbaumanalyse
2.2.3 Markov-Modellierung
2.2.4 Stochastische Zuverlässigkeitsanalyse für Software
2.2.5 Stochastische Zuverlässigkeitsmodelle für Software
2.2.6 Zuverlässigkeitsmodell nach Musa
2.3 Zusammenfassung
3 Testprozess und Testphasen
3.1 Wasserfallmodell nach Boehm
3.2 Das klassische V-Modell
3.3 Iterative und inkrementelle Entwicklungsmodelle
3.4 Teststufen in der Softwareabsicherung
3.4.1 Unit-Test
3.4.2 Komponententest
3.4.3 Integrationstest
3.4.3.1 Big-Bang-Strategie
3.4.3.2 Bottom-up-Strategie
3.4.3.3 Top-down-Strategie
3.4.3.4 Collaboration-Strategie
3.4.3.5 Ad-hoc-Integration
3.4.3.6 Backbone-Integration
3.4.4 Systemtest
3.4.5 Produkttest
3.4.6 Abnahmetest
3.4.7 Produktionstest
3.4.8 Feldtest
3.4.9 Regressionstest und nachgelagerte Teststufen
3.5 Testprozess und Testaktivitäten
3.5.1 Testplanung
3.5.2 Testspezifikation
3.5.3 Testimplementierung
3.5.4 Testausführung
3.5.5 Testevaluierung
3.5.6 Test- und Fehlermanagement
3.6 Zusammenfassung
4 Statischer Test
4.1 Überblick Analytische Qualitätssicherung
4.2 Reviews
4.2.1 Review-Phasen
4.2.1.1 Review-Phase Planung
4.2.1.2 Review-Phase Einführung
4.2.1.3 Review-Phase Vorbereitung
4.2.1.4 Review-Sitzung
4.2.1.5 Review-Phase Nachbereitung
4.2.1.6 Review-Phase Wiedervorlage
4.2.2 Informelle Reviews
4.2.3 Technische Reviews
4.2.4 Inspektion
4.2.5 Walkthrough
4.2.6 Zahlen, Daten, Fakten …
4.3 Die goldenen Review-Regeln
4.4 Statische Analyse
Читать дальше