Ny trainee på Cinnober, mitt i testblocket


Comments Off on Ny trainee på Cinnober, mitt i testblocket

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!

Comments Off on Ny trainee på Cinnober, mitt i testblocket





Bookmark and Share

Please leave a comment - click here!

En dag på Cinnober


Comments Off on En dag på Cinnober

Hej!

Det börjar bli lite lugnare inom MarkitSERV-projektet nu, i tisdags tog vår sprint slut och vi hade release utav vår senaste version till kunden så innan dess var stämningen smått hektisk. Efter sprintens slut har vi hunnit med att ha retrospective (tillbakablick på sprinten som gått) och planerat nästa sprint som kommer att sträcka sig till mitten av mars. Min roll som utvecklare under den nya sprinten ligger fortsatt på att fixa buggar som testarna och kunden har hittat vilket är något jag trivs bra med. Det ger möjlighet att se många olika delar av systemet vilket är till stor nytta senare då man behöver lägga på ny funktionalitet. Men nog om det! Jag tänkte att det kunde vara av intresse att få inblick i hur en vanlig dag på Cinnober ser ut då man är trainee, så här är en sammanfattning utav min fredag:

8:45

Efter att ha åkt buss in till centrum anländer jag kring 8:45. Jag utför morgonritualen som är att läsa mail och uppdatera systemet till den senaste versionen samt kikar på hur de nattliga testerna gått.

9:00

Dags för Scrum-möte! Här går vi igenom varje område vi arbetar med i projektet och ger varandra uppdateringar om vad vi arbetar med. Fokus ligger på att vara snabb, konkret och att flagga för problem och svårigheter man stött på så att dessa snabbt kan tas om hand om. Mötena är bokade för en halvtimma men vi är vanligen klara efter 15 minuter.

9:30

Före allt annat arbete sker går jag och hämtar dagens första kopp kaffe. Eftersom att jag blev klar med en tidigare bugg dagen innan börjar jag leta efter nästa problem att ta mig an. Det är svårare än vad man kan tro! Eftersom att jag fortfarande är relativt ny på området vill jag välja sådana uppgifter där jag lär mig något nytt men som samtidigt inte ligger för högt ovan vad jag kan. Ibland kan det ta rätt lång tid att hitta något som är lämpligt, men idag får jag efter ett litet tag tips på en bugg som passar och jag börjar efter en kort introduktion arbeta på den. Själva buggen är att fel data visas i en kolumn i en tabell i GUI:t. Jag ska ändra så att rätt data visas. Det kan ju inte vara särskilt krångligt?

10:30

Det visar sig att sättet man vill rätta buggen på inte står beskrivet i buggrapporten eller i de kravdokument som rör området. Om jag bara följer det som står skrivet i rapporten slutar det med att två kolumner som har snarlika namn visar exakt samma data. Någon av kolumnerna är då onödig och borde tas bort. Men vilken? Det betyder att jag behöver konsultera kravanalytikerna för projektet. Lyckligtvis har vi sedan sommaren en ”kravare” i Umeå som arbetar i projektet så tillsammans resonerar vi oss fram till på vilket sätt jag ska lösa problemet.

11:30

Lunch!

12:15

Med kaffet i högsta hugg sätter jag mig ned och arbetar vidare. Det verkar som att den lösningen vi kom fram till har bredare konsekvenser än väntat. För att tabellen ska vara sammanhängande och förståelig behöver jag, om jag vill genomföra mina ändringar, byta namn på fler kolumner. I så fall behöver kravdokumenten ändras.. Ajdå. Det kanske är dags att backa lite?

14:00

Paus i arbetet för en väldigt kort avstämning för hur det går med trainee-programmet.

14:30

Fredagsfika inom projektet. Det finns ingen plats i köket eftersom att Sveriges hockeymatch mot Finland visas på projektorn. Vi lyckas hitta ett rum bredvid och avnjuter hembakta muffins. 😀

15:00

