Hannes Lindblom

Automatiserbarhet - Höga krav från dammsugarroboten

2018-11-16 Blogg Test Läst 117 gånger

(I ett tidigare inlägg drog jag paralleller mellan städning och testbarhet och konstaterade att man behöver plocka undan innan man dammsuger, något som underlättar dammsugandet drastiskt. Läs gärna det inlägget innan du fortsätter här).

Att släppa loss en dammsugarrobot i ett rum ställer höga krav på förberedelserna. I ett rum med saker kringspridda på golvet och låga möbler kommer roboten inte att kunna komma åt överallt. I värsta fall kommer den att köra fast på en hög tröskel och inte kunna slutföra jobbet överhuvudtaget tills en människa kan hjälpa den loss. Vi kan säga att ett rum med höga trösklar, låga möbler och många lösa prylar på golvet har låg automatiserbarhet.

Så, om vi vill introducera automatisering i vår städning faller det sig naturligt att vi gör det så enkelt som möjligt för roboten att ta sig fram. Om vi tittar på testautomatisering har vi tyvärr inte alltid detta angreppssätt. Där ser jag ofta exempel på att att man istället för att öka automatiserbarheten väljer att bygga en mer komplex automatiseringslösning för att jobba runt problemet. För att återgå till vår metafor så skulle det motsvara att vi försöker bygga en humanoid robot som ska klara av att plocka undan föremål och kliva över trösklar innan den greppar en handhållen dammsugare och dammsuger rummet. Vi kan ju bara föreställa oss hur många gånger dyrare en sådan lösning blir jämfört med att se till att rummet är lättstädat, både i utveckling, stabilitet och underhåll. Så när du vill börja bygga upp en automatiseringslösning, se till att först tänka på automatiserbarheten. Samma övergripande punkter som jag tog upp vad gäller testbarhet kan också appliceras på automatiserbarhet:

  • Observerbarhet - Hur lätt är det att programmatiskt få ut information ur systemet?
    Till exempel: Genereras loggutskrifter enhetligt och lätt att läsa in för ett datorprogram? Finns gränssnitt mot tjänster eller databaser som kan användas vid verifiering av olika handlingar mot systemet?
  • Kontrollerbarhet - Hur lätt är det att programmatiskt påverka systemet i den riktning man behöver för testningen?
    Till exempel: Finns det gränssnitt som lämpar sig för automatisering så att allt inte behöver göras genom GUI:t? Går det att komma åt bakomliggande databaser för att kunna skapa det data som behövs?
  • Tillgänglighet - Hur lätt är det för automatiseringslösningen att få tillgång till systemet?
    Till exempel: Finns det testmiljöer dedikerade till automatiserade körningar eller ska sådant synkas och samsas med andra testaktiviteter?

Till dessa punkter skulle vi också kunna lägga stabilitetsaspekten. En automatiseringslösning är i regel väldigt känslig för förändringar och kommer att bli väldigt dyr att underhålla om systemet som testas är för föränderligt. Det gäller därför att sätta upp tydliga förväntningar på till exempel att ID:n på olika komponenter inte ska ändras i onödan eller att beteendet i till exempel dialogrutor är konsekvent sett över en hel plattform eller produkt. Som i mycket annan utveckling handlar det ofta om att bygga upp tydliga gränssnitt så att automatiseringen inte blir beroende av implementationsdetaljer.

Sammanfattningsvis så kan vi konstatera att det kan vara väldigt klokt att se över automatiserbarheten innan du ger dig in i en stor satsning på testautomatisering. För det är ju trots allt produkten eller tjänsten som du utvecklar som du vill lägga mest krut på, inte systemet som testar den.

Dela artikeln