Qualität entsteht aus klaren Fehlergrenzen, einer ausgewogenen Teststrategie und guter Beobachtbarkeit. Dieses Intensivseminar verbindet Entwicklungstests, Integrationsnachweise, CI, Logging, Metriken, Tracing und Störungsbearbeitung in einem gemeinsamen Qualitätsmodell.
Die Testpyramide wird nicht losgelöst vom Betrieb betrachtet. Jeder kritische Fehlerpfad erhält sowohl einen automatisierten Nachweis als auch die notwendige Telemetrie für den produktiven Ernstfall.
Inhaltsübersicht
- pytest-Struktur und Fixtures
- Routen- und Browserfluss-Tests
- Unit-Tests für Services und Domänenlogik
- Integrations- und Migrationstests
- Datenbanktests und Testdaten
- API-, Vertrags- und Integrationstests
- Coverage, Testqualität und Wartbarkeit
- Continuous Integration und Qualitätsgates
- Fehlertaxonomie und zentrale Handler
- Hooks, Fehlerbehandlung und Request-Abschluss
- Strukturiertes Logging und Korrelationskennungen
- Metriken, Tracing und Anwendungsdiagnose
- Verteilte Nachvollziehbarkeit und Betrieb
- Alarmierung und Störungsbearbeitung
- Authentifizierungs- und Autorisierungstests
- Sicherheitstests und Härtungsprüfung
- Praxisprojekt und Wissenssicherung
Lernziele
- Eine mehrstufige und wartbare Flask-Teststrategie entwickeln.
- Datenbank-, API-, Migrations- und Sicherheitspfade absichern.
- Coverage und Flaky Tests risikoorientiert behandeln.
- Fehler, Logs, Metriken und Traces konsistent korrelieren.
- CI-Gates, Dashboards, Alarme und Runbooks miteinander verbinden.
Zielgruppe
Flask-Entwickler, Testautomatisierer, QA-, SRE- und DevOps-Teams mit Verantwortung für Softwarequalität und produktive Diagnose.
Voraussetzungen
Gute Flask- und Python-Kenntnisse sowie erste Erfahrung mit Tests und Produktionsbetrieb.
Seminarinhalte
1. pytest-Struktur und Fixtures
Tests erhalten wiederverwendbare, klar begrenzte Setups für Anwendung, Client, CLI und Daten.
- Schritt 1: Testverzeichnisse und Benennung nach pytest-Konventionen anlegen.
- Schritt 2: App-Fixture mit TESTING-Konfiguration und sauberem Teardown erstellen.
- Schritt 3: Client-, Runner- und Daten-Fixtures aus der App-Fixture ableiten.
- Schritt 4: Fixture-Sichtbarkeit und Scope so klein wie möglich halten.
2. Routen- und Browserfluss-Tests
HTTP-Verhalten wird ohne realen Server über den Flask-Test-Client geprüft.
- Schritt 1: GET-, POST- und Redirect-Ketten mit Statuscodes und Headern testen.
- Schritt 2: Formular-, JSON-, Datei- und Cookie-Daten realistisch übermitteln.
- Schritt 3: Anmeldezustand und Request-Kontext kontrolliert erhalten.
- Schritt 4: HTML-Inhalte gezielt auf Semantik und Fehlermeldungen statt auf vollständige Zeichenketten prüfen.
3. Unit-Tests für Services und Domänenlogik
Geschäftsregeln werden ohne HTTP, echte Datenbank oder externe Dienste schnell und präzise geprüft.
- Schritt 1: Komplexe Logik aus Views in reine Funktionen oder Services extrahieren.
- Schritt 2: Abhängigkeiten über kleine Interfaces beziehungsweise Fakes ersetzen.
- Schritt 3: Normal-, Grenz- und Fehlerfälle aus den Fachregeln ableiten.
- Schritt 4: Tests nach beobachtbarem Verhalten statt internen Implementierungsdetails formulieren.
4. Integrations- und Migrationstests
Zusammenspiel von Anwendung, Datenbank, Queue und Fremdsystemadaptern wird in realitätsnahen Umgebungen überprüft.
- Schritt 1: Testdatenbank mit produktionsnahem Datenbanktyp bereitstellen.
- Schritt 2: Migrationen vom leeren Schema bis zum aktuellen Stand ausführen.
- Schritt 3: Transaktionen, Constraints und Adapter gegen lokale Testdienste prüfen.
- Schritt 4: Tests isolieren, parallelisierbar machen und Ressourcen zuverlässig abbauen.
5. Datenbanktests und Testdaten
Tests erhalten isolierte Datenbestände und verlassen die Datenbank in einem definierten Zustand.
- Schritt 1: Eigene Testkonfiguration und temporäre beziehungsweise containerisierte Datenbank bereitstellen.
- Schritt 2: Fixtures für Schema, Basissätze und fachliche Szenarien modular aufbauen.
- Schritt 3: Transaktionen oder Datenbankneuanlage als Isolationsstrategie auswählen.
- Schritt 4: Constraints, Migrationen und konkurrierende Zugriffe in automatisierten Tests abdecken.
6. API-, Vertrags- und Integrationstests
Schnittstellen werden gegen Statuscodes, Schemas, Nebenwirkungen und Kompatibilitätsregeln getestet.
- Schritt 1: Test-Client mit wiederverwendbaren Authentifizierungs- und Daten-Fixtures konfigurieren.
- Schritt 2: Erfolgs-, Validierungs-, Konflikt- und Berechtigungsfälle tabellarisch abdecken.
- Schritt 3: Response-Schemas und OpenAPI-Beispiele automatisiert vergleichen.
- Schritt 4: Datenbank-, Queue- und Fremdsystemintegrationen in getrennten Teststufen prüfen.
7. Coverage, Testqualität und Wartbarkeit
Abdeckung dient als Hinweis auf ungetestete Risiken und nicht als Ersatz für sinnvolle Testfälle.
- Schritt 1: Branch Coverage und kritische Module separat betrachten.
- Schritt 2: Fehlende Tests nach Risiko, Komplexität und Änderungshäufigkeit priorisieren.
- Schritt 3: Flaky Tests erkennen, reproduzieren und nicht durch bloße Wiederholung kaschieren.
- Schritt 4: Testlaufzeit und Wartungsaufwand regelmäßig gegen den erreichten Schutz bewerten.
8. Continuous Integration und Qualitätsgates
Jede Änderung durchläuft reproduzierbare Prüfungen, bevor sie zusammengeführt oder ausgeliefert wird.
- Schritt 1: Installation aus Lockfile beziehungsweise definierten Abhängigkeiten in sauberer Umgebung durchführen.
- Schritt 2: Formatierung, Linting, Typprüfung, Tests und Sicherheitsprüfung in getrennten Schritten ausführen.
- Schritt 3: Testmatrix für unterstützte Python- und Flask-Stände festlegen.
- Schritt 4: Abbruchkriterien, Artefakte und nachvollziehbare Berichte als Merge-Gate konfigurieren.
9. Fehlertaxonomie und zentrale Handler
Fehler werden nach Ursache, Verantwortlichkeit und gewünschter Außenwirkung kategorisiert.
- Schritt 1: Fachliche, Validierungs-, Infrastruktur- und Programmierfehler unterscheiden.
- Schritt 2: Domänenfehler in HTTP- beziehungsweise CLI-Antworten übersetzen.
- Schritt 3: Interne Details nur protokollieren und nach außen stabile Meldungen liefern.
- Schritt 4: Fehlerhandler für Browser, API und Hintergrundprozess konsistent testen.
10. Hooks, Fehlerbehandlung und Request-Abschluss
Querschnittsaufgaben werden an definierten Stellen des Anfragezyklus ausgeführt und zuverlässig aufgeräumt.
- Schritt 1: before_request, after_request und teardown-Funktionen nach ihrem Ausführungszeitpunkt auswählen.
- Schritt 2: Fachliche, technische und HTTP-Fehler in getrennte Klassen und Handler überführen.
- Schritt 3: Fehlerseiten beziehungsweise JSON-Fehler ohne Preisgabe interner Details erzeugen.
- Schritt 4: Aufräumlogik auch bei abgebrochenen Requests und ausgelösten Ausnahmen testen.
11. Strukturiertes Logging und Korrelationskennungen
Protokolle werden so gestaltet, dass technische Abläufe und einzelne Requests zuverlässig nachvollziehbar bleiben.
- Schritt 1: Logger-Hierarchie, Level und Handler zentral konfigurieren.
- Schritt 2: Request-, Benutzer- und Korrelationskennung als strukturierte Felder ergänzen.
- Schritt 3: Sensible Daten, Tokens und vollständige Request-Körper konsequent filtern.
- Schritt 4: Logausgabe für Entwicklung und zentrale Sammlung getrennt testen.
12. Metriken, Tracing und Anwendungsdiagnose
Latenz, Durchsatz, Fehler und Abhängigkeiten werden messbar gemacht, ohne unnötige Kardinalität zu erzeugen.
- Schritt 1: Golden Signals und fachliche Kennzahlen für die Anwendung festlegen.
- Schritt 2: Metriken an Request-Grenzen und kritischen Services erfassen.
- Schritt 3: Trace-Kontext über HTTP-, Datenbank- und Queue-Grenzen weitergeben.
- Schritt 4: Dashboards anhand realer Betriebsfragen statt dekorativer Diagramme strukturieren.
13. Verteilte Nachvollziehbarkeit und Betrieb
Logs, Metriken und Traces werden über Prozess- und Dienstgrenzen hinweg korreliert.
- Schritt 1: Korrelations- und Trace-Kontext bei eingehenden und ausgehenden Aufrufen übernehmen.
- Schritt 2: Dienstname, Version und Deploymentkennung als Telemetrieattribute ergänzen.
- Schritt 3: Service-Level-Indikatoren pro Vertrag und Nutzerpfad definieren.
- Schritt 4: Fehlerkette in einer simulierten Störung vom Gateway bis zur Datenbank nachvollziehen.
14. Alarmierung und Störungsbearbeitung
Alarme werden aus Nutzerwirkung abgeleitet und mit klaren Diagnose- und Eskalationsschritten verbunden.
- Schritt 1: Schwellwerte und SLO-Verletzungen statt einzelner Logzeilen als Signal definieren.
- Schritt 2: Warnung, dringenden Alarm und Informationsereignis voneinander trennen.
- Schritt 3: Runbooks mit Prüfpfad, Verantwortlichkeit und sicheren Sofortmaßnahmen erstellen.
- Schritt 4: Störung simulieren, Alarmweg prüfen und Erkenntnisse in Tests sowie Monitoring zurückführen.
15. Authentifizierungs- und Autorisierungstests
Sicherheitskritische Zustandsübergänge und Berechtigungsgrenzen werden systematisch als Negativfälle geprüft.
- Schritt 1: Fixtures für anonyme, aktive, gesperrte und unterschiedlich berechtigte Konten anlegen.
- Schritt 2: Login, Logout, Ablauf, Kennwortwechsel und Sitzungswiderruf testen.
- Schritt 3: Direkte URL-Aufrufe und manipulierte Objektkennungen gegen Berechtigungslecks prüfen.
- Schritt 4: Testmatrix in die kontinuierliche Integration aufnehmen und bei Regeländerungen aktualisieren.
16. Sicherheitstests und Härtungsprüfung
Die wichtigsten Schutzannahmen werden als wiederholbare Tests und Betriebschecks festgehalten.
- Schritt 1: Negativtests für Authentifizierung, Autorisierung, CSRF und Eingabegrenzen erstellen.
- Schritt 2: Sicherheitsheader, Cookie-Attribute und Fehlerausgaben automatisiert prüfen.
- Schritt 3: Abhängigkeits- und statische Analyse in die CI integrieren.
- Schritt 4: Härtungscheckliste vor Veröffentlichung und nach Infrastrukturänderungen ausführen.
Praxisprojekt
Eine Anwendung ohne verlässliche Qualitätssicherung erhält Testpyramide, CI und Telemetrie. Danach wird eine mehrstufige Störung ausgelöst, über Trace und Metriken eingegrenzt und durch einen neuen Regressionstest dauerhaft abgesichert.
Methodik
Kurze fachliche Einordnungen wechseln mit Demonstrationen, geführten Umsetzungen, Fehleranalysen und eigenständigen Übungen. Jede größere Änderung wird durch einen Test, eine Diagnose oder eine betriebliche Prüfroutine abgesichert. Die Arbeitsstände werden schrittweise zu einem durchgängigen Beispielprojekt zusammengeführt.
Fachbereichsleitung / Trainerteam / Ansprechpartner
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
Seminardetails
| Dauer: | 5 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 2.995 zzgl. MwSt. Inhaus: € 8.500 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Flask-Entwickler, Testautomatisierer, QA-, SRE- und DevOps-Teams mit Verantwortung für Softwarequalität und produktive Diagnose. |
| Voraussetzungen: | Gute Flask- und Python-Kenntnisse sowie erste Erfahrung mit Tests und Produktionsbetrieb. |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Vortrag, Demonstrationen, praktische Übungen am System |
| Seminararten: | Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