Äventyret med kolumnerna fortsätter. I samförstånd med projektets kravare bestämmer vi oss för att backa alla ändringar och ta bort den andra kolumnen. Allting går därefter som en dans och ett tag senare kan jag testa mina ändringar på mitt lokala system. Det fungerar och ser bra ut, men klockan börjar bli rätt mycket så jag väntar med att checka in tills efter helgen. Det finns få saker som är hemskare än att råka checka in kod som orsakar byggfel sent en fredag!

16:30

Det är inte särskilt lång tid kvar på dagen och kontoret börjar lugna ned sig lite så jag tar tillfället i akt att läsa lite trainee-litteratur! I detta fallet blev det att läsa några avsnitt i ”Working Effectively with Legacy Code”.

17:15

Dags att ta helg och möta upp med min älskling för att äta god mat och träffa några vänner i centrum.

Det var allt för den här gången! Ha en trevlig kväll. 🙂

Comments Off on En dag på Cinnober





Bookmark and Share

Please leave a comment - click here!

Servern startar!


Comments Off on Servern startar!

Översikt på arkitekturen

Här kommer en kort uppdatering kring den slutuppgift vi fått under utvecklingsblocket.

Efter 4 dagar av att ha studerat beståndsdelarna i clearingsystemet och knackat kod så hade vi i fredags på egen hand lyckats skapa en ny server som integrerats i arkitekturen och som startar och kommunicerar med övriga. Efter lite välbehövd vila nu i helgen så kommer vi nu fortsätta lägga till funktionalitet! Kul att se att man rör sig framåt!

Comments Off on Servern startar!





Bookmark and Share

Please leave a comment - click here!

The A-Team


Comments Off on The A-Team

LMEWire, projektet som jag jobbar med har gått live. Hans Sjöberg vår projektledare befinner sig hos London Metal Exchange och har tagit dom här bilderna.

LMEwire är en trade-rapporterings service och den rapporterar alla trades som medlemmar gör till EMIR (Markets Infrastructure Regulations). Deadline för LMEWire var 12:e februari vilket innebar att vi var på ett väldigt tight schema för att vi började i december men vi lyckades! Det är därför vi kallas för ”The A-Team” i London. 🙂

Press releasen finns på London Metal Exchange websida här.

Countdown

Live

Comments Off on The A-Team





Bookmark and Share

Please leave a comment - click here!

Slutuppgift i utvecklingsblocket


Comments Off on Slutuppgift i utvecklingsblocket

Vi börjar nu närma oss slutet i det tre månader långa utvecklingsblocket och fick sådeles en slutuppgift där vi tre trainees måste använda oss av all den kunskap vi fått under blockets gång för att få fram en fungerande produkt.

Bild på slutuppgift i utvecklingsblocket

Uppgiften går ut på att vi ska implementera en ny server med ny funktionalitet i den befintliga arkitekturen av clearingsystemet. Funktionaliteten består av att den ska läsa log meddelanden, d.v.s meddelanden som dom olika servrarna skickar ut som t.ex. att en server nu genererade en varning med det här meddelandet, eller att ett visst meddelande inte gick att skicka pga nätverksproblem.
Dessa meddelanden ska plockas upp av den nya servern vi implementerar och ska sparas i minnet för att sedan på användarens begäran kunna visualiseras i det grafiska interfacet med vissa sökkriterier.

Så detta betyder att bygger och konfigurerar upp den nya servern, skapar alla nya meddelanden som krävs för att kommunicera med det befintliga systemet, skapa nya lagringsmöjligheter och implementerar alla grafiska element för att visa informationen på skärmen när användaren begär detta. Så i princip så är det allt rött i bilden som ska implementeras.

Denna uppgift kombinerar i stort sätt allt som vi hittils gått igenom så det ska bli spännande och se om man minns hur allt fungerade!

Comments Off on Slutuppgift i utvecklingsblocket





Bookmark and Share

Please leave a comment - click here!

Uniaden


Comments Off on Uniaden

Igår har vi varit på Universum på Umeå universitet för Uniaden. Uniaden är en årligt arbetsmarknadsdag. Under dagen träffade vi många duktiga studenter som är intresserade av möjligheter som Cinnober erbjuder tex. traineeprogrammet och exjobb.

