> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baenninger.me/llms.txt
> Use this file to discover all available pages before exploring further.

# TDD

Der Begriff TDD steht für Testgetriebene Entwicklung (*Test-Driven Development*) und beschreibt einen Test-First-Ansatz.

<Frame caption="Softwareentwicklungslebenszyklus">
  <img src="https://mintcdn.com/levexis-38849a2b/fK05ZPeHGTgSfJjo/images/content/testing/image-1.png?fit=max&auto=format&n=fK05ZPeHGTgSfJjo&q=85&s=c68837cef0c9b30e8dbc0896adddf4f0" alt="Abbildung" width="725" height="534" data-path="images/content/testing/image-1.png" />
</Frame>

<AccordionGroup>
  <Accordion title="Grundprinzip">
    TDD ist eine grundlegende Entwicklungspraktik, bei der Testfälle entworfen und automatisiert werden, bevor der zu testende Produktcode implementiert wird.
  </Accordion>

  <Accordion title="Ablaufsteuerung">
    Die automatisierten Tests stehen somit vorab zur Verfügung und können sofort nach jedem (auch sehr kleinen) Änderungsschritt des Codes ausgeführt werden.
  </Accordion>

  <Accordion title="Fertigstellungsdefinition">
    Der geänderte Produktcode gilt nur dann als "fertig", wenn die zugehörigen Tests bestanden sind.
  </Accordion>

  <Accordion title="Spezifikation">
    Die vorab erstellten Testfälle legen das geforderte Soll-Verhalten fest und können dadurch als eine durch den Rechner automatisiert ausführbare Spezifikation dieses Soll-Verhaltens angesehen werden.
  </Accordion>

  <Accordion title="Vorteil">
    TDD ist eine sehr konsequente Umsetzung des "Shift-Left"-Gedankens (frühes Testen).
  </Accordion>

  <Accordion title="Anwendung">
    TDD bezeichnet heute den primären Einsatz des Test-First-Ansatzes im Komponententest unter Verwendung von Unit-Test-Frameworks. Es kann detaillierte Prosa-Spezifikationen oder einen umfangreichen Softwareentwurf überflüssig machen.
  </Accordion>
</AccordionGroup>
