Realiseren
Leerdoelen:- Leerdoel 7 - code kwaliteit
- Leerdoel 8 - testautomatisering
Code kwaliteit
Toelichting
Om dit leerdoel te behalen ben ik tijdens het opschonen/verbeteren van oude functies en het realiseren van nieuwe functies bezig geweest met de verwachtte code kwaliteit.
Binnen het stagebedrijf wordt er vooral gewerkt met COBOL voor native applicaties en TypeScript/JavaScript voor web development en overige tools waarbij ook mijn stageopdracht geschreven is in TypeScript. Toen ik begon met het analyseren van de stageopdracht kwam ik er al snel achter dat veel code niet helemaal geschreven is zoals bedoelt is binnen de taal, zie “Kwaliteit van de code” uit het adviesverslag. Met het opschonen, verbeteren en uitbreiden van de code heb ik afgesproken dat ik me ging houden aan de standaarden die verwacht wordt van TypeScript code.
Als bewijs heb ik verschillende stukken code verzameld die niet alleen voldoen aan de verwachte kwaliteit maar waar ik ook trots op ben (in ieder geval meer dan overige code).
De code snippets voldoen vooral aan goede error handling, goed gebruik van map()
en reduce()
functions, alleen gebruik van let
als het niet anders kan omdat const
minder overhead heeft en duidelijk leesbare variable namen die genoeg uitleg geven binnen de context.
Bewijsstukken
Feedback
“De code kwaliteit heeft Matthijs zelf moeten uitzoeken aangezien wij dit nog niet helemaal hadden beschreven voor TypeScript. Dit heeft hij goed gecommuniceerd en alles wat hij wilde doorvoeren kon hij ook goed onderbouwen. Verder heeft hij zich goed aan deze code kwaliteit regels gehouden.”
Reflectie
Ik had best veel moeite met bepalen aan welke kwaliteiten de geschreven code aan moest voldoen. Binnen het stagebedrijf wordt vooral code geschreven in COBOL in plaats van TypeScript waardoor er voor Typescript niet echt gedocumenteerde standaarden zijn. Gelukkig stonden de anderen binnen het team vrij open voor de kwaliteit en standaarden die ik had voorgesteld. De voorgestelde kwaliteit en standaarden zijn gebaseerd op best practices en de eigen ervaring die ik heb opgebouwd en onderzocht door school en eigen projecten die ik in Javascript en Typescript heb gemaakt.
Testautomatisering
Toelichting
Om dit leerdoel te behalen ben ik bezig geweest met het uitzoeken en het maken van tests met testautomatisering.
Gitlab (de tool die we gebruiken om git repositories online to beheren) heeft om met CI (continuous intergration) makkelijk testautomatisering toe te passen. Door aan te geven in een .gitlab-ci.yml elke en hoe elke test uitgevoerd moet worden was het vrij gemakkelijk om te beginnen. Ik heb een script gemaakt dat een test case download en het systeem test door het uit te voeren op de test case.
Om het script werkend te krijgen heb ik moeten uitzoeken hoe ik een andere repository kan downloaden via een token vanaf Gitlab, hoe het gitlab-ci.yml bestand werkt en heb ik exit codes moeten toevoegen aan het systeem zodat het script weet of er een error is geweest waardoor de test gefaalt is.
In het bewijs zie je screenshots die de automatisch uitgevoerde tests laten zien waarvan alleen 1 test successvol is. De reden dat de overige 2 tests gefaald was omdat de code niet goed gecompileerd werd naar oudere versies van Node.js, dit was een bekent probleem en is ook direct na het toepassen van de testautomatisering opgelost.
Bewijsstukken
Feedback
“De testautomatisering van Apva doen we in gitlab, ik denk dat Matthijs dit even goed heeft moeten uitzoeken maar gelukkig was er al wat materiaal waar hij naar kon kijken binnen Apva. Matthijs heeft zijn keuze van testen goed kunnen uitleggen en onderbouwen waarom hij dit zo wilden doen. Ik denk dat hij met dit leerdoel een hele andere kant weer heeft geleerd van het ontwikkelproces.”
Reflectie
Ik had nog nooit gewerkt met testautomatisering en vond het ook erg spannend toen ik eraan ging beginnen. Het was goed te begrijpen en om toe te passen binnen gitlab. Ook ben ik blij dat mijn collega’s open stonden om mij hiermee te helpen als ik vragen had. Ik zag best wel op tegen het uitzoeken van dit leerdoel omdat ik dus nooit met testautomatisering heb gewerkt, gelukkig viel het uiteindelijk erg mee. Ik denk dat het belangrijk is om de volgende keer niet te moeilijk hierover na te denken en te kijken welke tools ik kan gebruiken om bij het doel te kunnen komen.