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.