Mensen blijven er vaak niet bij stilstaan dat de ontwikkeling van een web applicatie of website meer inhoud dan het ontwerpen van een layout en wat code schrijven.
Web applicaties worden steeds complexer en de vraag naar kwaliteit stijgt. Om aan deze eisen te voldoen horen web developers meer te doen dan programmeren alleen. Aanpassingen aan de code moeten in een centrale plaats worden bijgehouden, de correctheid van deze aanpassingen moet worden gecontroleerd, en tenslotte moeten deze aanpassen nog online gezet worden.
Hoewel de doorsnee gebruiker hiervan niet wakker ligt, kan een inzicht in deze zaken een antwoord geven op enkele belangrijke vragen: “waarom komen er zoveel bugs voor?”, “waarom duurt het zo lang om nieuwe features toe te voegen?”, “hoe is het mogelijk dat iets wat gisteren nog werkte, vandaag niet meer werkt?”,...
Aanpassingen aan de code bijhouden: versiebeheer
Bij versie beheer worden alle aanpassingen aan de code in een centrale plaats bijgehouden. Eventuele conflicten, door code aan te passen, zullen snel gevonden worden. Als er problemen optreden kan de vorige versie snel hersteld worden. Of men kan bekijken welke code het laatst werd aangepast en zo de fout sneller vinden.
Ook geeft het de mogelijkheid om een volledige historiek op te vragen van alle wijzigingen die ooit gemaakt werden.
Controle dat de code werkt: testen
Om te garanderen dat de web applicatie correct werkt moet er getest worden. Vaak wordt dit manueel gedaan. Je kan je echter wel indenken dat de persoon die dit doet zijn of haar concentratie verliest en op die manier tests vergeet uit te voeren.
Dit valt echter grotendeels op te vangen door het testen te automatiseren. Hoewel dit concept al decennia lang bestaat is het iets dat veel te weinig wordt toegepast. Hierbij hoor je vaak steeds dezelfde excuses.
Het neemt teveel tijd in beslag
Het is inderdaad zo dat het schrijven van tests in het begin wat meer tijd vraagt. De voordelen zijn echter op korte termijn duidelijk voelbaar. Je kan gerust de bestaande code herschrijven en verbeteren, zolang de tests niet falen zal de web applicatie correct blijven werken.
Manueel testen gaat sneller
Hoewel het lijkt dat manueel testen sneller gaat, is dit slechts schijn. Bij het automatisch testen worden namelijk elke keer alle tests overlopen, ook de randgevallen. Iets dat bij manueel testen vaak wordt overgeslagen omdat het teveel tijd vraagt of men zich niet alle randgevallen herinnerd.
Je kan toch nooit alles testen
Het is inderdaad geen publiek geheim dat je nooit alles kan gaan testen, er zijn altijd randgevallen waarmee geen rekening wordt gehouden. Dit is echter niet nodig. Deze randgevallen kunnen voor bugs zorgen en bij het oplossen ervan worden hiervoor nieuwe tests geschreven zodat deze bug zich geen 2de keer meer kan voordoen.
Ik ben developer, het is mijn taak niet om te testen
Deze uitspraak is niet volledig waar. Het is de taak van de ontwikkelaar om te garanderen dat de werking van de code gelijk blijft. Geautomatiseerde tests zijn hiervoor een hulpmiddel, ze garanderen ons dat het oude gedrag hetzelfde blijft.
Het schrijven van testen is een gewoonte. Zodra je hieraan gewend bent wil je er echter nooit meer vanaf stappen. Het garandeert een goede werking van de code, ongeacht de wijzigingen.
Online zetten aanpassingen: deployment
Vandaag worden webtoepassingen nog al te vaak geupload via FTP. Het klaarzetten van webtoepassingen via FTP is op korte termijn vragen om problemen. Zo moet je als developer er altijd voor zorgen dat alle gewijzigde bestanden geupload raken of direct het gehele project in zijn geheel (wat bij grotere projecten wel een een tijdje kan duren).
Laat staan dat er ergens toch een programmatiefout is opgetreden, of je toch wel een bestand bent vergeten te uploaden. Als je van de laatst stabiele versie geen backup hebt staan zal het nog niet zo makkelijk worden om alles snel bug vrij te krijgen.
Door gebruik te maken van versiebeheer en tests kunnen we dit echter verbeteren. We halen de nieuwste versie op, hierbij worden enkel aangepaste bestanden opgehaald. De tests draaien een laatste keer en tenslotte worden de aanpassen online gezet.
Dit kan perfect geautomatiseerd worden dankzij tools als Capistrano, Phing, Ant, ...
Win-win
Hoewel bovenstaande punten voor sommige ontwikkelaars omslachtig en/of overbodig lijken zorgt het toepassen ervan dat een betere kwaliteit kan aangeboden worden.
Niet alleen kunnen bugs sneller opgelost worden, het maakt het ook mogelijk sneller op nieuwe noden in te spelen en toch een zekere garantie kunnen geven dat alles blijft werken zoals gedefinieerd.
Ik heb gemerkt dat er door sommigen toch een stap in de goede richting gezet wordt. Echter zie ik dat nog veel web developers weinig belang hechten aan het optimaliseren van hun workflow, wat een spijtige zaak is. Door je workflow te gaan optimaliseren kan je de kwaliteit een boost geven en blijft er meer tijd over om je te focussen op andere dingen.
