SpecFlow – data driven testing

Nie jest to pierwszy wpis o SpecFlow i podstawy framework’a znajdziecie oczywiście  w archiwum. W SpecFlow można definiować tzw. “Scenario outline”, które służą jako szablony dla testów. Oczywiście data-driven testing nie powinno być nadużywane i w szczególności dla acceptance tests nie ma to wielkiego sensu. SpecFlow jest często używany dla testów systemowych i UI, gdzie […]

SpecFlow: Uruchamianie testów za pomocą SpecRun

W poprzednich postach, używałem domyślnego runner’a dla danego framework’u.  Standardowo SpecFlow może być zintegrowany np.  z nUnit lub Mbunit. Jeśli tylko to możliwe, polecam zainstalowanie SpecRun, bo jak zaraz pokażę, jest dużo wygodniejszy w przypadku BDD. Na początku sprawdźmy, co jest wygenerowane dla poniższego testu: Feature: NewPost Jakis opis tutaj… Scenario: Create a new post […]

SpecFlow – zdarzenia

Kiedyś w jednym z komentarzu ktoś zasugerował, aby opisać również zdarzenia (hooks) w specflow. Wszystko można znaleźć w dokumentacji, ale również preferuję kilka zwięzłych przykładów niż suchy opis. Tak jak w nUnit czy jakimkolwiek innym framework’u, możemy definiować co powinno wykonać się przed lub po testach. Atrybutami BeforeTestRun oraz AfterTestRun dekorujemy metody, które mają się […]

Specflow – kroki o tej samej nazwie ale z inną implementacją

W poprzednim poście, pisałem jak są współdzielone kroki między różnymi scenariuszami. Jeśli tylko zostaną one rozdzielone odpowiednio między klasy, zestaw testów stanie się po prostu łatwiejszy w utrzymaniu. Dzięki temu nie musimy duplikować kodu. Oczywiście pokazałem również jak nie należy pisać testów ponieważ stosunkowo łatwo w SpecFlow można “rozsynchronizować” plik z opisem scenariuszu z klasami […]

Code Review: Kilka pułapek ze SpecFlow

Specflow jest według mnie znakomitym framework’iem do pisania testów BDD. Bardzo często dodawanie nowych scenariuszy sprowadza się do przekopiowania przypadków użycia z user story. Oczywiście wymaga to trochę praktyki, ponieważ definiowanie za pomocą GWT na początku może wydawać się nienaturalne. Na blogu o podstawach SpecFlow pisałem już wiele razy. Dzisiaj chciałbym pokazać pewną pułapkę, na […]

SpecFlow: konwersja argumentów

O SpecFlow pisałem już kilkakrotnie. Zwykłe w pliku ze scenariuszami, podajemy argumenty. Na przykład: Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 120 on the screen Czasami jednak, mamy bardziej skomplikowane wyrażenia i za […]

Wprowadzenie do SpecFlow, BDD

Dzisiaj oprogramowanie jest naprawdę skomplikowane. W większości przypadków, skomplikowanie oprogramowania nie polega na zaawansowanych algorytmach. W praktyce, algorytmy tworzone są przez wąską grupę specjalistów i potem są po prostu wykorzystywane w formie DLL przez innych użytkowników (programistów). Oczywiście każda aplikacja ma jakieś algorytmy, ale w aplikacjach biznesowych, zwykle większym problemem jest utrzymanie całości i możliwość […]

Cykl BDD\TDD

Zarówno o BDD, jak i TDD wiele razy już pisałem. Najważniejszą rzeczą w TDD jest sekwencja red-green-refactor.  Zwykle BDD\TDD przybiera następującą postać:  Zaczynamy od etapu BDD. Definiujemy wymagania za pomocą języka rozumianego zarówno przez programistów jak i jak BA\PO. Za pomocą Specflow możemy zdefiniować np. następujący test: W celu zaimplementowania powyższej specyfikacji, rozpoczynamy cykl TDD. […]

Testy UI: Wzorzec PageObject

O testach UI, szczególnie w SpecFlow pisałem już kilka razy. Zawsze korzystałem z wzorca PageObject, chociaż nie wiedziałem, że ma on swoją nazwę. Czasami mam wrażenie, że na proste rzeczy wymyśla się “wzorce”. Muszę przyznać jednak, że  uproszcza to często komunikację między programistami. Wzorce w końcu stanowią pewnego rodzaju słownictwo dla programistów. Zamiast opisywać coś […]