Lassen Sie sich vom Verhalten treiben (Teil 2)
Kommentare

BDD im Überblick
BDD zielt darauf ab, Aufzählungspunkte mithilfe einer semiformalen Syntax neu zu formulieren. Das erforderliche Verhalten wird demnach mit einer Mischung aus Domänensprache und technischen

BDD im Überblick

BDD zielt darauf ab, Aufzählungspunkte mithilfe einer semiformalen Syntax neu zu formulieren. Das erforderliche Verhalten wird demnach mit einer Mischung aus Domänensprache und technischen Einzelheiten ausgedrückt. Auf diese Weise wird den Interessengruppen die interne Logik der Anwendung (Geschäftsregeln) in einer Sprache vermittelt, die relativ leicht zu erfassen ist, da sie auf halbem Weg zwischen den weitgefassten Formulierungen der ursprünglichen Dokumente und den Implementierungsdetails liegt. Die typische Ausgabe einer BDD-Analyse ist eine Liste von Szenarien, die wie folgt geschrieben wird:

In order to achieve [goal] As a [role] I want to [action]

Für jedes geforderte Verhalten (wobei ein gefordertes Verhalten die Granularität eines Use-Case haben kann) wird die oben erwähnte Liste erstellt. Hierzu ein Beispiel:

In order to administrate my blog As a blog writer I want to be able to log in and I want to be able to write posts

Insgesamt ist die eigentliche Innovation mit BDD das klare Konzept der „Rolle“, anhand derer sich unterscheiden lässt, was auf jeder Ebene der Anwendung gebraucht wird. Wenn das Neuverfassen von Spezifikationen mithilfe eines BDD-Ansatzes dem Architekten überlassen würde, hätte es wahrscheinlich nicht diese große Änderung vollzogen. Das Großartige daran ist, dass eine Anzahl von attraktiven Tools um BDD herum aufblühen. Diese Tools wie zum Beispiel Specflow oder M-Spec sollen Sie dabei unterstützen, BDD-Spezifikationen bequem von Ihrer Visual-Studio-2010-Umgebung aus zu schreiben. Außerdem können diese Tools mit bestimmtem Code konkretisiert werden und Tests für Ihre bevorzugte Testplattform generieren. Der folgende Abschnitt erläutert, wie es mit Specflow aussieht.

Specflow in Aktion

Nachdem Specflow installiert und ein neues Testprojekt erstellt wurde, haben Sie ein ganzes Bündel neuer Elemente hinzuzufügen, wie es Abbildung 1 zeigt. Die Featuredatei ist eine Textdatei mit Ad-hoc-Tags, um besondere Inhalte zu kennzeichnen. Sie beschreibt ein angefordertes Feature mithilfe einer BDD-Syntax. Das Feature entwickelt sich in einem oder mehreren Szenarien (Listing 1).

Feature: Register new user
   In order to register a new user
   As a member of the site
   So that they can log in to the site and use its features

@RegisterUserSteps
Scenario: Browse to the Register page
    When the user goes to the Register page 
    Then the Register page should be displayed  
Abb. 1: Benutzerdefinierte Projektelemente von Specflow
Abb. 1: Benutzerdefinierte Projektelemente von Specflow
[Binding]
public class RegisterUserSteps
{
    ActionResult _result;
    AccountController _controller;

    private Mock _memberService = 
        new Mock();
    private Mock _formsService = 
        new Mock();

    [When(@"the user goes to the Register page")]        
    public void WhenTheUserGoesToTheRegisterUserScreen()
    {
        _controller = new AccountController {
              FormsService = _formsService.Object,
              MembershipService = _memberService.Object
        };
        _result = _controller.Register();
    }

    [Then(@"the Register page should be displayed")]
    public void ThenTheRegisterUserViewShouldBeDisplayed()
    {
        Assert.IsInstanceOfType(_result, typeof(ViewResult));
        Assert.AreEqual("Register",
                _controller.ViewData["Title"],
                "Page title is wrong");
    }
}  

Die Bindung zwischen den Then– und When-Klauseln und dem eigentlichen Code wird durch den Text eingerichtet, der die When/Then-Attribute in der Schrittdatei begleitet. Schließlich können BDD-Tools einen HTML-Bericht generieren, den Sie drucken und in einem Ordner speichern können, um ihn für weitere Diskussionen mit den Interessengruppen zu verwenden. Vor allem aber passiert das alles gewissermaßen automatisiert. Dabei arbeiten Sie als Techniker mit entwicklerorientierten Tools, während Sie einen Stapel von Dokumenten für andere, nichttechnische Mitarbeiter produzieren. Zweifellos ist BDD ein leistungsfähiger neuer Weg, um sich der Analyse und dem Design von Systemen in relativ unbekannten Domänen anzunähern.

Dino Esposito ist R&D Director bei Crionet, einer Firma, die sich auf webbasierte Lösungen für Sportereignisse in ganz Europa spezialisiert hat (http://www.e-tennis.net). Außerdem ist Dino der Autor von „Programming ASP.NET MVC“ (Microsoft Press, 2010).
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -