Aftonbladet & Schibsted på väg

Omvärldsbevakning och direktrapportering från fältet

Startsida / Inlägg

Få ut mesta möjliga av dina BDD-artefakter

av Erik Fried

(Behaviour Driven Development är förlänging av Test Driven Development. Det viktigaste man mest justerat är att språket är rätt. Dels ska testerna formuleras på ett naturligt språk som är begripligt för alla stakeholders, även icke-programmerare. Dessutom försöker man inom BDD undvika att prata om testerna som ”tester” eftersom det inte är testerna i sig dom är det viktiga, utan beteende, hur systemet beter sig. Alltså behaviour driven i stället för test driven.)

David Evans pratade under en av de sista presentationerna om hur man får ut så mycket som möjligt av sina BDD artefakter.
Artefakter är helt enkelt de ”tester” man har som skapat. Anledningen till att han krånglar till det och inte kallar dem för tester är att de är mer än bara tester:

  • Innan utvecklingen börjar har artefakten ett värde som specifikation,
  • under utvecklingen fungerar den som test och
  • efter att en feature är färdigutvecklad fungerar artefakten som dokumentation
Att alla dessa värden av ett ”test” finns var inget nytt för mig, men jag hade faktiskt inte riktigt tänkt på den temporala aspekten tidigare, att funktionen varierar över tiden.
Presentationen innehöll en hel del matnyttiga tips på hur man gör sina artefakter så bra som möjligt, så att de faktiskt funkar i alla tre rollerna. (Detta inlägg kommer halta en del eftersom jag inte kommer åt exemplen som han visade, men…) Även vanliga misstag, anti-patterns, illustrerades.
Det finns tre krafter som påverkar hur detaljerat de ska skrivas
  • tydliga och kortfattade (för att vara bra spec)
  • kompletta (för att vara bra test)
  • Självförklarande (for att vara bra dokumentation)
Och tre krafter som påverkar vilket omfång de ska ha:
  • Specifika – De ska vara tydliga med just vad som är annorlunda
  • Integrerade – Invävda i sitt sammanhang
  • Underhållbara – Ska inte behöva ändras för ofta
Features
Anatomin för BDD-artefakter ser typiskt ut som att man först på en ganska hög nivå beskriver en feature. Detta är ganska exakt en user story, och brukar ofta skrivas på formen:
Som en <stakeholder>
vill jag <funktion>
för att <affärsnytta>
En bättre form (som jag tror att vi brukar använda på aftonbladet) är:
För att uppnå <affärsnytta>
som <stakeholder>
vill jag <funktion>
Dett är bättre dels för att det sätter det viktigast först: nyttan med funktionen. Det är även bra för man fokuserar på problemet innan man börjar diskutera lösningen. (Och här kommer det alltså igen, samma sak som jag tidigare hört både när man pratat UX och API-design tidigare på konferensen: Förstå problemet först, innan man diskuterar hur det ska lösas!)
Tips här:
  • Slarva inte med de beskrivande delarna av artefakterna – man gör bdd för människor, inte för maskiner
  • ”För att” steget ska typiskt innehålla att man ökar det relativa värdet av något (eller minskar om det är något som är dåligt). T ex kan syftet vara att minska antalet användare som avslutar en tjänst. Då kan det vara lättare att se alternativa lösning som verkar för samma mål, men som man inte tänkt på först. Den tänkta lösningen kanske vore bäst, men orimlig pga av tidsbrist el ekonomi, men den alternativa kan vara bättre än ingenting.
  • Håll isär vad, varför och hur. Hur ska typiskt inte ens synas i detta ”lager” av testerna, utan delegerar ner till ett mer tekniskt automatiseringslager.
Några ”smells” som brukar dyka upp i feature beskrivningar är att
  • ”systemet” dyker upp som stakeholder.
  • produktägaren dyker upp som stakeholder. inte lika illa kanske, men normal är det ju en användare som ska dra nytta av en funktion
  • Beskrivningen innehåller en halvfärdig lösning
  • Beskrivningen är för specifik
Scenarios
Varje feature beskrivs mer i detalj med hjälp av scenarier. Dessa brukar skrivas på formen:
Givet <tillstånd innan>
När <något som sker>
Så ska <resultat>
Tipstet här är att börja med ”happy-path”. Testare kan med sin speciella testar-gen snabbt komma på massvis med specialfall och krångliga situationer som bör testas. Börja inte med dessa, eftersom det snabbt blir väldigt mycket brus av detta.
Hur ser då en bra scenariobeskrivning ut?

Fokuserad: Vad är annorlunda? Vad är skillanden mot andra scenarier? Fokuserar det på precis den skillnad som ska lyftas? Skriv ”then”-delen (”Så ska”) först – resultattet viktigast  Ha ett nyckelord i testnamnet

Balanserad: Akta sig för fomuleringar som ”Så ska alla utskrifter bli korrekta”. Se upp för givna som inte påverkar resultatet (så att). Scenariet ska vara som ett timglas -”när” är midjan, enbart ett ”när” statemnet.  Behåll en och samma abstraktionsnivå i alla delar av testet.

Avgränsad: Om scenarier säger ”över 50” så är värdet 100 dåligt som test, använd 51. Tänk exempel och motexempel.

Information

Denna blogg är inte längre aktiv. För en lista på aktiva bloggar, gå till bloggar.aftonbladet.se.

Sök

Arkiv

Kategorier

  • Tjänstgörande redaktörer: Love Isakson Svensén, Alex Rodriguez och Fred Balke
  • Chefredaktör, vd och ansvarig utgivare: Lotta Folcker
  • Stf ansvarig utgivare: Martin Schori
  • Redaktionschef: Karin Schmidt
  • Besöksadress: Västra Järnvägsgatan 21, Stockholm
  • Org.nr: 556100-1123
  • Momsregistreringsnr: SE 556100-112301
  • Kontakt: förnamn.efternamn@aftonbladet.se
  • Aftonbladet Plus Kundcenter: tipsa@aftonbladet.se
  • Telefon växel: 08 725 20 00
  • FÖLJ OSS

© Aftonbladet Hierta AB