Test-Automatisierung & Formale Verifikation in der Thesis

Unit Testing, Property-Based Testing, Model Checking und formale Verifikation: So weisen Sie Korrektheit und Qualitaet Ihrer Software in der Thesis nach – mit Testpyramide, Coverage-Metriken, TDD und CI-Integration.

Unit & Integration Tests
Property-Based Testing
Formale Verifikation
Coverage-Metriken
TDD & CI

1. Die Testpyramide: Strategie fuer die Thesis

Unit Tests (Basis)

Einzelne Funktionen/Methoden isoliert testen. Schnell, deterministisch, viele davon. Tools: JUnit 5 (Java), pytest (Python), Jest (JS/TS), Go testing. Mocks/Stubs fuer Abhaengigkeiten. Ziel: 80%+ Line Coverage als Richtwert.

Integration Tests (Mitte)

Zusammenspiel mehrerer Komponenten testen: API + Datenbank, Service + Message Queue. Langsamer als Unit Tests. Tools: Testcontainers (Docker-basiert), Spring Boot Test, Supertest (Node.js).

E2E Tests (Spitze)

Gesamtes System aus Nutzerperspektive. Langsam, fragil, teuer – wenige davon. Tools: Cypress, Playwright, Selenium. In der Thesis: 3–5 Hauptszenarien als E2E, Rest als Unit/Integration.

2. Coverage-Metriken: Was messen Sie?

MetrikBeschreibungFormelRichtwert Thesis
Line CoverageAnteil der ausgefuehrten CodezeilenAusgefuehrte Zeilen / Gesamt≥ 80% (BA), ≥ 85% (MA)
Branch CoverageAnteil der durchlaufenen Verzweigungen (if/else)Durchlaufene Branches / Gesamt≥ 70%
MC/DCModified Condition/Decision Coverage – jede Bedingung beeinflusst das Ergebnis unabhaengigStreng: Jede Condition wird isoliert geaendertSicherheitskritisch (DO-178C Level A)
Mutation ScoreAnteil der durch Tests erkannten kuenstlichen Fehler (Mutanten)Getötete Mutanten / Gesamt≥ 70% (zeigt Testqualitaet, nicht nur -quantitaet)

Coverage ≠ Qualitaet

100% Line Coverage bedeutet nicht, dass der Code fehlerfrei ist – es bedeutet nur, dass jede Zeile ausgefuehrt wurde. Die Tests koennten trotzdem keine sinnvollen Assertions enthalten. Mutation Testing (PIT fuer Java, mutmut fuer Python) ist ein staerkerer Indikator: Kuenstliche Fehler (Mutanten) werden in den Code eingefuegt – wenn die Tests sie nicht finden, sind die Tests zu schwach. In der Thesis: Coverage berichten, aber nicht als alleiniges Qualitaetsmass.

3. Property-Based Testing

Statt einzelne Testfaelle manuell zu schreiben, definieren Sie Eigenschaften (Properties), die fuer alle Eingaben gelten muessen. Das Framework generiert automatisch hunderte zufaellige Eingaben und sucht nach Gegenbeispielen.

Konzept & Tools

  • Hypothesis (Python): Der Standard fuer Property-Based Testing in Python
  • jqwik (Java): JUnit-5-Integration, Arbitrary-basiert
  • QuickCheck (Haskell, Ursprung): Das Originale PBT-Framework
  • fast-check (TypeScript/JS): Fuer Frontend und Node.js

Thesis-Einsatz

Properties definieren: „Fuer alle Listen xs gilt: sort(xs) hat dieselbe Laenge wie xs." „Fuer alle Eingaben gilt: decode(encode(x)) == x." (Roundtrip-Property). PBT findet Grenzfaelle, die manuell geschriebene Tests uebersehen (leere Listen, Unicode, Integer-Overflow). In der Thesis: PBT als Ergaenzung zu Unit Tests – zeigt fortgeschrittene Testkompetenz.

4. Formale Verifikation: Korrektheit beweisen

AnsatzIdeeToolsThesis-Einsatz
Model CheckingAlle moeglichen Zustaende eines Systems systematisch durchsuchen und Eigenschaften pruefen (Temporal Logic: LTL, CTL)SPIN (Promela), NuSMV, UPPAAL (Echtzeit), TLA+ (Lamport)Protokolle, Concurrent Systems, CPS
TheorembeweiserMathematischer Beweis der Korrektheit mit Hilfe eines Proof AssistantsCoq, Isabelle/HOL, Lean 4, AgdaAlgorithmus-Korrektheit, Kryptographie, Compiler-Verifikation
Abstract InterpretationUeberapproximation des Programmverhaltens – Fehler finden ohne alle Pfade zu durchlaufenAstrée, Frama-C, Infer (Facebook)Sicherheitskritische Software, C/C++ Analyse
Symbolic ExecutionProgramme mit symbolischen statt konkreten Werten ausfuehren – alle Pfade explorierenKLEE, angr, ManticoreSecurity (Bug-Finding), Testgenerierung

Formale Verifikation in der Thesis: Wann und wie?

