Hej alla bloggläsare!

Johan Sundberg heter jag och har börjat som trainee här på Cinnober för sju veckor sedan nu. Jag har läst Civilingenjör, teknisk fysik vid Umeå Universitet och tog examen i januari. Traineeperioden på Cinnober är indelad i lite olika block och just nu är jag mitt uppe i testblocket som är 12 veckor långt. Blocket varvas med utbildning och praktiskt arbete i ett kundprojekt, jag tillsammans med min kompanjon Rasmus (den andra traineen som började samtidigt) är i projektet LME Clear (London Metal Exchange Clearing). LME är världens största börs för optioner och terminer för metaller och Cinnober levererar med det kundprojekt jag är med i mjukvaran till ett clearinghus som tillhör LME.

Testning som koncept var helt nytt för mig innan jag började jobba här, det jag kunde associera med testning innan var i princip kolla att din användare inte skriver in konstiga saker som input till ditt program, som är i princip så långt som mina kurser på universitetet tog detta. Området testning är väldigt stort men jag tänkte berätta lite kort om de tre huvudnivåer i systemet som man brukar dela in testningen i och vad jag har gjort senaste veckorna.

mikecohntestpyramid

(Bild tagen från https://vinodkumaar.wordpress.com/tag/functional-test/)

Det finns många olika tankar kring hur man ska testa men ganska generellt kan man sammanfatta de olika testnivåerna i systemet som i bilden ovan. Unit tester är tester som utvecklare skriver och körs direkt mot källkoden, t.ex tester som körs mot individuella metoder i klasser. Integration/functional testning testar en eller flera moduler i systemet. UI/system/exploratory nivån är högsta nivån där man testar hela systemet. Tanken med uppdelningen är att man ska hitta buggar snabbt och på rätt nivå, då blir det mycket enklare att hitta och rätta buggar.

En stor del av tiden på Cinnober hittils förutom att lära sig alla nya begrepp och nya rutiner osv har gått åt till att lära mig FIX protokollet och skriva tester mot det. FIX är en standard inom finansbranschen för att skicka information om t.ex transaktioner och mycket annat. LME Clearing systemet som jag hjälper till att utveckla tar emot matchade ordrar från London metal exchange och ska sedan lägga in dom i clearingsystemet. I det lagret vill vi vara säkra på att inga konstigheter skickas i FIX-meddelandet som t.ex konstiga ascii-tecken, nullsträngar osv då det har hänt att vi har fått in buggar på detta.

Det har blivit en del programmering och utvecklande av automatiska tester som skickar in alla möjliga konstiga FIX-meddelanden med ogiltiga fält osv för att kolla vad våran mottagande server svarar med. Dessa tester kan klassas in i kategorin integration/functional test i pyramiden ovan. Det fina med att utveckla automattester är att vi lägger in dom i en byggplattform som kör testerna automatiskt flera gånger per dag mot senaste versionen av källkoden, detta gör att man snabbt kan se om systemet beter sig annorlunda om man ändrar i koden nånstans. Denna metod är väldigt effektiv när man utvecklar kritiska system som t.ex börser där man lägger stor vikt vid att det inte ska finnas buggar som kan sänka mjukvaran.

Det var allt från mig den här gången, ha en toppendag!