Was ist der wesentliche Unterschied zwischen Software-Verifikation und Validierung?
Verifikation prüft ob das Produkt gemäß den Spezifikationen korrekt gebaut wurde (Build the product right) während die Validierung sicherstellt dass das richtige Produkt für die Kundenanforderungen erstellt wurde (Build the right product).
Welche Einschränkung formulierte Edsger W. Dijkstra bezüglich des Testens?
Programmtests können sehr effektiv die Anwesenheit von Fehlern zeigen aber sie sind gänzlich ungeeignet um deren Abwesenheit zu beweisen.
Was charakterisiert einen Unit-Test im Software-Testing?
Ein Unit-Test prüft einzelne isolierte Teile des Programmcodes wie Funktionen oder Methoden auf ihre korrekte Funktionalität.
Was ist das Ziel von Komponenten-Tests?
Komponenten-Tests zielen darauf ab die Schnittstellen einzelner Software-Komponenten auf ihre Korrektheit zu prüfen.
Wie unterscheiden sich Integrations-Tests von System-Tests?
Integrations-Tests prüfen das Zusammenspiel mehrerer verbundener Komponenten während System-Tests das vollständige integrierte Gesamtsystem validieren.
Was definiert einen Akzeptanztest (Acceptance Trial)?
Ein Akzeptanztest ist die Prüfung des finalen Systems durch den Käufer oder Endnutzer um die Einsatzfähigkeit unter realen Bedingungen zu bestätigen.
Was ist der Zweck von Regressionstests?
Regressionstests sind wiederholbare Tests die nach jeder Code-Änderung sicherstellen dass bestehende Funktionalitäten nicht durch neue Fehler beeinträchtigt wurden.
Wie definiert sich Test-driven Development (TDD)?
TDD ist ein Prozess bei dem Tests basierend auf Anforderungen erstellt werden bevor der eigentliche Programmcode geschrieben wird um diesen gegen die Tests zu validieren.
Was ist das Kernmerkmal von Black-Box-Tests?
Black-Box-Tests erfolgen ohne Kenntnis der internen Implementierung und basieren ausschließlich auf den definierten Schnittstellen und Anforderungen.
Was wird bei White-Box-Tests im Gegensatz zu Black-Box-Tests berücksichtigt?
Bei White-Box-Tests wird die interne Implementierung und die logische Struktur des Programmcodes explizit in die Testfallgestaltung einbezogen.
Was versteht man unter Gray-Box-Testing?
Gray-Box-Testing kombiniert Ansätze beider Welten indem zwar die Schnittstellen getestet werden aber auch Teilkenntnisse der internen Algorithmen in den Test einfließen.
Was ist der Fokus von nicht-funktionalen Tests?
Nicht-funktionale Tests prüfen Attribute wie Performance Antwortzeit Benutzbarkeit Stressresistenz Sicherheit und Stabilität des Systems.
Wie unterscheiden sich Performance-Tests von Stress-Tests?
Performance-Tests messen das Systemverhalten unter normaler oder hoher Last während Stress-Tests die Belastbarkeit an und über den Grenzen der Spezifikation prüfen.
Was ist das Prinzip des Mutation Testings?
Beim Mutation Testing werden absichtlich kleine syntaktische Fehler in den Code eingebaut um zu prüfen ob die vorhandene Test-Suite diese Änderungen erkennt.
Was ist der Unterschied zwischen statischen und dynamischen Tests?
Statische Tests analysieren den Code ohne Ausführung (zum beispiel Reviews oder Compiler-Checks) während dynamische Tests das Programm mit Eingabedaten ausführen.
Was charakterisiert einen Back-to-Back Test?
Hierbei werden zwei verschiedene Implementierungen derselben Anforderungen verglichen um durch Ergebnisdifferenzen Fehler aufzudecken.
Was ist das Ziel von Fuzz Testing?
Fuzz Testing bombardiert ein System mit zufälligen Daten um Abstürze Pufferüberläufe oder fehlerhafte Code-Assertionen zu provozieren.
Wie ist ein Testfall (Test Case) formal definiert?
Ein Testfall besteht aus einem Namen einem Satz von Eingabedaten inklusive Vorkonditionen und der Beschreibung der erwarteten Ausgabe sowie Postkonditionen.
Was umfasst eine Test-Suite?
Eine Test-Suite ist eine strukturierte Sammlung mehrerer zusammengehöriger Testfälle.
Welche vier Schritte umfasst das allgemeine Testmodell nach Sommerville?
Das Modell umfasst das Design der Testfälle die Vorbereitung der Testdaten die Programmausführung mit diesen Daten und den Vergleich der Ergebnisse mit den Testfällen.
Welches Mindset sollte ein Tester laut der Vorlesung gegenüber seinem Code einnehmen?
Ein Tester sollte sich als Feind des eigenen Codes betrachten um die Heuristik zur Identifikation kritischer Fehler zu maximieren.
Was bedeutet Äquivalenzklassenbildung beim Black-Box-Test?
Eingabedaten werden in Klassen unterteilt bei denen davon ausgegangen wird dass das System sie funktional identisch verarbeitet um die Anzahl der Testfälle zu reduzieren.
Warum sind Randwertanalysen (Edge Cases) so wichtig?
Fehler treten statistisch gehäuft an den Grenzen von Wertebereichen auf wie zum Beispiel bei leeren Listen maximalen Int-Werten oder Divisionen durch Null.
Welche Arten von Edge Cases sollten bei Zeitberechnungen beachtet werden?
Wichtige Edge Cases sind Jahreswechsel Zeitumstellungen von Sommer- auf Winterzeit Zeitzonensprünge sowie der Schalttag am 29. Februar.