Statische und dynamische Codeanalyse
Einleitung
Ein Softwaretest prüft und bewertet Software auf Erfüllung der für ihren Einsatz definierten Anforderungen und misst ihre Qualität. Die gewonnenen Erkenntnisse werden zur Erkennung und Behebung von Softwarefehlern genutzt. Tests während der Softwareentwicklung dienen dazu, die Software möglichst fehlerfrei in Betrieb zu nehmen.
Von diesem, eine einzelne Testmaßnahme bezeichnenden Begriff ist die gleich lautende Bezeichnung 'Test' (auch 'Testen') zu unterscheiden, unter der die Gesamtheit der Maßnahmen zur Überprüfung der Softwarequalität (inkl. Planung, Vorbereitung, Steuerung, Durchführung, Dokumentation usw.; siehe auch Definitionen) verstanden wird.
Den Nachweis, dass keine Fehler (mehr) vorhanden sind, kann das Softwaretesten nicht erbringen. Es kann lediglich fallibilistisch feststellen, dass bestimmte Testfälle erfolgreich waren. Edsger W. Dijkstra schrieb hierzu: „Program testing can be used to show the presence of bugs, but never show their absence!“ (Das Testen von Programmen kann die Existenz von Fehlern zeigen, aber niemals deren Nichtvorhandensein). Der Grund ist, dass alle Programmfunktionen und auch alle möglichen Werte in den Eingabedaten in allen ihren Kombination getestet werden müssten – was (außer bei sehr einfachen Testobjekten) praktisch nicht möglich ist. Aus diesem Grund beschäftigen sich verschiedene Teststrategien und -konzepte mit der Frage, wie mit einer möglichst geringen Anzahl von Testfällen eine große Testabdeckung zu erreichen ist.
Geben Sie einen Überblick über das Thema Software-Testverfahren.
Ihre Aufgaben
- Motivieren Sie das Gebiet der Software-Testverfahrene.
- Stellen Sie die in der Literatur gängigen Verfahren vor.
- Nutzen Sie praktische Beispiele um das Thema anschaulich zu präsentieren.
Sprechen Sie die Schnittstellen zu den nachfolgenden Vorträgen bitte mit den Kommilitonen ab.
Kür-Aufgabe
Machen Sie doch eine Umfrage unter Ihren Kommilitonen (Semester 1-7) welche Firmen welche Software Testverfahren einsetzen und warum. Das wäre aber schon das ++ hinter der 1.
Mögliche Fragen
- Wozu braucht man Software-Testverfahren?
- Wie funktioniert eine statische/dynamische Codeanalyse?
- Wie dokumentiert man die Ergebnisse?
- Wie ist der Ablauf einer statischen/dynamischen Codeanalyse?
Literaturs
- Hoffmann, D. W.: Software-Qualität. Berlin Heidelberg; Springer-Verlag, 2013. DOI 10.1007/978-3-642-35700-8_4
- Witte, F.: Testmanagement und Softwaretest. Berlin Heidelberg: Springer, 2001. ISBN 978-3-658-09963-3
- Elfriede, D; Jeff, R; John, P.: Software automatisch testen. Wiesbaden: Springer 2016. ISBN 978-3-658-09963-3
→ zurück zum Hauptartikel: Seminar SDE WS 20/21