Prädikat has_tests_passed

Bevor ein Pilot abhebt, geht er eine Checkliste durch: Triebwerke? Check. Instrumente? Check. Ein Prädikat ist genau so eine Prüfbedingung - eine Ja/Nein-Frage, die beantwortet werden muss, bevor es weitergeht.

Was ist ein Prädikat?

Im Mensch + KI-Code Prozess ist ein Prädikat eine formale Prüfbedingung, die entweder erfüllt (true) oder nicht erfüllt (false) ist. Es gibt keine Grauzone. Das Prädikat has_tests_passed prüft: Sind alle automatisierten Tests erfolgreich durchgelaufen?

Warum brauchen wir das?

Code ohne Tests ist wie ein Rezept ohne Geschmacksprobe. Du hoffst, dass es funktioniert, aber sicher bist Du nicht. Das Prädikat has_tests_passed stellt sicher, dass jede Änderung nachweislich funktioniert - automatisch, wiederholbar, objektiv.

Vollständiges Beispiel

Definition des Prädikats im Prozess:

# Prädikat: has_tests_passed
# Verwendet in: Gate G4 (Implementation), Gate G5 (Review)

predicate:
  id: "has_tests_passed"
  name: "Alle Tests bestanden"
  description: "Prüft, ob alle automatisierten Tests erfolgreich sind"
  category: "quality"
  severity: "critical"  # Gate blockiert bei Failure

  # Was wird geprüft?
  checks:
    - id: "unit_tests"
      name: "Unit Tests"
      command: "phpunit --testsuite=unit"
      required: true
      min_coverage: 80

    - id: "integration_tests"
      name: "Integration Tests"
      command: "phpunit --testsuite=integration"
      required: true

    - id: "e2e_tests"
      name: "End-to-End Tests"
      command: "cypress run"
      required_for_change_class:
        - "normal"
        - "critical"

  # Erfolgskriterien
  success_criteria:
    all_tests_pass: true
    no_skipped_tests: true
    coverage_threshold_met: true

  # Bei Failure
  on_failure:
    action: "block_gate"
    notification: "team-channel"
    evidence_required:
      - "test_output_log"
      - "coverage_report"
      - "failed_test_details"

Auswertung in der Praxis

So sieht das Ergebnis einer Prädikat-Prüfung aus:

# Prädikat-Auswertung
evaluation:
  predicate_id: "has_tests_passed"
  change_id: "CHG-2024-0042"
  evaluated_at: "2024-01-15T15:30:00Z"

  check_results:
    - check_id: "unit_tests"
      passed: true
      details:
        total: 247
        passed: 247
        failed: 0
        skipped: 0
        coverage: 87.3
        duration_seconds: 12.4

    - check_id: "integration_tests"
      passed: true
      details:
        total: 58
        passed: 58
        failed: 0
        duration_seconds: 45.2

    - check_id: "e2e_tests"
      passed: true
      details:
        total: 23
        passed: 23
        failed: 0
        duration_seconds: 180.5

  # Gesamtergebnis
  result: true  # Prädikat erfüllt
  confidence: 1.0

  evidence:
    test_report: "https://ci.example.com/reports/247"
    coverage_report: "https://ci.example.com/coverage/247"
    artifacts:
      - "junit-report.xml"
      - "coverage.html"

Was passiert bei Failure?

Wenn das Prädikat nicht erfüllt ist, wird das Gate blockiert:

# Failure-Szenario
evaluation:
  predicate_id: "has_tests_passed"
  change_id: "CHG-2024-0043"

  check_results:
    - check_id: "unit_tests"
      passed: false
      details:
        total: 247
        passed: 245
        failed: 2
        failed_tests:
          - name: "UserServiceTest::testCreateUser"
            error: "Expected status 201, got 500"
            file: "tests/Unit/UserServiceTest.php"
            line: 42

          - name: "OrderServiceTest::testCalculateTotal"
            error: "AssertionError: 99.98 != 99.99"
            file: "tests/Unit/OrderServiceTest.php"
            line: 87

  result: false  # Prädikat NICHT erfüllt
  gate_blocked: true

  required_action:
    type: "fix_and_retry"
    assignee: "original_author"
    deadline: "2024-01-15T18:00:00Z"

Warum ist das wichtig?

Das Prädikat has_tests_passed ist die Qualitätsgarantie des Prozesses. Es verhindert, dass fehlerhafter Code in Produktion gelangt. Und es schafft Vertrauen: Wenn das Prädikat erfüllt ist, wissen alle Beteiligten - Mensch und KI -, dass der Code funktioniert.

Im Mensch + KI-Code Prozess: Das Prädikat has_tests_passed ist am Gate G4 (Implementation) und G5 (Review) obligatorisch. Bei Change Class "Critical" werden zusätzlich Performance- und Security-Tests geprüft.