Dieser Lernzettel richtet sich nach den möglichen Themen von Teil 2 der gestreckten Abschlussprüfung (GAP) für Fachinformatiker Anwendungsentwicklung vom IT-Berufe-Podcast.
Inhaltsverzeichnis
Klassifizierung von Testverfahren
Arten von Testverfahren
- Statischer Test: Überprüfung des Codes, ohne ihn auszuführen.
 - Dynamischer Test: Testen durch Ausführen des Codes.
 - Funktionaler Test: Testet spezielle Funktionen der Software.
 
Wer testet?
Mensch (manuell) vs. Maschine (automatisch)
- Manuell: Tester führen Testfälle manuell aus.
- Vorteil: Flexibilität
 - Nachteil: Zeitaufwendig
 
 - Automatisch: Testfälle werden durch Software ausgeführt.
- Vorteil: Schnelligkeit und Wiederholbarkeit
 - Nachteil: Muss zunächst aufwändig programmiert/erstellt werden
 
 
Entwickler vs. Benutzer
- Entwickler: Erstellt die Unit-Tests und Integrationstests.
 - Benutzer: Führt oft Abnahme- und Usability-Tests durch.
 
Was wird getestet?
Komponente (Unit-Test/Funktionstest/Klassentest) vs. Integration vs. System (End-to-End)
- Komponente: Einzelne Funktionen oder Methoden werden isoliert getestet.
- Beispiel: Ein Unit-Test für eine 
sum-Funktion. 
 - Beispiel: Ein Unit-Test für eine 
 - Integration: Interaktion zwischen Komponenten wird getestet.
- Beispiel: Ein Integrationstest, der überprüft, ob eine Datenbank und ein Webserver korrekt interagieren.
 
 - System (End-to-End): Gesamter Ablauf einer Anwendung wird getestet.
- Beispiel: Ein E2E-Test, der eine Benutzeranmeldung von Anfang bis Ende simuliert.
 
 
Testpyramide
- Unit-Tests: Basis der Pyramide, höchste Anzahl an Tests.
 - Integrationstests: Mittlere Ebene, weniger aber komplexere Tests.
 - Systemtests: Spitze der Pyramide, geringste Anzahl, sehr komplex.
 
Wie wird getestet?
Bottom-Up vs. Top-Down
- Bottom-Up: Beginnt mit den untersten Komponenten (z.B. Methoden, Funktionen).
 - Top-Down: Beginnt bei der höchsten Abstraktionsebene (z.B. gesamte Anwendung).
 
Statisch (Kompilierzeit) vs. Dynamisch (Laufzeit)
- Statischer Test: Überprüfung des Codes, ohne ihn auszuführen.
 - Dynamischer Test: Testen durch Ausführen des Codes.
 
Ohne Kenntnis des Codes (Blackbox) vs. mit Kenntnis des Codes (Whitebox)
- Blackbox: Testen nur anhand der Eingabe- und Ausgabewerte, ohne interne Logik zu kennen.
 - Whitebox: Tester kennen die interne Struktur des Programms und können spezifische Tests dafür entwerfen.
 
Explorativ
- Definition: Tester folgen keinem vordefinierten Testplan, sondern erkunden die Software explorativ.
 
Schreibtischtest/Review
- Manuelle Überprüfung des Codes oder Designs, unter Sichtung des Codes.
 
Wann wird getestet?
Vor vs. nach der Entwicklung
- Vor der Entwicklung: Z.B. durch TDD (Test Driven Development).
 - Nach der Entwicklung: Traditionelle Methode, Tests werden nach der Entwicklung geschrieben.
 
Abnahmetest
- Endgültige Überprüfung vor dem Go-Live, oft durch den Kunden.
 
Warum wird getestet?
Regressionstest
- Überprüfung, ob durch neue Änderungen keine bestehenden Funktionen kaputt gegangen sind.
 
Lasttest/Belastungstest
- Überprüfung der Systemperformance unter Lastbedingungen.
 
Smoketest
- Einfache Tests, schnelle und Oberflächliche Tests, die sicherstellen, dass die grundlegenden Funktionen einer Anwendung funktionieren.
 
Methoden zur Ermittlung von Testfällen
Anweisungsüberdeckung vs. Zweig-/Pfadüberdeckung
- Anweisungsüberdeckung: Jede Anweisung im Code wird mindestens einmal durchlaufen.
 - Beispiel: Ein einfacher Unit-Test, der sicherstellt, dass jede Methode aufgerufen wird.
 
- Zweigüberdeckung: Jeder Zweig im Code wird mindestens einmal durchlaufen.
 - Beispiel: Bei 