BA: Model Checking eines einfachen Protokolls (z.B. Mutual Exclusion) mit SPIN oder TLA+ ist machbar – UPPAAL fuer Echtzeitsysteme. MA: Formale Verifikation einer Kernkomponente (Algorithmus in Coq/Isabelle, Protokoll in SPIN, Concurrent System in TLA+). Diss: Umfassende formale Verifikation, ggf. mit mechanisiertem Beweis. In der Thesis: Formale Verifikation ergaenzt Testing – sie beweist Korrektheit fuer alle Eingaben (Testing zeigt nur Fehler fuer getestete Eingaben). Beides kombinieren ist die staerkste Strategie.

Teststrategie fuer Ihre Thesis?

Promovierte Informatiker unterstuetzen bei Testdesign, Property-Based Testing und formaler Verifikation
Informatik-Ghostwriter →

5. TDD & Statische Analyse

Test-Driven Development (TDD)

Red → Green → Refactor: (1) Schreibe einen fehlschlagenden Test. (2) Schreibe den minimalen Code, der den Test bestehen laesst. (3) Refaktoriere. In der Thesis: Wenn Sie TDD verwenden, dokumentieren Sie es im Methodenteil – es zeigt methodische Strenge. Aber: TDD ist kein Evaluationsansatz – es ist eine Entwicklungsmethodik.

Statische Codeanalyse

SonarQube: Code Smells, Bugs, Security Hotspots, Technical Debt. ESLint/Pylint: Sprachspezifische Linting-Regeln. Frama-C: Formale Analyse von C-Code. In der Thesis: SonarQube-Report als Anhang oder Abbildung – zeigt Code-Qualitaet objektiv. CI-Integration: Statische Analyse in der Pipeline bei jedem Commit.

6. Haeufige Fehler

Keine Tests

Software wird entwickelt, aber es gibt null automatisierte Tests. Gutachter werten das zunehmend als gravierenden Mangel. Mindestens: Unit Tests fuer die Kernlogik.

Tests ohne Assertions

Tests laufen gruen, pruefen aber nichts: nur dass der Code nicht abstuerzt (Smoke Tests). Jeder Test braucht sinnvolle Assertions, die das erwartete Ergebnis pruefen.

Coverage als einzige Metrik

„95% Coverage" wird stolz berichtet, aber die Tests sind trivial. Coverage misst Ausfuehrung, nicht Qualitaet. Ergaenzen Sie: Mutation Score, Grenzfalltests, Fehlertests.

E2E Tests statt Unit Tests

Nur E2E-Tests, keine Unit Tests – langsam, fragil, schwer zu debuggen. Die Testpyramide umdrehen ist ein Anti-Pattern. Basis: viele schnelle Unit Tests.

FAQ zu Test-Automatisierung in der Thesis

Wie viel Coverage brauche ich?

Richtwerte: BA: ≥ 70% Line Coverage fuer die Kernlogik. MA: ≥ 80% Line Coverage + ≥ 60% Branch Coverage. Aber: Coverage allein sagt wenig ueber Testqualitaet. Ergaenzen Sie Coverage durch Mutation Testing (Mutation Score ≥ 60%) und pruefen Sie Grenzfaelle explizit. Generated Code, Konfiguration und Boilerplate muessen nicht getestet werden – fokussieren Sie auf die Geschaeftslogik.

Muss ich TDD verwenden?

Nein – TDD ist eine Entwicklungsmethodik, keine Pflicht. Wenn Sie TDD verwenden: Dokumentieren Sie es im Methodenteil (es zeigt methodische Strenge). Wenn nicht: Schreiben Sie Tests nach der Implementierung (Test-Last) – das ist voellig akzeptabel. Entscheidend: Dass Tests existieren, nicht wann sie geschrieben wurden.

Welches Testing-Framework soll ich verwenden?

Verwenden Sie das Standardframework Ihrer Sprache: Java: JUnit 5 + Mockito. Python: pytest (nicht unittest – pytest ist moderner und maektiger). JavaScript/TypeScript: Jest oder Vitest. Go: testing (Standardbibliothek) + testify. C/C++: Google Test + Google Mock. Rust: Cargo test (eingebaut). In der Thesis: Framework und Version im Methodenteil dokumentieren. Mocking-Framework angeben (Mockito, unittest.mock, sinon).

Welche Literatur brauche ich?

Testing: Beck „Test-Driven Development: By Example" (2002) – der TDD-Klassiker. Aniche „Effective Software Testing" (2022) – modern, praxisnah. Property-Based Testing: MacIver „Hypothesis for the Working Programmer" (Dokumentation). Formale Verifikation: Baier/Katoen „Principles of Model Checking" (2008) – das Standardwerk. Nipkow/Wenzel/Paulson „Isabelle/HOL: A Proof Assistant for Higher-Order Logic". TLA+: Lamport „Specifying Systems" (kostenlos online). Statische Analyse: Emanuelsson/Nilsson „A Comparative Study of Industrial Static Analysis Tools" (fuer Ueberblick).

Test-Automatisierung in Ihrer Thesis – professionell umgesetzt

Ueber 200 promovierte Ghostwriter – darunter Informatiker mit Expertise in Software-Qualitaetssicherung, Testing und formaler Verifikation.

Informatik-Ghostwriter Jetzt anfragen
crossmenu