torsdag den 5. januar 2012

Abstrakte scenarier i Cucumber

Nogen gange har man behov for at teste mange features som ligner hinanden meget. Dette anvendes f.eks ret tit ifm. data drevet test. Cucumbers måde at tackle dette er ved at lave et abstrakt scenario og så efterfølgende give eksempler på testdata.

Der er ikke noget i vejen for at disse eksempler udgør et komplet datasæt sådan at der egentligt er tale om datadrevet test, men der er på den anden side heller ingen regler om at det skal være sådan.
Hvis vi går tilbage til onsdag d. 4 januar så beskrev jeg hvordan man kunne optimere de af sine scenarier der ligner hinanden meget vha. et baggrunds scenarier. I dette post vil jeg bygge videre på den ide og optimere yderligere ved at lave den om til en data drevet test i stedet.

Opbygningen er meget lig den vi kender, vi starter med en egenskab og derefter definere vi et scenario, i dette tilfælde et abstrakt scenario. I en normal feature fil ville vi bare fylde på med scenarier indtil vi havde demonstreret alle de ting vi skulle, men når man bruger et abstrakt scenario, anvender man data eksempler til at beskrive data.
Her er slut egenskaben fra onsdag d. 4/1:

# Language: da
Egenskab: Velkomst på flere sprog
    For at kunne tilgodese forskellige sprog og kulturer
    Som bruger af applikationen
    Skal jeg få vist en velkomsmeddelelse på mit modersmål.

Baggrund:
    Givet jeg har en ny Firefox browser
    Givet jeg navigere til applikationens forside
    Givet jeg logger ind som “testbruger_1” med password “hemmeligt”

Scenarie: Dansk
    Når jeg vælger sproget “Dansk” i sprogvælgeren
    Så skal velkomst beskeden være “Velkommen”

Scenarie: Svensk
    Når jeg vælger sproget “Svenska” i sprogvælgeren
    Så skal velkomst beskeden være “Välkomna”
        
Den kan vi optimere med et abstrakt scenario på følgende vis:

# Language: da
Egenskab: Velkomst på flere sprog
    For at kunne tilgodese forskellige sprog og kulturer
    Som bruger af applikationen
    Skal jeg få vist en velkomsmeddelelse på mit modersmål.

Abstrakt Scenario: Alle sprog
    Givet jeg har en ny Firefox browser
    Givet jeg navigere til applikationens forside
    Givet jeg logger ind som “testbruger_1” med password “hemmeligt”
    Når jeg vælger sproget “<sprog>” i sprogvælgeren
    Så skal velkomst beskeden være “<besked>”
        
Eksempler:
    | sprog    | besked     |
    | Dansk    | Velkommen  |
    | Svenska  | Välkomna   |
    | Norske   | Velkommen  |
    | Soumi    | Tervetuloa |
    | Íslenska | Velkomin   |

Hvis dette var den udtømmende liste af sprog som kunne anvendes i den angivne web applikation, så ville dette udgøre en fyldestgørende test for denne egenskab. Dejlig konkret og nemt at læse.
Kan du se andre steder hvor dette med fordel kunne anvendes? - kom gerne med en kommentar.

Cucumber installation på Windows

Her er en video der på kun 11 minutter gennemgår hvad du skal gøre for at installere Cucumber plus diverse afhængigheder og værktøjer på Windows.




Links:
Teknisk info: Videoen er optaget på min MacBook Air med ScreenFlow. Windows kører i VMWare Fusion. Videoen er uploaded til YouTube i HD kvallitet.

onsdag den 4. januar 2012

Baggrundsscenarier i Cucumber

Nogen gange sker det, når man lavet Cucumber feature filer, at man skal demonstrere en egenskab med et antal scenarier der alle starter på samme måde, men slutter forskelligt. I disse tilfælde kan det være en god ide at anvende et baggrunds scenarie.

 Et baggrunds scenarie indeholder en række steps som bliver kørt inden hvert scenarie. Dette kan forkorte hver scenarie for de repetitive steps sådan man kun forholder sig til det der er forskelligt i hvert scenarie, og ikke det man er nød til at gøre for at nå frem til sin egentlige test. 

Forestil dig følgende egenskab: 

 # Language: da 
Egenskab: Velkomst på flere sprog 
    For at kunne tilgodese forskellige sprog og kulturer 
    Som bruger af applikationen 
    Skal jeg få vist en velkomsmeddelelse på mit modersmål. 

  Scenarie: Dansk 
    Givet jeg har en ny Firefox browser 
    Givet jeg navigere til applikationens forside 
    Givet jeg logger ind som “testbruger_1” med password “hemmeligt” 
    Når jeg vælger sproget “Dansk” i sprogvælgeren 
    Så skal velkomst beskeden være “Velkommen” 

  Scenarie: Svensk Givet jeg har en ny forefox browser 
    Givet jeg navigere til applikationens forside 
    Givet jeg logger ind som “testbruger_1” med password “hemmeligt” 
    Når jeg vælger sproget “Svenska” i sprogvælgeren 
    Så skal velkomst beskeden være “Välkomna” 

Og så videre for de ca 40 sprog applikationen understøtter. Pænt meget copy paste arbejde. Hvis vi derimod anveder et baggrunds scenarie kommer det til at se sådan her ud: 

# Language: da 
Egenskab: Velkomst på flere sprog 
    For at kunne tilgodese forskellige sprog og kulturer 
    Som bruger af applikationen 
    Skal jeg få vist en velkomsmeddelelse på mit modersmål. 

Baggrund: 
  Givet jeg har en ny Firefox browser 
  Givet jeg navigere til applikationens forside 
  Givet jeg logger ind som “testbruger_1” med password “hemmeligt” 

  Scenarie: Dansk 
    Når jeg vælger sproget “Dansk” i sprogvælgeren 
    Så skal velkomst beskeden være “Velkommen” 

  Scenarie: Svensk 
    Når jeg vælger sproget “Svenska” i sprogvælgeren 
    Så skal velkomst beskeden være “Välkomna” 

På den snedige måde fik vi reduceret hver enkelt scenarier fra 5 til 2 linjer samt forøgede overskueligheden over hvad der rent faktisk blev testet i den enkelte scenarier betydeligt.