ifundelsewird jeder Zweig getestet. 
- Zweig-/Pfadüberdeckung: Alle möglichen Pfade durch den Code werden getestet.
 - Beispiel: Testen von allen möglichen Wegen durch Schleifen.
 
Äquivalenzklassen
- Einteilung der Eingabedaten in Bereiche, die sich ähnlich verhalten.
 - Beispiel: Wenn eine Methode nur positive Ganzzahlen akzeptiert, bilden negative Zahlen, die Zahl 0 und positive Zahlen drei Äquivalenzklassen.
 
Grenzwertanalyse/Extremwertetest
- Testet die Randwerte der Äquivalenzklassen.
 - Beispiel: Wenn eine Funktion Zahlen zwischen 1 und 100 akzeptiert, testet man 0, 1, 100 und 101.
 
Modultests erstellen und durchführen
Test-Doubles: Stubs vs. Mocks
- Stubs: Simulieren das Verhalten einer Komponente, geben aber vordefinierte Antworten zurück.
 - Mocks: Überprüfen ob die erwarteten Interaktionen tatsächlich aufgetreten sind.
 
Eigenschaften guter Unit-Tests
- Korrekt: Der Test muss das tun, was er soll.
 - Isoliert: Sollte keine Abhängigkeiten zu anderen Tests haben.
 - Schnell: Muss schnell laufen, um die Entwicklung nicht zu behindern.
 - Aussagekräftig: Sollte klare und nützliche Informationen liefern.
 - Wartbar: Sollte einfach zu aktualisieren sein, wenn sich der Code ändert.
 - Einfach durchführbar: Sollte leicht wiederholbar sein.
 
Testkonzepte erstellen und Tests durchführen sowie Testergebnisse bewerten und dokumentieren
Definition der Inhalte eines Tests
- Testkonzepte: Übergeordnete Strategien und Ziele für den Test.
 - Testdaten: Eingabewerte für den Test.
 - Testszenario: Die konkreten Schritte, die im Test durchgeführt werden.
 
Beschreiben des Testumfangs
- Grenzbelastung: Maximal erwartete Systemlast.
 - Stabilität: Dauer und Zuverlässigkeit des Systems unter Last.
 
Testdatengeneratoren
- Werkzeuge oder Skripte, die automatisch Testdaten erzeugen.
 - Beispiel: Ein Skript, das automatisch eine CSV-Datei mit Testdaten erzeugt.
 
Daten und Sachverhalte aus Tests multimedial aufbereiten
- Visualisierung: Nutzung von Grafiken, Charts oder Dashboards, um Testergebnisse darzustellen.
 - Präsentationen: Erstellung von Präsentationen, um die Testergebnisse und -strategien im Team oder gegenüber Stakeholdern zu erläutern.
 - Berichterstattung: Erstellung von detaillierten schriftlichen Berichten, um den Testprozess und die Ergebnisse zu dokumentieren.
 
Testprozess
Auswahl des Testverfahrens
- Unit-Tests für Einzelkomponenten
 - Integrationstests für Interaktion zwischen Komponenten
 - Systemtests für Gesamtverhalten
 
Kriterien für Testergebnisse
- Festlegung von Erfolgskriterien
 - Metriken (z.B. Anzahl der gefundenen Fehler, Durchlaufzeit)
 
Testdaten generieren und auswählen
- Repräsentative Datensätze
 - Manuell erstellte oder automatisch generierte Daten
 - Randomisierte Daten
 
Testprotokoll und Auswertung
- Dokumentation der Testergebnisse
 - Analyse basierend auf verschiedenen Kriterien
 - Fehlerbehebungs- und Verbesserungsstrategien
 
Auswerten von Testergebnissen, z.B. Soll-Ist-Vergleich
- Direkter Vergleich der erwarteten Ausgaben mit den tatsächlichen Ausgaben des Tests.
 
Testprotokolle
- Detaillierte Dokumentation jedes Tests, einschließlich verwendeter Testdaten, durchgeführter Schritte und erzielter Ergebnisse.
 
Kontrollverfahren
Hardwaretest
- Wareneingangskontrolle: Überprüfung der angelieferten Hardware auf Mängel.
 - Warenausgangskontrolle: Überprüfung der Hardware vor dem Versand an den Kunden.
 - Abnahmeprotokoll: Dokumentation der Überprüfung und Annahme der Hardware.
 
Software-Test
- Testverfahren: Auswahl der geeigneten Methoden und Werkzeuge für den Software-Test.
 - Abnahmeprotokoll: Dokumentation der Software-Tests und -Ergebnisse als Nachweis für die Erfüllung der Anforderungen.
 
Weiteres Lernmaterial
Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.