Wann sollte ich Spezifikationen für die Rails-Anwendung verwenden und wann Cucumber (frühere rspec-Geschichten)? Ich weiß natürlich, wie beide funktionieren und wie sie Spezifikationen aktiv nutzen. Aber es fühlt sich immer noch komisch an, Gurke zu verwenden. Meine derzeitige Ansicht dazu ist, dass es praktisch ist, Cucumber zu verwenden, wenn Sie eine Anwendung für den Client implementieren und noch nicht verstehen, wie das gesamte System funktionieren soll.
Aber was ist, wenn ich mein eigenes Projekt mache? Die meiste Zeit weiß ich, wie die Teile des Systems interagieren. Ich muss nur ein paar Unit-Tests schreiben. Was sind die möglichen Situationen, in denen ich dann Gurke brauchen würde?
Und als entsprechende zweite Frage: Muss ich Spezifikationen schreiben, wenn ich Gurkengeschichten schreibe? Wäre es nicht eine doppelte Prüfung derselben Sache?
Antworten:
Wenn Sie es noch nicht getan haben, sollten Sie sich den hervorragenden Artikel von Dan North ansehen: Was steckt in einer Geschichte? als Ausgangspunkt.
Wir haben zwei Hauptverwendungen für Gurkengeschichten. Erstens, da die Story-Form sehr spezifisch ist, hilft sie dabei, die Artikulation der Funktionen des Produktbesitzers zu fokussieren, die er erstellen möchte. Dies ist das "Token für eine Konversation" -Verwendung von Geschichten und wäre wertvoll, unabhängig davon, ob wir die Geschichten in Code implementiert haben oder nicht. Zweitens, wenn der Prozess gut genug funktioniert, dass wir vollständige Geschichten haben, bevor wir mit dem Schreiben des Features beginnen (eher ein Ideal, das wir anstreben als eine tägliche Realität), haben Sie Ihre Akzeptanzkriterien klar formuliert und wissen genau, was und wie viel zu bauen.
In unserer Rails-Arbeit ersetzen Gurkengeschichten nicht rspec-Unit-Tests. Die beiden gehen Hand in Hand. In der Praxis treiben die Komponententests die Entwicklung der Modelle und Controller voran, und die Storys fördern tendenziell die Entwicklung der Ansichten (wir schreiben normalerweise keine Spezifikationen für unsere Ansichten) und bieten einen guten Test der gesamten Anwendung aus dem Benutzerperspektive.
Wenn Sie alleine arbeiten, ist der Kommunikationsaspekt für Sie möglicherweise nicht so interessant, aber die Integrationstests, die Sie von Cucumber erhalten, sind möglicherweise. Wenn Sie Webrat nutzen , kann das Schreiben von Gurken für viele Ihrer Grundfunktionen schnell und schmerzlos sein.
quelle
Betrachten Sie es als einen Zyklus:
Schreiben Sie Ihre Gurkenfunktion und schreiben Sie dann während der Entwicklung der Teile für diese Funktion Spezifikationen, um die einzelnen Komponenten zu vervollständigen. Füllen Sie die Spezifikationen so lange aus, bis Sie genügend Funktionen für die Funktion geschrieben haben, und schreiben Sie dann die nächste Funktion.
quelle
Meiner Meinung nach ist es in den meisten Situationen eine schlechte Idee, Cucumber zu verwenden, da die Syntaxkosten für Sie aufgrund der Syntax anfallen. Ich habe ausführlich über das Thema in Warum mit Gurkentests belästigen?
quelle
Eine Gurkengeschichte ist eher eine Beschreibung des Gesamtproblems, das Ihre Anwendung löst, als ob einzelne Codebits funktionieren (dh Komponententests).
Wie Abie beschreibt, handelt es sich fast um eine Liste von Anforderungen, die die Anwendung erfüllen sollte. Sie ist sehr hilfreich für die Kommunikation mit Ihrem Kunden und kann direkt getestet werden.
quelle
Heutzutage können Sie rspec mit Capybara und Selenium Webdriver verwenden und vermeiden, dass Sie alle Cucumber-Story-Parser erstellen und warten müssen. Folgendes würde ich empfehlen:
Beachten Sie jedoch, dass sich die Controller- und Integrationstests möglicherweise nicht überlappen, sodass Sie nach bestem Wissen und Gewissen keine Zeit verschwenden müssen.
Sobald Sie Ihren Groove gefunden haben, wird es Ihnen am meisten Spaß machen, ihn mit BDD zu entwickeln. Bis dahin fühlen Sie sich nicht schuldig, wenn Sie nicht das Gefühl haben, dass Sie es perfekt machen und nicht darüber nachdenken. Du wirst es gut machen!
quelle
Du brauchst noch Gurke. Sie benötigen es, um zu dokumentieren, wie das System funktioniert, und um sicherzustellen, dass die Funktionalität beim Ändern nicht beeinträchtigt wurde.
Mit anderen Worten, Sie benötigen Gurkengeschichten aus den gleichen Gründen wie Unit-Tests - sie funktionieren nur auf einer höheren Abstraktionsebene.
quelle