Rozwój oparty na zachowaniu - ogórek
Cucumber to narzędzie, które obsługuje specyfikacje plików wykonywalnych, automatyzację testów i dokumentację życia.
Rozwój oparty na zachowaniu rozszerza specyfikację o przykład. Formalizuje również najlepsze praktyki Test-Driven Development, w szczególności perspektywę pracy z zewnątrz. Prace rozwojowe opierają się na wykonywalnych specyfikacjach.
Plik key features wykonywalnych specyfikacji są następujące -
Specyfikacje plików wykonywalnych to -
Wyprowadzone z przykładów, które reprezentują zachowania systemu.
Napisany przy współpracy wszystkich zaangażowanych w rozwój, w tym biznesu i interesariuszy.
Na podstawie kryterium akceptacji.
Testy akceptacyjne oparte na specyfikacjach plików wykonywalnych są zautomatyzowane.
Wspólny, wszechobecny język jest używany do pisania specyfikacji wykonywalnych i testów automatycznych, które -
W całym rozwoju używana jest terminologia specyficzna dla domeny.
Wszyscy, w tym klienci i interesariusze, mówią w ten sam sposób o systemie, jego wymaganiach i implementacji.
Te same terminy są używane do omówienia systemu występującego w wymaganiach, dokumentach projektowych, kodzie, testach itp.
Każdy może przeczytać i zrozumieć wymagania oraz sposoby generowania większej liczby wymagań.
Zmiany można łatwo dostosować.
Dokumentacja na żywo jest utrzymywana.
Cucumber pomaga w tym procesie, ponieważ łączy wykonywalne specyfikacje z rzeczywistym kodem systemu i automatycznymi testami akceptacyjnymi.
Sposób, w jaki to robi, jest tak naprawdę zaprojektowany, aby zachęcić klientów i programistów do współpracy. Pozytywny wynik testu akceptacyjnego oznacza, że specyfikacja zachowania systemu, który reprezentuje, została poprawnie zaimplementowana.
Typowy test akceptacji ogórka
Rozważmy następujący przykład.
Feature − Sign up
Rejestracja powinna być szybka i przyjazna.
Scenariusz - pomyślna rejestracja
New użytkownicy powinni otrzymać e-mail z potwierdzeniem i zostać powitani osobiście.
Given Zdecydowałem się zarejestrować.
When Rejestruję się z ważnymi danymi.
Then Powinienem otrzymać e-mail z potwierdzeniem.
And Powinienem zobaczyć spersonalizowaną wiadomość powitalną.
Na tym przykładzie widzimy, że -
Testy akceptacyjne dotyczą Features.
Funkcje są wyjaśnione przez Scenarios.
Scenariusze składają się z Steps.
Specyfikacja jest napisana w języku naturalnym w postaci zwykłego pliku tekstowego, ale jest wykonywalna.
Praca z ogórkiem
Cucumber to narzędzie wiersza poleceń, które przetwarza pliki tekstowe zawierające funkcje poszukujące scenariuszy, które można wykonać w systemie. Zrozummy, jak działa ogórek.
Korzysta z wielu konwencji dotyczących nazw plików i ich lokalizacji (odpowiednie foldery), aby ułatwić rozpoczęcie.
Cucumber umożliwia przechowywanie specyfikacji, testów automatycznych i dokumentacji w tym samym miejscu.
Każdy scenariusz jest listą kroków, które opisują warunki wstępne, działania i warunki końcowe scenariusza; jeśli każdy krok jest wykonywany bez błędu, scenariusz jest oznaczany jako zaliczony.
Pod koniec przebiegu Cucumber zgłosi, ile scenariuszy przeszło.
Jeśli coś się nie powiedzie, dostarcza informacji o tym, co się nie udało, aby deweloper mógł postępować.
W ogórku, Features, Scenarios, a kroki są napisane w języku o nazwie Gherkin.
Gherkin to zwykły tekst angielski (lub jeden z ponad 60 innych języków) ze strukturą. Korniszon jest łatwy do nauczenia, a jego struktura pozwala na pisanie przykładów w zwięzły sposób.
Cucumber wykonuje pliki, które zawierają wykonywalne specyfikacje zapisane w Gherkin.
Ogórek potrzebuje definicji kroku, aby przetłumaczyć kroki Gherkin jako zwykły tekst na działania, które będą współdziałać z systemem.
Kiedy Cucumber wykonuje krok w scenariuszu, szuka pasującej definicji kroku do wykonania.
Definicja kroku to mały fragment kodu z dołączonym do niego wzorem.
Wzorzec jest używany do łączenia definicji kroku ze wszystkimi pasującymi krokami, a kod jest tym, co Cucumber wykona, gdy zobaczy krok Gherkin.
Każdemu krokowi towarzyszy definicja kroku.
Większość kroków będzie gromadzić dane wejściowe, a następnie delegować je do struktury specyficznej dla domeny aplikacji w celu wykonywania wywołań w tej strukturze.
Cucumber obsługuje kilkanaście różnych platform oprogramowania. Możesz wybrać implementację Cucumber, która działa dla Ciebie. Każda implementacja Cucumber zapewnia tę samą ogólną funkcjonalność, a także ma własną procedurę instalacji i funkcjonalność specyficzną dla platformy.
Mapowanie kroków i definicji kroków
Kluczem do Ogórka jest mapowanie między Krokami a Definicjami Kroków.
Wdrożenia Ogórek
Poniżej podano implementacje Cucumber.
|
Ruby / JRuby |
|
JRuby (przy użyciu Cucumber-JVM) |
|
Jawa |
|
Groovy |
|
.NET (przy użyciu SpecFlow) |
|
JavaScript |
|
JavaScript (przy użyciu Cucumber-JVM i Rhino) |
|
Clojure |
|
Gosu |
|
Lua |
|
PHP (przy użyciu Behat) |
|
Jython |
|
C ++ |
|
Tcl |
Integracja ram
Poniżej podano implementacje Framework.
|
Ruby on Rails |
|
Selen |
|
PicoContainer |
|
Spring Framework |
|
Watir |