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