Unit-Tests sind ein wichtiger Bestandteil einer jeden Testsuite. Sie werden von Entwicklern für Entwickler geschrieben und testen den Code auf der untersten Ebene. Das ist gut und wichtig, hat aber auch seine Grenzen. Man kann vor allem mit Unit-Tests nicht sicherstellen, dass das richtige Feature umgesetzt bzw. ein Feature richtig umgesetzt wurde. Hier setzen Akzeptanztests an. Diese stehen in der Testpyramide eine Ebene über den Unit-Tests. Im Gegensatz zu Unit-Tests können Akzeptanztests auch von Nicht-Entwicklern in einer formalen, natürlichen Sprache geschrieben werden. Ein Akzeptanztests beschreibt jeweils konkrete Beispiele von Use Cases. Mit entsprechenden Tools werden diese automatisiert ausführbar gemacht. Man erhält eine ausführbare Spezifikation. Manuelle Regressionstests gehören damit der Vergangenheit an. Durch dieses Vorgehen, das auch als Behaviour-Driven Development (BDD) bezeichnet wird, wird auch die Zusamenarbeit zwischen Entwicklern und anderen Stakeholdern gefördert. Nebenbei kann eine lebende Dokumentation generiert werden, in der jederzeit für jeden ersichtlich ist, welche Features bereits umgesetzt sind und funktionieren und was noch nicht umgesetzt ist bzw. nicht funktioniert.

In diesem Vortrag schauen wir uns die Grundlagen von Behaviour-Driven Development (BDD) und Akzeptanztests an. Anschließend sehen wir uns an einem konkreten Beispiel an, wie sich Akzeptanztests in .NET mit SpecFlow umsetzen lassen.