Rozwój oparty na zachowaniu - SpecFlow

SpecFlow to projekt typu open source. Kod źródłowy jest hostowany na GitHub. Pliki funkcji używane przez SpecFlow do przechowywania kryterium akceptacji dla funkcji (przypadków użycia, historyjek użytkownika) w Twojej aplikacji są definiowane przy użyciu składni Gherkin.

Format Gherkin został wprowadzony przez Cucumber i jest również używany przez inne narzędzia. Język Gherkin jest utrzymywany jako projekt na GitHub -https://github.com/cucumber/gherkin

Elementy funkcji i SpecFlow

Kluczowe cechy elementów Feature to -

  • Element feature zapewnia nagłówek pliku funkcji. Element feature zawiera nazwę i ogólny opis odpowiedniej funkcji w aplikacji.

    • SpecFlow generuje klasę testów jednostkowych dla elementu funkcji, z nazwą klasy pochodzącą z nazwy funkcji.

    • SpecFlow generuje wykonywalne testy jednostkowe na podstawie scenariuszy reprezentujących kryteria akceptacji.

  • Plik funkcji może zawierać wiele scenariuszy używanych do opisu testów akceptacyjnych funkcji.

    • Scenariusze mają nazwy i mogą składać się z wielu kroków scenariusza.

    • SpecFlow generuje metodę testów jednostkowych dla każdego scenariusza, z nazwą metody pochodzącą z nazwy scenariusza.

Wiele kroków scenariusza

Scenariusze mogą mieć wiele kroków scenariusza. Istnieją trzy rodzaje kroków, które definiują warunki wstępne, czynności lub kroki weryfikacyjne, które składają się na test akceptacyjny.

  • Różne typy kroków zaczynają się od Given, When lub Then słowa kluczowe i kolejne kroki tego samego typu można łączyć za pomocą And i But słowa kluczowe.

  • Składnia Gherkin umożliwia dowolną kombinację tych trzech typów kroków, ale scenariusz zwykle ma odrębne bloki Given, When i Then sprawozdania.

  • Kroki scenariusza są definiowane za pomocą tekstu i mogą mieć dodatkową tabelę o nazwie DataTable lub tekst wielowierszowy o nazwie DocString arguments.

  • Kroki scenariusza są głównym sposobem wykonania dowolnego kodu niestandardowego w celu zautomatyzowania aplikacji.

  • SpecFlow generuje wywołanie wewnątrz metody testu jednostkowego dla każdego kroku scenariusza. Wywołanie jest wykonywane przez środowisko wykonawcze SpecFlow, które wykona definicję kroku dopasowaną do kroku scenariusza.

  • Dopasowanie odbywa się w czasie wykonywania, więc wygenerowane testy można skompilować i wykonać, nawet jeśli powiązanie nie zostało jeszcze zaimplementowane.

  • W krokach scenariusza można uwzględniać tabele i argumenty wielowierszowe. Są one używane w definicjach kroków i są przekazywane jako dodatkowe argumenty tabelowe lub łańcuchowe.

Tagi

Tagi to znaczniki, które można przypisać do funkcji i scenariuszy. Przypisanie etykiety do elementu jest równoważne przypisaniu etykiety do wszystkich scenariuszy w pliku funkcji. Nazwa tagu z początkowym @ oznacza tag.

  • Jeśli jest obsługiwany przez platformę testów jednostkowych, SpecFlow generuje kategorie z tagów.

  • Wygenerowana nazwa kategorii jest taka sama jak nazwa tagu, ale bez początkowego znaku @.

  • Możesz filtrować i grupować testy do wykonania przy użyciu tych kategorii testów jednostkowych. Na przykład możesz oznaczyć kluczowe testy tagiem @ważne, a następnie wykonywać je częściej.

Elementy tła

Element języka tła umożliwia określenie wspólnego warunku wstępnego dla wszystkich scenariuszy w pliku funkcji

  • Część pliku w tle może zawierać jeden lub więcej kroków scenariusza, które są wykonywane przed innymi krokami scenariuszy.

  • SpecFlow generuje metodę z elementów tła, która jest wywoływana ze wszystkich testów jednostkowych wygenerowanych dla scenariuszy.

Zarysy scenariuszy

Zarysy scenariuszy mogą służyć do definiowania testów akceptacyjnych opartych na danych. Zarys scenariusza zawsze składa się ze specyfikacji szablonu scenariusza (scenariusz z symbolami zastępczymi danych przy użyciu składni <placeholder>) oraz zestawu przykładów, które zawierają wartości dla symboli zastępczych

  • Jeśli platforma testów jednostkowych obsługuje to, SpecFlow generuje testy oparte na wierszach na podstawie zarysów scenariusza.

  • W przeciwnym razie generuje sparametryzowaną metodę logiki testów jednostkowych dla zarysu scenariusza i indywidualną metodę testów jednostkowych dla każdego zestawu przykładów.

  • Aby zapewnić lepszą identyfikowalność, nazwy wygenerowanych metod testów jednostkowych pochodzą z tytułu schematu scenariusza i pierwszej wartości przykładów (pierwsza kolumna tabeli przykładów).

  • Dlatego dobrą praktyką jest wybranie unikalnego i opisowego parametru jako pierwszej kolumny w przykładowym zestawie.

  • Ponieważ składnia Gherkin wymaga, aby wszystkie przykładowe kolumny miały pasujące symbole zastępcze w zarysie scenariusza, można nawet wprowadzić dowolną kolumnę w przykładowych zestawach używanych do nazwania testów z większą czytelnością.

  • SpecFlow wykonuje podstawienie symbolu zastępczego jako oddzielną fazę przed dopasowaniem powiązań kroku.

  • Implementacja i parametry w powiązaniach kroków są zatem niezależne od tego, czy są wykonywane za pomocą scenariusza bezpośredniego, czy konspektu scenariusza.

  • Pozwala to później określić dalsze przykłady w testach akceptacyjnych bez zmiany powiązań kroków.

Komentarze

Możesz dodawać wiersze komentarzy do plików funkcji w dowolnym miejscu, rozpoczynając wiersz znakiem #. Należy jednak zachować ostrożność, ponieważ komentarze w specyfikacji mogą oznaczać, że kryteria akceptacji zostały określone nieprawidłowo. SpecFlow ignoruje wiersze komentarza.