Wpis z mikrobloga

Cześć :)

Jak wiadomo podejście BDD jest podejściem biznesowym, nie rozpisujemy testowania aplikacji krok po kroku tzn.

When I fill name
And I fill last name...

tylko scenariusz ma wyglądać:

When i register in app

i to już pod tym krokiem znajduje się wypełnienie wszystkich danych. Mam jednak pewien problem, jak powinien zostać napisany test który sprawdza brak wypełnienia danych? Czy to ma być jeden globalny scenariusz sprawdzajacy brak wypełnienia wszystkich danych czy globalny i inne scenariusze sprawdzające nie wypełnienie jednego z wymaganych pól np imienia? Jest to o tyle problematyczne, że byłoby sporo kroków do napisania różniących się praktycznie nie wypełnieniem tylko jednego pola

When I do not fill name
When I do not fill last name

Dodaje także tag programowanie ponieważ duża część programistów równieżzajmuje sie tymi zagadnieniami

#bdd #gherkin #testowanieoprogramowania #programowanie
  • 11
  • Odpowiedz
@Dasad:
Ja preferuję inne podejście. Wyobraź sobie, że masz formularz użytkownika z polami 'name', 'location' i 'number'.
I teraz kolejno:
1. Korzystając z wyrażeń regularnych tworzysz sobie typy dla każdego pola:

@parse.with_pattern(r'\swith\sphone\snumber\s"\d+"')
def parse_phone_number(text):
2. Analogicznie tworzysz sobie typ danych, który będzie obsługiwał wyrazenie 'without phone number'
3. Rejestrujesz taki typ pod odpowiednią nazwą:

register_type( phone_number=parse_phone_number)
4. Używasz tego w stepie jako opcjonalny (!) parametr:

@when('I create new{admin:admin?} user with "{login}"
  • Odpowiedz
Nie zmieniaj kroków when i and które uzupełniają dane pola. Korzystaj z nich w tych samych metodach zarówno dla testów happy path i negatywnych. Po prostu opisz to w pozycji Scenario - nie znam jbehave, opieram sie na cucumberze ale zakładam ze jest podobnie. W opisie testu niech bedzie info o niewypełnianiu pół. W sendKeys użyj zwykłego pustego stringa
  • Odpowiedz
@supersucker Tobie chodzi o to żeby zrobić krok when i fill user data and i do not fill name (i tutaj ustawiamy pustego string)? Jeżeli tak to wydaje mi się to dosyć słabe z punktu widzenia biznesu
  • Odpowiedz
@Dasad: When i fill user data: and
Examples:
|user|password|
|user1|password1|
| | |
|user2|password2|

W kodzie masz jedna metodę: iFillUserData(String user, String password)
A sterowanie parametrami zostawiasz biznesowi w pliku feature
  • Odpowiedz
@supersucker bardzo podobnie zrobiłem dla testów logowania, ale zastanawiam się czy ich nie przerobić bo wymaganie biznesowe to nie jest. Pod kątem biznesu byłoby to raczej When I logging to app... A druga kwestia to jeżeli masz x wymaganych danych to tego w ten sposób nie napiszesz bo jak? When I fill user data: and and ... U mnie w aplikacji formularz rejestracji zawiera 5 pól wymaganych
  • Odpowiedz
@Dasad: Ale wlasnie na tym polega BDD. To biznes powinien przynieść ci plik feature ze scenariuszami, które juz są uzupełnione danymi testowymi - w tym przypadku pięcioma parametrami dla pól twojego formularza. Ja nie wodze w tym nic złego. Zawsze mozesz taki formularz rozdzielić na dwa kroki.
  • Odpowiedz