Cinnober har varit en av huvudsponsorerna för uniaden i år. Det var väldigt roligt och spännande att få träffa så många intresserade studenter. Igår kväll så gick vi till banketten på Universum. En händelserik dag!

Jag fick en buff från vår monter och jobbade resten av dagen som pirat! 🙂

1656161_3853847120553_1688942800_n

Comments Off on Uniaden





Bookmark and Share

Please leave a comment - click here!

Cinnober på LARV och Uniaden


Comments Off on Cinnober på LARV och Uniaden

Det har varit full fart under utvecklingsblocket under dom senaste veckorna i våra kundprojektet där vi varvat implementering samt ändringar i ny och befintlig funktionalitet med en stor mängd kurser inom ämnet.
Förra veckan så fick jag även representera Cinnober på Luleås arbetsmarknadsvecka, även kallad LARV, och i går så har vi varit på plats på Uniaden vilket är samma upplägg fast vid Umeå universitet. Överlag så har det varit väldigt lärorikt att träffa studenter från dom olika programmen och höra lite om deras tankar kring arbetsmarknaden inom deras sektor.

Möjligen så han några av er titta förbi vid vår monter, om inte så går det bra att höra av sig vid eventuella frågor!

LARV och Uniaden

Comments Off on Cinnober på LARV och Uniaden





Bookmark and Share

Please leave a comment - click here!

Test Gurus! :)


Comments Off on Test Gurus! :)

Vi har haft en två-dagars kurs inom Test Driven Development (TDD) med Sara Hagland som kom till Umeå från Stockholms-kontoret. TDD innebär att man skriver tester först och utgår därifrån. Med den här tekniken minskar oddsen att man skulle missa buggar och fel i koden. Det sparar tid om man tänker på saken långsiktigt och man måste tänka på saken långsiktigt!

Under kursen jobbade vi med relaterade buggar från MarkitServ och LMEClear projekten. Det var riktigt intressant. Det är lite knepigt att komma igång i början men det blir enklare.

Så här ser det ut när koden funkar som det ska! Inga errors! Inga failures! Woohoo!

2014-01-14 16_43_47-Java - TRM_java_com_cinnober_lmeclear_trm_traderecord_impl_TrmTradeRecordValidat

Intervjun med Dagens Industri som jag skrev om förra gången har publicerats. Ni kan kika på den om ni är intresserade! ”Din karriär – Tema trainee”

Artikeln finns här: www.di.se “Dagens Industri”

So long!

Comments Off on Test Gurus! :)





Bookmark and Share

Please leave a comment - click here!

Test Driven Development


Comments Off on Test Driven Development

Nu är nästan alla tillbaka från julledigheter. Under julen har vår kund LME hunnit att testa systemet som vi levererade precis innan jul. De har bara hittat små buggar som vi håller på att fixa. Vi har code freeze på onsdag. Denna vecka börjar utvecklingskurserna. I början av veckan hade vi ett samtal med vår mentor under utvecklingsblocket om TDD kursen. TDD står för Test Driven Development. Vi måste hitta några praktiska problem som vi kan lösa under kursen.

Idag under ett möte med vår program director och mentor fick vi veta att två nya traineer börjar den 3:e februari. Det blir spännande att träffa dem. En av dem ska vara i LMEClear och den andra i MarkitServ. De båda har läst teknisk fysik. Under mötet pratade vi om Cinnobers nya kontor. Vi ska flytta dit under sommaren. Det nya kontoret ligger i centrala Umeå ovanför Utopia. Det är betydligt större och det är bra för att vi kommer att behöva plats för fler medarbetare.

Precis innan julen hade jag en intervju med Dagens Industri (di.se) ”Din karriär – Tema trainee”. Vi pratade om livet som Trainee på Cinnober Financial Technology och varför jag ville jobba här. Det var en väldigt intressant intervju.

God fortsättning!

Comments Off on Test Driven Development





Bookmark and Share

Please leave a comment - click here!


Comments Off on

