zusammenfassungen/Writerside/topics/04/Software Engineering/01_ImplementingForMaintainability.md
David Schirrmeister cbbfa95759 update
2025-04-08 08:25:04 +02:00

2.4 KiB

Implementing for Maintainability

Motivation and Introduction

  • Unit und Integration Testing ist ein bekannter Ansatz um Qualität sicherzustellen
  • Gut-getestete Anwendungen:
    • 1 line of code = 1-3 lines of test code
    • kann auf bis zu 1:10 hochgehen
  • Produkt- und Testcode werden parallel geschrieben
  • guten Code schreiben ist schwer

Black-/White-Box Testing

image_555.png

Black-Box-Testing

Nur das Interface ist bekannt, nicht der Inhalt

  • Methode vom Software-Testing, das die Funktion analysiert, ohne den Mechanismus zu kennen
  • Normalerweise rund um die Spezifikationen und Anforderungen
    • Was soll die Anwendung tun, nicht wie tut sie es

White-Box-Testing

Das Interface und alle Mechanismen sind bekannt

  • Testmethodik, die verifiziert, wie die Anwendung arbeitet
  • Tests sind am Sourcecode ausgerichtet, nicht an den Anforderungen

Pros / Cons

  • White-Box-Testing ist systematischer und anspruchsvoller
    • Analyse des Codes kann zu Fehlerentdeckungen führen, die zuvor übersehen wurden
    • Testergebnisse sind oft spröde
      • Sind sehr verknüpft mit der Implementierung des Codes
      • Solche Tests produzieren viele false-positives und sind nicht gut für die Metrik der Resistenz gegen Refactoring
    • Können häufig nicht rückgeschlossen werden zu einem Verhalten, dass wichtig ist für eine Business-Person
      • Starkes Zeichen, dass die Tests nicht viel Wert hinzufügen
  • Black-Box-Testing hat gegensätzliche Vor-/Nachteile

Black-/White-Box-Testing sind Konzepte, die auf verschiedene Test-Typen angewendet werden können

Testing Quadrants Matrix

image_556.png

Quadrant 1: Technologie-fokussierte Tests, die das Development leiten

  • Developer Tests:

    • Unit tests
      • Verifizieren Funktionalität eines kleinen Subsets des Systems
    • Component-/Integration Tests:
      • Verifizieren Verhalten eines größeren Teils
  • Tests sind nicht für den Kunden

Unit Testing

  • Unit Tests sind die essenzielle Basis einer guten Test-Suite
    • Verglichen mit anderen, sind sie einfach zu erstellen und warten
    • Viele Unit-Tests :)

Goals of Testing during Implementation

Aktiviere nachhaltiges Wachstum des Software-Projekts

  • Nachhaltigkeit ist wichtig
    • Projektwachstum ist am Anfang einfach
    • Das Wachstum zu halten ist schwer