06 - Verifikation und Validierung Flashcards
Definition: Verifikation
Entspricht das Produkt den Anforderungen?
Definition: Validierung
Stellt das Produkt die Anwender in ihrer Arbeitsumgebung zufrieden?
Zwei Verfahren der V&V
1) Softwareinspektion
2) Softwaretest
Definition: Testcases
Da nicht alle Möglichkeiten durch Tests abdeckbar sind, werden Testcases entworfen, die die zu tätigenden Eingaben und die vom System erwarteten Ausgaben enthalten.
Bestandteile: Testcases (4)
1) Vorbedingungen
2) Eingabedaten (Gütlig und Ungültig)
3) Aktionen
4) Erwartete Ergebnisse
Fehlerklassen der V&V (6)
1) Datenfehler
2) Steuerungsfehler
3) Ein-/Ausgabefehler
4) Schnittstellenfehler
5) Speicherverwaltungsfehler
6) Exception-Verwaltungsfehler
Definition: White-Box
Beim erstellen der Tests wissen die Tester vom Programmaufbau
Definition: Black-Box
Testfälle werden ausschließlich aus der Spezifikation abgeleitet und die Tester wissen nichts über den Programmaufbau
Testprinzipien (6)
1) Anforderungsbasiert
2) Klassenbasiert
3) Strukturell
4) Pfadüberdeckung
5) Testen auf Zufallswerte
6) CRUD-Eigenschaften
Definition: Anforderungsbasiert (Testprinzipien)
Hier werden aus den Use-Cases Test-Cases abgeleitet und getestet.
Definition: Klassenbasiert (Testprinzipien)
Ein- und Ausgabewerte werden klassifiziert nach der Art wie sie verarbeitet werden. Alle diese Äquivalenzklassen werden getestet.
Definition: Strukturell (Testprinzipien)
Man kennt den Algorithmus und versucht Grenzfälle abzudecken
Definition: Pfadüberdeckung (Testprinzipien)
Man versucht, alle Ausführungspfade eines Programms abzudecken (Coverage).
Definition: Testen auf Zufallswerte (Testprinzipien)
z.B. weil Entwickler in Testcases eher jene Eingabedaten aufnehmen, die sie schon bei der Entwicklung besonders beachtet haben, macht das Testen auf Zufallswerte sinn
Definition: CRUD-Eigenschaften (Testprinzipien)
Datenbasiertes Testen. Testfälle werden so zusammengestellt, dass ein Objekt den Lebenszyklus Create-Read-Update-Delete durchläuft.
Definition: Model Based Testing
Die Testfälle werden hier nicht textuell sondern in Modellen beschrieben
Nicht-funktionale Tests (4)
1) Lasttest
2) Usability-Test
3) Recovery-Test
4) Sicherheitstest
Teststufen (4)
1) Unittest
2) Integrationstest
3) Regressionstest
4) User Acceptance Test
Definition: Unittest
Diese Art von Tests werden für die einzelnen Komponenten des Gesamtsystems angewandt. Sie werden über ihre Schnittstelle angesprochen
Definition: Integrationstest
Hier wird das Gesamtsystem nach White-Box Schema getestet. Es werden auch nach nicht-funktionalen Aspekten getestet.
Definition: Regressionstest
Wenn es sich um eine neue Version einer Software handelt, spricht man von einem Regressionstest. Damit ist gemeint, dass auch der unveränderte Code nochmals getestet werden muss, um unerwünschte Seiteneffekte des neuen Codes zu finden.
Definition: User-Acceptance-Test
Hier wird auch das Gesamtsystem getestet, aber dieses mal auf Black-Box Ebene.
Teststufen COTS-Software (4)
1) Alphatest
2) Betatest
3) Release Candidate
4) Release to Manufacturing
5) General Availability
Definition: Alphatest (COTS)
Hier testet das Entwicklerteam die Software selbst (normalerweise nur ein kleiner Kreis).
Definition: Betatest (COTS)
Hier wird die Software zu einer Gruppe von Black-Box Testern geschickt, die dann die Beta-Version der Software testen dürfen.
Definition: Release Candidate (COTS)
Hier wird eine Fertigversion der Software getestet. An dieser Version darf aber nichts mehr am Quelltext verändert werden.
Definition: Release to Manufacturing (COTS)
Jetzt wird die Fertigversion der Software an die Hersteller weitergegeben, damit sie für die einzelnen Hersteller getestet werden kann.
Definition: General Availability (COTS)
Jetzt ist die Software für den Markt bereit und wird auch von diesem dementsprechend getestet.
V&V bei Kritischen Systemen (3)
1) V&V Großen monetären und zeitlichen Anspruch
2) Auswirkungen eines Ausfalls sind gravierender
3) Kunden verlangen oft gesonderte Dokumentation von der Verlässlichkeit von kritischen Systemen
Definition: Statische Codeanalyse
Eine automatisierte Untersuchung des Quellcodes, ohne das Programm auszuführen. Hier wird insbesondere nach typischen, immer wiederkehrenden Fehlern gesucht.