Kiedy powinienem używać specyfikacji dla aplikacji Rails, a kiedy Cucumber (dawniej rspec-story)? Oczywiście wiem, jak zarówno działają, jak i aktywnie używam specyfikacji. Ale nadal dziwnie jest używać Ogórka. Mój obecny pogląd na ten temat jest taki, że wygodnie jest używać Cucumber podczas wdrażania aplikacji dla klienta i nie rozumiem jeszcze, jak cały system ma działać.
Ale co, jeśli robię własny projekt? Przez większość czasu wiem, jak współdziałają elementy systemu. Muszę tylko napisać kilka testów jednostkowych. Jakie są możliwe sytuacje, w których potrzebowałbym wtedy ogórka?
I jako odpowiednie drugie pytanie: czy muszę pisać specyfikacje, jeśli piszę historie o ogórkach? Czy nie byłoby to dwukrotne przetestowanie tej samej rzeczy?
Odpowiedzi:
Jeśli jeszcze tego nie zrobiłeś, możesz przeczytać doskonały artykuł Dana Northa „ What's in a Story? jako punkt wyjścia.
Mamy dwa główne zastosowania opowieści o ogórku. Po pierwsze, ponieważ forma historii jest bardzo specyficzna, pomaga skupić się na wyrażaniu przez właściciela produktu funkcji, które chce stworzyć. Jest to „symbol do rozmowy” wykorzystania historii i byłoby cenne niezależnie od tego, czy zaimplementowaliśmy je w kodzie. Po drugie, kiedy proces przebiega na tyle dobrze, że mamy kompletne historie, zanim zaczniemy pisać artykuł (bardziej ideał, do którego dążymy niż codzienna rzeczywistość), masz jasno określone kryteria akceptacji i wiesz dokładnie, co i jak dużo do zbudowania.
W naszej pracy z Railsami historie Cucumber nie zastępują testów jednostkowych rspec. Te dwie rzeczy idą w parze. W praktyce testy jednostkowe kierują rozwojem modeli i kontrolerów, a historie kierują rozwojem widoków (zwykle nie piszemy rspec dla naszych widoków) i zapewniają dobry test aplikacji jako całości z poziomu perspektywa użytkownika.
Jeśli pracujesz solo, aspekt komunikacji może nie być dla Ciebie interesujący, ale testy integracyjne, które otrzymujesz od Cucumber, mogą być. Jeśli korzystasz z webrat , pisanie ogórka może być szybkie i bezbolesne w przypadku większości podstawowych funkcji.
źródło
Pomyśl o tym jako o cyklu:
Napisz swoją funkcję Ogórka, a następnie podczas opracowywania elementów dla tej funkcji napisz specyfikacje, aby ukończyć poszczególne komponenty. Kontynuuj wypełnianie specyfikacji, dopóki nie napiszesz wystarczającej liczby funkcji, aby funkcja mogła przejść, a następnie napisz kolejną funkcję.
źródło
Uważam, że używanie Ogórka w większości sytuacji jest złym pomysłem ze względu na koszty produktywności, jakie nakłada na ciebie jego składnia. Pisałem obszernie na ten temat w Dlaczego przejmować się testami ogórka?
źródło
Historia ogórka jest raczej opisem ogólnego problemu, który rozwiązuje Twoja aplikacja, a nie tym, czy działają poszczególne fragmenty kodu (tj. Testy jednostkowe).
Jak opisuje Abie, jest to prawie lista wymagań, które aplikacja powinna spełniać i jest bardzo pomocna w komunikacji z klientem, a także jest bezpośrednio testowalna.
źródło
W dzisiejszych czasach możesz używać rspec z Capybara i Selenium Webdriver i uniknąć konieczności budowania i utrzymywania wszystkich parserów historii Cucumber. Oto, co bym polecił:
Należy jednak zauważyć, że testy kontrolera i integracji pokrywają się, co może nie być konieczne, dlatego należy zachować najlepszą ocenę, aby nie marnować czasu.
Poza tym, gdy już znajdziesz swój rytm, najbardziej sprawi ci przyjemność rozwijanie się przy użyciu BDD, do tego czasu nie czuj się winny, jeśli nie czujesz, że robisz to doskonale i nie przemyślaj tego. Poradzisz sobie świetnie!
źródło
Nadal potrzebujesz ogórka. Potrzebujesz go do udokumentowania tego, jak działa system, i potrzebujesz go, aby upewnić się, że nie zepsujesz funkcjonalności podczas zmiany.
Innymi słowy, potrzebujesz opowieści o ogórkach z tych samych powodów, co testy jednostkowe - po prostu działają one na wyższym poziomie abstrakcji.
źródło