3. SE - 6. Validierung von Software Flashcards
Definition Verifikation (von Software)
Entspricht das Produkt den Anforderungen
Definition Validierung (von Software)
Stellt Produkt Anwender in ihrer Arbeitsumgebung zufrieden?
Welche zwei Verfahren von Verifikation und Validierung gibt es?
Softwareinspektion und Softwaretest
Was passiert bei der Softwareinspektion?
Man prüft je nach Entwicklungsfortschritt die Spezifikationen, die Entwurfsmodelle oder den Quellcode auf Fehler
Was passiert bei der Softwaretest?
Man bringt das Programm zur Ausführung und prüft, ob es leistet was es soll
True or false?
Test können nie alle Möglichkeiten abdecken, die bei der Ausführung eines Programms vorkommen
True
Was passiert bei testcases?
Man entwirft Testfällte, die die zu tätigen Eingaben und die vom System erwarteten Ausgaben enthalten
Aus was werden Test Cases abgeleitet?
Use-Cases
Für was dienen Test Cases?
Dienen als Anleitung für die Tester
Was beschreiben Test Cases?
- Vorbedingungen
- Eingabedaten
- Aktionen
- Erwartete Ergebnisse
Welche Eingabewerten werden die Eingabedaten enthalten beim Testen?
gültige und ungültige
Welche Bestandteile sind wichtig in einem Testcase?
Projekt ID des Testcase Titel des Testcase Ersteller des Test Case Beschreibung Voraussetzung Datum und Uhrzeit der Testdurchführung Durchführender Tester Durchführende Schritte (Variante 1 (2,3,...))
plus eine Tabelle in denen Varianten getestet werden
Nenne die Spalten-Überschriften einer Testcase Datentabelle
Variante, Testdaten, Erwartetes Resultat, Tatsächliches Resultat, Pass/Fail
Was bedeutet Black-Box-Test?
Testfälle werden ausschließlich aus der Spezifikation abgeleitet
Was bedeutet White-Box-Test?
Beim Erstellen der Testfälle wird Wissen um den Aufbau des Programms berücksichtigt (Bsp. Array der Länge n mit Index 0 bis n-1)
Was für Testprinzipen gibt es?
Anforderungsbasiert Klassenbasiert Strukturell Pfadüberdeckung Testen auf Zufallswerte CRUD
Was für Testprinzipen gibt es? Erkläre diese
Anforderungsbasiert
Aus Use Cases werden Test Cases abgeleitet
Klassenbasiert
Ein- und Ausgabewerte klassifiziert nach der Art wie sie verarbeitet werden. Alle diese Äquivalenzklassen werden getestet.
Bsp. Ein Programm erhält laut Spezifikation zwischen 4 und 10 ganzzahlige Eingaben in fünfstelligen Wertebereich zwischen 10000 und 99999
Strukturell
Algorithmus bekannt, man versucht Grenzfälle abzudecken
Bsp. mittleren Wert bei einer binären Suche
Pfadüberdeckung
versucht, alle Ausführungspfade eines Programms abzudecken
Bsp. Wahr- und Falsch-Fall aller Verzweigungsbedingungen
Testen auf Zufallswerte
Ergänzend, weil Entwickler in Testcases eher jene Eingabedaten aufnehmen, die sie schon bei der Entwicklung besonders beachtet haben
CRUD
Datenbasiertes testen. Testfälle werden so zusammengestellt, dass ein objekt den Lebenszyklus Create-Read-Update-Delete durchläuft
Wie werden Testfälle beschrieben?
mit Modellen (NICHT textuell)
Aus Umgebungsmodellen und Systemmodellen können Modelle für mehrere Testfälle abgeleitet oder generiert werden. Nenne jeweils ein Bsp für beide Modelle
Umgebungsmodell: Use-Case-Diagramm
Systemmodell: Aktivitätsdiagramm
Was macht Lasttest/Stresstest?
simuliert große Benutzerzahlen
Was macht Usability-Test?
prüft Bedienbarkeit mit Testbenutzern
Was macht Recovery-Test?
testet Widerherstellung nach Systemausfällen, insbesondere die Datenintegrität nach Wiederherstellung
Was macht Sicherheitstest?
simuliert zB. einen potentiellen Angreifer
Wie verhalten sich die Teilkosten beim testen und wieso?
Teilkosten steigen mit er Zeit an, da Tests immer komplizierter und Detaillierter werden müssen
Wie verhalten sich die Kosten bei Tests?
Anfang hohe Kosten, welche dann aber mit der Zeit geringer werden
Was für ein Test ist der Unittest?
Schnittstellentest
Für was werden Unittest angewandt?
für die einzelnen Komponenten des Gesamtsystems
Über was werden Komponenten angesprochen?
Über ihre Schnittstellen
Richtlinien für Unittest
- Grenzen der Gültigkeitsbereiche aller Parameter testen
- Reaktionen auf ungültige Parameterkombinationen testen
- Reaktion auf Überlastung durch eine Vielzahl von Aufrufen testen
- zusammenwirkende Komponenten in unterschiedlicher Reihenfolge
Welches (Teil-)System wird beim Integrationstest/Systemtest getestet?
(Fangfrage)
Das Gesamtsystem
Welcher Test gehört auch noch zu Integrationstest/ Systemtest?
Performance Test
False or True?
Tester haben Zugriffe auf Quellcode. Sie berücksichtigen diese Kenntnisse beim Entwurf der Testcases
True
Automatisierte Testtools können zum Einsatz kommen. Ihr Einsatz ist besonders sinnvoll um/wenn:
- um große Last zu erzeugen
- wenn oft getestet muss, dass Initialaufwand zum Einrichten eines Testwerkzeugs gerechtfertigt ist
Ab wann spricht man vom Systemtest wenn zunächst nur einige Komponenten und dann immer mehr integriert sind
Vom Systemtest spricht man erst ab dem Zeitpunkt der vollständigen Integration aller Komponenten
Wann spricht man von einem Regressionstest?
Wenn es sich nicht um eine komplett neue Software handelt, sondern um neue Version
Was passiert bei einem Regressionstest?
auch unveränderter Code nochmals getestet werden muss, um unerwünschte Seiteneffekte des neuen Codes zu finden
Was für Teststufen gibt es?
Auslieferungstest (User-Acceptance Test)
Alphatest
Betatest
Wichtige Informationen Auslieferungstest (User-Acceptance-Test)
- Gesamtsystem wird getestet
- Tester haben keinen Zugriff auf Quellcode (Black Box)
Wichtige Informationen Alphatest
Hersteller von Standardsoftware führen oft einen internen Test durch, der Schwerpunkt ähnlich wie User-Acceptance-Test auf Funktionalität und Usability setzt
Wichtige Informationen Betatest
- erste Version einer Standardsoftware wird an (meist eingeschränkten) Benutzerkreis ausgegeben, um Fehlermeldungen zu sammeln
Danach folgen (Hersteller unterschiedlich benannt)
- Release Candidate (RC)
- Relase to Manufacturing (RTM)
- General Availability (GA)
Was sind die Gründe das bei kritischen Systemen Verifikation & Validierung einen noch größeren Teil von Budget und Zeit in Anspruch nehmen?
- Auswirkungen eines Ausfalls gravierender. Investitionen in V&V mindern Wahrscheinlichkeit solcher Ausfälle
- Kunden verlangen bei kritischen Systemen oft gesonderte Dokumentation von deren Verlässlichkeit
Was machen Bug Tracking Tools?
unterstützen Testprozess
Was machen Dynamische Analysewerkzeuge
messen zB den Speicherverbrauch einzelner Programmteile
Wie hoch ist der Aufwand für Testautomatiesierung und was muss mitgegeben werden?
hoher Aufwand
Testabläufe und Testdaten müssen Werkzeugen eingeben werden
Wann lohnen sie automatisierte Test vor allem?
- Regressionstest (wegen wiederkehrenden Kosten manueller Tests)
- Lasttest (mangelnde Alternative)
Was ist die Statische Codeanalyse?
Automatisierte Untersuchung des Quellcodes, ohne Programmausführung
Worauf liegt der Schwerpunkt der Statischen Codeanalyse?
nicht auf Laufzeitgehlern, sondern auf der Suche nach typischen und immer wiederkehrenden Fehlern
Kann man einstellen welche Art von Fehlern gesucht werden soll bei der Statischen Codeanalyse?
Ja, einstellbar