# Test -ein methodischer Versuch, mit dem festgestellt werden soll, ob Eigenschaften oder Leistung einer Sache, einer Person oder einer Hypothese den Erwartungen entsprechen" -Prozess der die Funktionalität der SW prüft # Fehler -sind Abweichungen zu einem geforderten beziehungsweise gewünschtem Sollzustand -Abweichung Soll-/Ist-Zustand # Testziele -Fehler aufzeigen -Qualität erfassen -Vertrauen erhöhen -Grenzen ermitteln -> Verhalten des Codes prüfem # Testbestandteile -Testfall -Testdaten -> Korrekt & fehlerhafte Daten -Testumgebung -> Software, Hardware, Netzwerk -Testprozedur -> Beschreibt die ganuen Instruktionen, die bei dem Testfall ausgeführt werden -Testausführung -> Verhalten der SW beobachten & Ausgabe prüfen -Testresultat -> Abgleich Erwartungswert vs. Realität -Testbericht -> Testresultate zusammen fassen, Performance-Metriken auswerten # Testpyramide -gibt an welche verschiedene Arten von Tests mit welcher Geschwindigkeit und zu welchen Kosten ausgeführt werden können. Somit werden bei "Unit tests" viele kleine Module und bei "GUI Tests" immer mehr zugehörige und komplexere Zusammenhänge im Code getestet. -Konzept der die ausgewogene Balance zw. unterschiedlichen Testarten Unterste Layer: Unit Tests Mittlere Layer: Integration Tests Top Layer: UI/End-to-End Fehler sollen frühzeitig, kostengünstig behoben werden Effizienz beim Testing -> Rasches Feedback Weiter oben in der Hierachie komplexere Tests # Prozessbeschreibung: Entwicklung von Testfällen -Testvorbedingungen -Testdefinition -Testdaten -Testerwartungen -Testnachbedingungen -Testrahmenbedingungen Positivtests: ->gültige Eingaben ->Prüfung des Funktionalität eines Testobjekts Negativtests: ->ungültige Eingaben ->Prüfung der Robustheit eines Testobjekts 1) Ziel: Definieren des eigentlichen Ziels des Testfallen 2) Bedingungen, Pre- und Postkonditionen 3) Eingabe/Daten: korrekte/fehlerhafte Daten, 4) Erwartete Ausgabe: Klar definierte Reaktion auf Eingabe 5) Schritte/Prozeduren: Konkrete Operationen die ausgeführt werden sollen 6) Dokumentation: Hilft bei Rekonstruktion & Weiterbildung # Testfälle: Rechenoperationen 1. Integer Division: Eingabe: 10, 3 Erwartete Ausgabe: 3 Beschreibung: Bei der Division von den Zahlen 10 und 3 soll der Quotient 3 sein, da der Restwert nicht ausgegeben wird. 2. Integer Addition: Eingabe: 10, 3 Erwartete Ausgabe: 13 Beschreibung: Bei der Addition von den Zahlen 10 und 3 soll die Summe 13 sein. 3. Integer Subtraktion: Eingabe: 10, 3 Erwartete Ausgabe: 7 Beschreibung: Bei der Subtraktion von den Zahlen 10 und 3 soll die Differenz 7 sein. # Testfälle: Zeilenumbruch 1. Normale Zeilenlänge: Eingabe: "Dies ist ein Satz der perfekt in die spezifizierte Zeilenlänge passt." Erwartete Ausgabe: "Dies ist ein Satz der perfekt in die spezifizierte Zeilenlänge passt." Beschreibung: Zeilenumbruchsfunktion soll den Eingabetext nicht modifizieren, da er in die spezifizierte Zeilenlänge passt. 2. keine Zeilenlänge: Eingabe: " " Ausgabe: " " Beschreibung: Bei keiner Zeilenlänge wird die Funktion nicht benutzt # Testfälle: Selbsteinschreibung horstl 1. Selbsteinschreibung bei Kapazitätgrenze Eingabe: Student schreibt sich ein Erwartete Ausgabe: Einschreibung abgelehnt 2. Selbsteinschreibung bei ausreichenden Plätzen Eingabe: Student schreibt sich ein Erwartete Ausgabe. Einschreibung erfolgt # Fehlertypen 1) latent: man findet ihn nicht 2) maskiert: Fehler, der von einem anderen Fehler verdeckt worden ist 3) kaskadiert: Folgefehler zu 1) OpenSSL Heartbleed (2014) zu 2) Pentium FDIV Bug (1994) zu 3) Ariane 5 Flug 501 (1996)