Formale Verifikation:
Algorithmische Beweisführung der Korrektheit für alle Situationen
Test:
Explorative Untersuchung auf Fehlerfreiheit für bestimmte Situationen
Statische Testverfahren:
Quellcode wird untersucht, aber nicht ausgeführt Beispiele: Syntaxprüfung durch Parser, Code-Review durch Entwickler
Dynamische Testverfahren:
Quellcode wird ausgeführt
Beispiele: Zustandserkennung durch Logger, Gesteuerte Ausführung durch Debugger, Ergebnisvergleich durch Tests
Komponententests:
Untersuchung der Fehlerfreiheit einzelner Module (Klassen etc.)
Integrationstests:
Untersuchung der fehlerfreien Zusammenarbeit mehrerer Module als Gesamtsystem
Testdurchführung mit JUnit
Tests einzelner Methode einer Klasse (Komponententestverfahren)
Ausführung von Methoden der Klasse (Dynamisches Testverfahren)
Vergleich von erwartetem und erreichtem Ergebnis
Überdeckungstests
Jeder Teil der Testmethode soll getestet werden
Festlegung von Testfällen
Manuelle Kontrolle der Überdeckung aufwändig
Automatische Kontrolle der Überdeckung möglich
Beispiel: EclEmma als Eclipse-Plugin
Nutzung von EclEmma für Überdeckungstests
Ausführung als eigene Ausführungskonfiguration in Eclipse
Zeilengenaue Protokollierung während der Ausführung
Anzeige der Ergebnisse durch farbige Hinterlegung der Zeilen
Anzeige der Ergebnisse methodengenau durch prozentuale Angaben
Gründe für Versionierung - Einzelperson
Entwicklung von Softwareprodukten ist großteils iterativ
Iterationen führen zu unterschiedlichen Entwicklungsständen
Wunsch: Historie der Entwicklungsstände sollte nachvollziehbar sein
Wunsch: Entwicklungsstände sollten wiederhergestellt werden können
Gründe für Versionierung - Gruppen
Entwicklung von Softwareprodukten ist kollaborativ
Wunsch: Entwicklungsstände zentral bereitstellen
Wunsch: Entwicklungsstände einheitlich benennen
Wunsch: Parallele Entwicklungen ermöglichen
Bezeichnungen von Versionen
Bezeichnungsschema von Entwicklungsständen, oft in aufsteigender Reihenfolge
Bezeichnungsschema fast ausschließlich numerisch und oft hierarchisch gegliedert
Beispiel für Bezeichnungsschema: „Semantic Versioning“
Entwicklungsstände werden als Versionen oder Revisionen bezeichnet In Modul M7: Versionen für Gesamtprodukte, Revisionen für einzelne Komponenten
Gründe für Automatisierung
Softwareentwicklung endet nicht beim Codieren
Zusätzliche Tätigkeiten wie Linken, Kompilieren, Testen, Paketieren, Einsetzen
Tätigkeiten werden wiederholt ausgeführt
Ablauf der Automatisierung
Festlegen und Konfigurieren der auszuführenden Schritte (Pipeline)
Festlegen von Startbedingungen (Trigger)
Ausführen der Schritte mit Erfolgsüberwachung (Build)
Optional: Weiterverarbeiten der Ergebnisse
Last changed2 years ago