Verifikation und Validierung von Software Flashcards
Verifikation
“Entspricht das Produkt den Anforderungen?”
Validierung
“Stellt das Produkt die Anwender in ihrer Arbeitsumgebung zufrieden?”
Verfahren der V&V
- Softwareinspektion
- Softwaretest
Softwareinspektion
Je nach Entwicklungsfortschritt Prüfen der Spezifikationen, Entwurfsmodelle und Quellcode auf Fehler
Softwaretest
- Programm zur Ausführung bringen und prüfen, ob es leistet, was es soll
- soll kostenökonomisch sein, wird exponentiell teurer, je mehr Fehler gefunden werden sollen
- unmöglich alle zu finden
Testcases
- Szenarien, die die zu tätigenden Eingaben und die vom System erwartenden Ausgaben enthalten
- Abdecken möglichst vieler Möglichkeiten
- werden aus Use-Cases abgeleitet (Anleitung für Tester)
Ablauf Testen
1) Entwerfen der Testfälle
2) Erstellen der Testdaten
3) Ausführung des Programms mit Testdaten
4) Vergleich der Ergebnisse mit Testfällen
Was beschreiben Testcases?
- Vorbedingungen
- Eingabedaten (müssen gültige und ungültige Eingabewerte enthalten)
- Aktionen
- Erwartete Ergebnisse
Fehlerklassen
- Datenfehler
- Steuerungsfehler
- Ein-/Ausgabefehler
- Schnittstellenfehler
- Speicherverwaltungsfehler
- Exception-Verwaltungsfehler
Problem: Fehler aus Spezifikation bleiben unentdeckt
White Box Test
Beim Erstellen der Testfälle wird Wissen um den Aufbau des Programms berücksichtigt (z.B. Arraylänge bekannt)
Black Box Test
Testfälle werden ausschließlich aus Spezifikation abgeleitet (Aufbau des Programms nicht bekannt / berücksichtigt)
Testprinzipien (6)
1) Anforderungsbasiert (Test Cases aus Use Cases abgeleitet)
2) Klassenbasiert (Ein- und Ausgabewerte werden klassifiziert nach der Art wie sie verarbeitet werden –> Alle Äquivalenzklassen werden getestet)
3) Strukturell (Abdecken von Grenzfällen bei bekanntem Algorithmus)
4) Pfadüberdeckung (Abdecken aller Ausführungspfade eines Programms)
5) Testen auf Zufallswerte (ergänzend, um Blick zu erweitern)
6) CRUD (Datenbasiertes Testen. Objekt durchläuft Create-Read-Update-Delete)
Model based Testing
- Testfälle werden mit Modellen beschrieben
- aus Umgebungsmodellen abgeleitet (Use-Case- oder Aktivitätsdiagramme)
Nicht-funktionale Tests
- Lasttest/Stresstest: simuliert große Benutzerzahlen
- Usability-Test: prüft Bedienbarkeit mit Testnutzern
- Recovery-Test: testet Wiederherstellung und Datenintegrität nach Systemausfällen
- Sicherheitstest gegen potentielle Angreifer
Teststufen: Unittest (Schnittstellentest)
- einzelne Komponenten des Gesamtsystems werden über ihre Schnittstelle angesprochen
- Grenzen der Gültigkeitsbereiche aller Parameter testen
- Reaktion auf Kombinationen von gültigen und ungültigen Parametern
- Reaktion auf Überlastung durch Vielzahl von Aufrufen