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

(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.


A Holistic View on Developer Productivity

What does developer productivity mean, really? Is it churning out more code or less code? Is it to have less bugs in production or shipping code more often? Is it doing a lot of things or just one thing? Let’s think about this for a moment. I believe developer productivity is about getting more things […]


Improving the usability of Aftonbladet Video-clip pages

We have recently started the process of improving the usability of video-clip pages. In order to get an idea of where Aftonbladet stands compared to other world-class online video/news providers, we conducted an online test answered by 110 visitors of Aftonbladet TV. In this test we compared their perception of an Aftonbladet TV video-clip page […]


Schibsted’s 1st iOS Deployment Meet-up

Schibsted’s 1st iOS Deployment Meet-up Thursday, 28th of April 2016: getting to know each other, guests arrive Friday, 29th of April 2016: the meet-up date We here at Aftonbladet had been planning on having a meet-up with iOS developers across various Schibsted companies for many months. We had a range of topics in mind for […]


Hackday: The Future of Storytelling is social, engaging and rewarding

We gathered students, journalists, developers and designers to get together and conceptualize something new for the news industry. This was our first organized hack event – The Future of Storytelling Hack. The hack was a team-based, news-media-focused prototyping and experimentation event within storytelling over two days at Kungsbrohuset, Schibsted and Aftonbladets headquarter in Stockholm. A good story used to […]