Czy testy BDD są testami akceptacyjnymi?
Lub, jeśli masz testy BDD, potrzebujesz czegoś takiego jak Fitnesse?
7 answers
BDD "testy" istnieją na wielu różnych poziomach szczegółowości, aż do początkowej wizji projektu. Większość ludzi wie o scenariuszach. Kilka osób pamięta, że BDD zaczęło się od słowa "Powinien" jako zamiennik "testu" Junita - jako zamiennik TDD. Powodem, dla którego umieszczam "testy" w cudzysłowach, jest to, że BDD nie jest tak naprawdę testowaniem; koncentruje się na znalezieniu miejsc, w których występuje brak lub niedopasowanie zrozumienia.
Z powodu tego skupienia, rozmowy są o wiele ważniejsze niż narzędzia BDD.
Powtórzę to jeszcze raz. rozmowy są o wiele ważniejsze niż narzędzia BDD.
Testy akceptacyjne w rzeczywistości nie upoważniają do rozmów i zazwyczaj działają z założenia, że testy, które piszesz, są odpowiednimi testami. W BDD Zakładamy, że nie wiemy, co robimy (i prawdopodobnie nie wiemy, że nie wiemy). Dlatego używamy takich rzeczy jak "Given, When, Then" - aby może prowadzić rozmowy na temat scenariuszy i / lub przykładów na poziomie jednostki. (Są to dwa poziomy, które większość ludzi zna - odpowiednik testów akceptacyjnych i testów jednostkowych - ale rośnie skala).
Nie nazywamy ich "testami akceptacyjnymi", ponieważ nie możesz poprosić osoby biznesowej "proszę pomóż mi z moim testem akceptacyjnym". Spojrzą na Ciebie dziwnym, Zezowatym spojrzeniem, a potem odrzucą Cię jako tę dziwaczną dziewczynę. 93% z Was tego nie chce.
Try " I ' d chciałbym porozmawiać z tobą o scenariuszu gdzie..."zamiast tego. Albo: "czy możesz podać mi przykład?"Oba są dobre. Nazywanie ich "testami Akceptacyjnymi" zaczyna sprawiać, że ludzie myślą, że faktycznie wykonujesz testy, co oznaczałoby, że wiesz, co robisz i po prostu chcesz się upewnić, że to zrobiłeś. W tym momencie rozmowy skupiają się na tym, jak szybko można wyciągnąć niewłaściwą rzecz, zamiast na tym, że wyciągasz niewłaściwą rzecz.
And you ' re getting the wrong wypad. Naprawdę, szczerze, jesteś.Nawet jeśli myślisz, że nie jesteś, to tylko dlatego, że nie rozumiesz ignorancji drugiego rzędu. Nie wiesz, że nie wiesz, i to jest w porządku, tak długo, jak znajdziesz miejsca, gdzie Może wiedzieć, że nie wiesz. (Nie znajdziesz ich wszystkich. Nie pozwól, aby paradoks kategoryzacji powstrzymywał cię w nocy.)
Jedynym sposobem, aby naprawdę to zrobić, jest uzyskanie wszystkich wymagań z góry, i wiesz, co się dzieje, gdy spróbuj tego. Zgadza się. To Wodospad. Pamiętasz Nadgodziny? Praca w weekend? Siedem lat, w których ani jedna rzecz, którą stworzyłeś, nie trafiła do produkcji? Jeśli chcesz tego uniknąć, masz tylko jedną szansę: założyć, że się mylisz, porozmawiać o tym, aby być mniej błędnym, a następnie zaakceptować, że jesteś nadal w błędzie i tak to zrób. Pisanie testów zbyt wcześnie oznacza, że masz nawet więcej szansy na błąd, a teraz trudniej się zmienić i wszyscy myślą masz racje a premier mierzy Ci predkosc i teraz jestes zobowiazany sie mylic przez kolejne 2 tygodnie. I-co gorsza-zaraz sprawdzisz, że też się mylisz.
Jeszcze raz. rozmowy są o wiele ważniejsze niż narzędzia BDD.
Proszę, nie skupiaj się na narzędziach. Narzędzia są tylko mechanizmem do przechwytywania rozmów i upewniania się, że są odtwarzane w kodzie. Scenariusze nie zastępują rozmów, już niż karta indeksowa 3 x 5 jest zamiennikiem wymagań.
Powiedziawszy to, jeśli musisz zacząć od narzędzia, umieść Slim za Fitnesse, aby mógł działać lovely Given / When / Thens bez bałaganu ze stołami i oprawami Fit. GivWenZen jest oparty na Slim i obu z nich skał. FitSharp jest odpowiednikiem dla tych z Was w przestrzeni. NET. Lub po prostu użyj Cucumber, lub SpecFlow, lub zapukaj trochę niestandardowej DSL * , która wykona zadanie dobrze dla lat.
Transparentność :* ja to napisałem. I kawałki JBehave. Szkoda, że nie nazwaliśmy tego "Dont-concentrate-on-BDD-tools-Behave". Mogę być mocno zaangażowany w inne kawałki BDD. Plus Dan North kupi mi piwo, jeśli uda mi się przekazać tę wiadomość, Więc to nie jest do końca bezstronna Rada.
Bez względu na to - miej już rozmowy. To tylko ludzie. Idź pogadać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-30 17:34:25
Nie wiem, czy istnieje coś takiego, ściśle mówiąc, jak "test BDD". BDD to filozofia, która podpowiada, jak najlepiej współdziałać i współpracować z interesariuszami, aby ukończyć złożony projekt. Nie wydaje bezpośrednio żadnych recept na najlepszy sposób pisania testów. Innymi słowy, prawdopodobnie nadal będziesz mieć wszystkie zwykłe rodzaje testów (w tym testy akceptacyjne) w ramach projektu filozofii BDD.
Kiedy słyszymy o "frameworkach BDD", mówca zwykle oznacza framework za pisanie wszystkich typowych testów, ale z BDD twist. Na przykład w RSpec nadal piszesz testy jednostkowe; po prostu dodajesz do nich smak BDD.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-25 15:22:26
Lubię rozróżniać "specyfikacje" i " testy."
Jeśli piszę metodę o nazwie GetAverage(IEnumerable<int> numbers)
, napiszę mniej lub bardziej standardowy test jednostkowy.
Jeśli opisuję metodę o nazwie CalculateSalesTax(decimal amount, State state, Municipality municipality)
, nadal napiszę test jednostkowy, ale nazwę go specyfikacją, ponieważ zmienię go na (1), Aby zweryfikować zachowanie procedury i (2) ponieważ sam test będzie dokumentował zarówno procedurę, jak i jej akceptację kryteria.
Rozważmy:
[TestFixture]
public class When_told_to_calculate_sales_tax_for_a_given_state_and_municipality() // the name defines the context
{
// set up mocks and expected behaviour
StateSalesTaxWebService stateService
= the_dependency<IStateSalesTaxWebService>;
MunicipalSurchargesWebService municipalService
= the_dependency<IMunicipalSurchargesWebService>;
stateService.Stub(x => x.GetTaxRate(State.Florida))
.Return(0.6);
municipalService.Stub(x => x.GetSurchargeRate(Municipality.OrangeCounty))
.Return(0.05);
// run what's being tested
decimal result = new SalesTaxCalculator().CalculateSalesTax
(10m, State.Florida, Municipality.OrangeCounty);
// verify the expected behaviour (these are the specifications)
[Test]
public void should_check_the_state_sales_tax_rate()
{
stateService.was_told_to(x => x.GetTaxRate(State.Florida)); // extension methods wrap assertions
}
[Test]
public void should_check_the_municipal_surcharge_rate()
{
municipalService.was_told_to(x => x.GetSurchargeRate(Municipality.OrangeCounty));
}
[Test]
public void should_return_the_correct_sales_tax_amount()
{
result.should_be_equal_to(10.65m);
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-13 05:17:19
JBehave (i NBehave niedawno dodali to samo wsparcie) działa ze zwykłymi plikami testowymi, więc podczas gdy wiele innych frameworków dodaje "BDD taste tounit tests", specyfikacje zachowania oparte na tekście / przykłady utworzone za pomocą JBehave są odpowiednie do testów akceptacyjnych. I nie, nie potrzebujesz fitnesse do tego.
Aby zorientować się jak to działa proponuję jbehaves 2min tutorial .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-03 06:36:33
Podczas gdy BDD jest większy niż zakres samych testów, istnieją rzeczywiście testy BDD. Testy te są testami jednostkowymi, które są zgodne z językiem BDD.
Podany jakiś kontekst początkowy (the givens), W przypadku wystąpienia zdarzenia, następnie zapewnić pewne wyniki.
Istnieje kilka dobrych frameworków BDD dostępnych w zależności od preferowanego języka. JBehave for Java RSpec dla Ruby NBehave dla. NET
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 18:38:29
Do testowania BDD w Flex możesz wypróbować GivWenZen-flex check it out http://bitbucket.org/loomis/givwenzen-flex .
Cheers, Kris
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-25 21:48:38
Dobrze zaimplementowane testy BDD xbehavior są kryteriami akceptacji użytkowników.
Xspecification testy BDD są zwykle testami jednostkowymi i są mało prawdopodobne, aby były akceptowalnymi kryteriami akceptacji użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-08 17:27:25