Hej alla läsare!

Hoppas att ni har haft det bra under julledigheten!

Som jag nämnde i ett tidigare inlägg är jag och mina med-traineer i utvecklingsblocket på traineeprogrammet. Decembers första två veckor var späckade med kurser vars syfte var att ge oss en bra teknisk överblick för de system vi har på Cinnober. Vi har även hunnit med ett väldigt häftigt besök på NASDAQ OMX i Stockholm, vilket de andra traineerna har postat några bilder från. Kurserna har bland annat behandlat olika meddelandeprotokoll som klienter använder för att kommunicera med Cinnobers system, en inblick i hur de databaser vi har fungerar samt en övergripande och till viss del historisk kurs i den tekniska plattformen som våra projekt mot kunder bygger på. Det finns verkligen hur mycket som helst man kan lära sig! Kurserna har gett en bra överblick och föreläsarna har alla gjort ett fantastiskt bra jobb i att presentera sitt material men det kan vara svårt att ta in allt på en gång då tempot är högt. Till viss del har jag min – från början av programmet – inledande okunskap inom Java att skylla på att det kanske gått lite trögt. Jag har lärt mig väldigt mycket under det här halvåret men jag är inte riktigt ikapp än så jag har haft hemläxa i form av Java-programmering under julen. Jag har huvudsakligen läst i boken Working Effectively with Legacy Code av Michael C. Feathers men även läst i Oracles väldigt omfattande Java-tutorial som finns på http://docs.oracle.com/javase/tutorial/. Där blir Java förklarat från grunden så om man är intresserad av att börja använda Java finns där möjlighet att börja på en nivå som passar med ens tidigare kunnande!

Under den sista veckan innan julledigheten hade jag det lugnare då det kommer till kurser så jag har kunnat komma in i rollen som utvecklare lite mer. Steget från att skriva automatiska tester som testare och att vara utvecklare har i mitt fall inte varit särskilt stort. Jag har till exempel suttit och skrivit enhetstester (en enhet kan i det här fallet ses som den minsta testbara beståndsdelen i koden) vilket kanske inte låter så annorlunda mot de tester jag skrivit under testblocket men det finns en del skillnader.

De tester jag skrivit som testare använder ett meddelandeprotokoll som heter FIX* för att kommunicera med hela systemet. Testerna körs med hela systemet uppstartat och fokuserar på att testa saker ur ett användarperspektiv. Som användare har man ingen detaljkunskap om hur systemet fungerar i sitt inre utan man är mest intresserad av att man, givet vissa meddelanden skickade till systemet, får rätt meddelanden tillbaka. Systemet i sig fungerar som en svart låda.

Enhetstester skrivs med detaljkunskap om hur koden är uppbyggd och har en stor fördel i att man slipper starta upp hela systemet för att köra dem. Fokus ligger på att testerna ska vara snabba, avgränsade och kunna ge tidig feedback till en utvecklare som gör ändringar i relaterad kod. Om ens kod har stöd utav en stor bas med enhetstester kan man med betydligt större säkerhet genomföra ändringar. Det finns med andra ord stora vinster att få – både i produktivitet och i minskad stressfaktor hos utvecklare – genom att ha en vältestad kod! De nya utmaningarna har till stor del bestått i att lära mig hur jag ska kunna bygga falsk data som testet kan använda sig utav, så kallade ”mocks”. Mock är engelska för oäkta, falsk.  Man behöver bygga upp sån data eftersom att man – trots att systemet inte är igång – måste få den delen man vill testa att bete sig som då allt är ”up and running”. Det finns såklart bra hjälpmedel tillgängliga för att skapa mocks, jag har använt mig utav ramverket Mockito så här långt har det fungerat jättebra.

 

unitTestAllTheThings

Nu ska jag återgå till enhetstestandet! Ha det bra. 🙂

*FIX är ett meddelandeprotokoll för att skicka information som används inom finansbranschen, FIX står för Financial Information eXchange.

Comments Off on





Bookmark and Share

Please leave a comment - click here!

Older Entries Newer Entries