Centric connect.engage.succeed

Het roer om met Docker

Geschreven door Redactie Craft - 07 april 2017

Redactie Craft
Afgelopen week was het weer zover. Ik open de zojuist opgeleverde applicatie bij mijn klant en start met testen. En ja hoor, het defect dat afgelopen sprint was opgelost, staat weer in de applicatie. Enigszins verbaasd kijk ik nogmaals naar mijn test en de applicatie. Het defect is écht terug. Dan maar even op bezoek bij de ontwikkelaar die tegenover mij zit. Hij reproduceert de stappen, kijkt me een beetje schuin aan… ‘oh, maar op mijn machine werkt het wel!’

Gelukkig komen de heren van bol.com uitleg geven over Docker. Want met die tool moet dit soort problematiek tot het verleden gaan behoren.

Docker?

Tijdens het Craft Event Docker voor testers gaven Joost van Wollingen, Maarten Dirkse, Ivo de Bruijn en Vince Feskens van bol.com uitleg over Docker.

Logo DockerDocker maakt gebruik van containers en images. Die containers zijn gebaseerd op images en gemakkelijk op te zetten en te combineren. Het gaat om lichtgewicht containers die eenvoudig te verplaatsen zijn. Bovendien zijn ze zelfvoorzienend: na het installeren van Docker kun je direct je images runnen met daarin alle benodigde afhankelijkheden, of dit nu Ubuntu of een webserver is. Het grote voordeel van Docker ten opzichte van VMware? Je hoeft geen zwaar besturingssysteem of packages te installeren of image (virtuele disk) aan te maken. De Docker-containers zijn hierdoor een stuk kleiner en gaan spaarzamer met resources om. Zo draai je niet langer tal van virtuele machines met elk hun eigen operating system. Bovendien werk je altijd op dezelfde versie als de ontwikkelaar (van operating system tot de release). Met andere woorden: nooit meer een discussie over versies! En – wat nog belangrijker is – je kunt containers productie like opzetten. Docker gaat zelfs nog een stapje verder, want je kunt de containers direct naar productie doorzetten wanneer je klaar bent met testen en alles goed is bevonden.

De workshop Docker

Nadat Maarten van bol.com ons een korte introductie heeft gegeven over wat Docker is, zijn wij met ongeveer dertig geïnteresseerden van zowel binnen als buiten Centric hands on aan de slag gegaan. De zaal was verdeeld in groepen, wat erg handig was voor de oefeningen, omdat een beetje hulp van je buurman of -vrouw nooit kwaad kan tijdens een hands on workshop. En als we er ook onderling niet meer uitkwamen, waren er altijd nog de heren van bol.com om ons de goede richting op te sturen.

Tijdens de workshop hebben we kunnen proeven van hoe we Docker kunnen toepassen als tester. We zijn gestart met het runnen van containers, opzetten van een eigen image en hebben inzicht gekregen in hoe je kunt testen met behulp van Docker.

Runnen van containers

We beginnen makkelijk met het runnen, starten en inspecteren van een bestaande Docker-container die is gepubliceerd op de publieke Docker Hub. De eerste stap is het checken of onze Docker set-up correct is. Opvallend waren de gegenereerde container NAMES: jolly_pike en loving wescoff. Docker is blijkbaar niet alleen handig, maar heeft ook gevoel voor humor. Tijdens deze oefening is duidelijk geworden hoe makkelijk het is om je container te dupliceren. Wil je meerdere containers met dezelfde image, dan is het een kwestie van een unieke naam geven en je kunt er zoveel runnen als je zelf wil.

Opzetten eigen images

Met deze basiskennis op zak ben ik aan de slag gegaan met het bouwen van mijn allereerste image. Voor de duidelijkheid: een container maak je vanuit een image. Een image bouw je vanaf een DockerFile. En in je DockerFile specificeer je wat je exact nodig hebt voor jouw doel. In onze workshop waren dat een database en webserver. Vervolgens bouw je de image op basis van onze Dockerfile. Dit is niet meer dan een simpel commando in Docker. Hierna kun je je container op basis van je eigen image starten en aan de slag.

Starten met testen

Maar hoe starten we nu werkelijk met testen? In ons geval willen we gebruikmaken van Selenium om onze webapplicatie te testen. Om hiervoor Docker te gebruiken, is het handig om meerdere containers te hanteren. In onderstaande afbeelding is te zien dat we een Maven-, Selenium-, webserver- en databasecontainer draaien. De door ons geschreven testscripts in Selenium kunnen we nu vanaf de Selenium-container runnen tegen de webserver (waarachter de database hangt). Door de VNC Viewer is het mogelijk om onze testvoortgang te monitoren.

Testen met Docker

Het grootste voordeel van deze opzet is dat de gecreëerde omgeving voor iedereen te dupliceren is en direct gebruikt kan worden. Bovendien draait iedereen op dezelfde versie; van ontwikkelaar tot tester. Met als resultaat dat we nooit meer horen: ’Oh… maar op mijn machine werkt het wel!’

Bedankt aan de heren van bol.com voor deze leerzame Craft-avond. Lees en bekijk de terugblik hier. Docker is een tool waar ik zeker meer mee ga doen.

Mocht je zelf aan de slag willen met Docker, kijk dan eens op deze site van bol.com.

Andere interessante blogs/links over Docker zijn:

Tags:Testing

     
Schrijf een reactie
  • Captcha image
  • Verzenden