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
if
undelse
wird 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.