DEV Community

hjqueeen
hjqueeen

Posted on

TDD vs BDD

Test Driven Development (TDD):

  • Definition: TDD ist eine Entwicklungspraxis, bei der Tests vor der eigentlichen Implementierung des Codes geschrieben werden.
  • Prozess: Der Zyklus in TDD besteht aus den Schritten "Red-Green-Refactor". Zuerst wird ein Test geschrieben, der fehlschlägt (rot), dann wird der Code implementiert, um den Test erfolgreich zu machen (grün), und schließlich wird der Code verbessert, ohne die Funktionalität zu ändern (refaktorisiert).
  • Ziel: Die Hauptziele von TDD sind die Verbesserung der Codequalität, die frühe Erkennung von Fehlern und die Unterstützung der Anpassung des Codes an sich ändernde Anforderungen.

Behavior Driven Development (BDD):

  • Definition: BDD ist eine Erweiterung von TDD, bei der der Fokus auf dem Verhalten der Software liegt. Es betont die Zusammenarbeit zwischen Entwicklern, Qualitätsprüfern und Nicht-Technikern.
  • Sprachliche Darstellung: BDD verwendet eine natürliche Sprache, um das Verhalten der Software zu beschreiben. Sogenannte "Gherkin"-Syntax (Given-When-Then) wird häufig verwendet, um Tests zu schreiben.
  • Ziel: Das Hauptziel von BDD besteht darin, eine gemeinsame Sprache zwischen technischen und nicht-technischen Teammitgliedern zu schaffen, um sicherzustellen, dass alle verstehen, was die Software tun sollte.

Beisplie von TDD (Top-Down Development)

  1. Ziel: Wir nehmen an, dass wir einen einfachen Taschenrechner für Grundrechenarten entwickeln möchten.

  2. TDD-Prozess:

  • Schritt 1: Test schreiben
// test_calculator.js

test('Addition', () => {
    expect(add(2, 3)).toBe(5);
});

test('Subtraktion', () => {
    expect(subtract(5, 3)).toBe(2);
});
Enter fullscreen mode Exit fullscreen mode
  • Schritt 2: Mindestens erforderlichen Code schreiben
// calculator.js

function add(a, b) {
    return a + b;
}

function subtract(a, b) {
    return a - b;
}

Enter fullscreen mode Exit fullscreen mode
  • Schritt 3: Refactoring Der Schritt zur Verbesserung des Codes wird hier übersprungen.

Beisplie von BDD (Behavior-Driven Development)

  1. Ziel: Wir nehmen an, dass wir eine Webanwendung mit Login-Funktion entwickeln möchten.

  2. BDD-Prozess:

  • Schritt 1: Spezifikation der Geschäftsanforderungen
Feature: Login-Funktion

  Szenario: Mit korrekten Anmeldedaten einloggen
    Angenommen der Benutzer befindet sich auf der Anmeldeseite
    Wenn er die richtige Benutzer-ID und das richtige Passwort eingibt
    Dann hat der Login Erfolg
Enter fullscreen mode Exit fullscreen mode
  • Schritt 2: Testcode basierend auf der Spezifikation schreiben
    Der tatsächliche Testcode könnte mithilfe eines BDD-Tools wie Behave geschrieben werden.

  • Schritt 3: Code schreiben, um den Test zu bestehen

// login.js

function login(userId, password) {
    // Tatsächliche Implementierung der Anmeldelogik
    if (userId === "valid_user" && password === "secure_password") {
        return true;
    } else {
        return false;
    }
}
Enter fullscreen mode Exit fullscreen mode

In diesem Beispiel zeigt BDD, wie Geschäftsanforderungen in natürlicher Sprache spezifiziert, darauf basierende Testcode geschrieben und schließlich Code erstellt werden, um den Test zu bestehen. Der verwendete Programmiercode ist in JavaScript verfasst.

Top comments (0)