DevOpsSuccesfactoren in DevOps, deel 4B: techniek

Hoewel we altijd benadrukken dat mensen en processen belangrijker zijn dan tools, valt er toch voldoende over te zeggen. Vandaar dat we in deze blogreeks over de succesfactoren van DevOps maar liefst twee blogs aan techniek wijden. Nadat we vorige keer architectuur, security, versiebeheer en geautomatiseerd uitrollen besproken hebben, zoomen we dit keer in op de rol van techniek bij test automatisering, test data management en continuous integration.

Test automatisering

Een onderdeel van DevOps is het automatiseren van handmatige stappen, inclusief het uitvoeren van software testen. Omdat zaken als risicoanalyses maken en tests schrijven mensenwerk blijft, kan er toch het een en ander misgaan. Bijvoorbeeld omdat ontwikkelaars een test niet goed hebben opgezet dan wel niet consistent zijn in hun aanpak. Of omdat er iets schort aan de gebruikte test data. Tests die soms slagen en dan weer falen, verliezen hun geloofwaardigheid met uiteindelijk als gevolg dat de gehele test automatisering onbetrouwbaar wordt.

Test data

Dat er van alles mis kan gaan is dus helaas geen puur theoretisch verhaal. Zo komen we regelmatig tegen dat bedrijven gebruik maken van oude testdata. Omdat deze data tijdens eerdere tests corrupt is geraakt door fouten in de software, bevatten ze inconsistenties. Hoe langer je deze data gebruikt, hoe moeilijker het wordt om met zekerheid vast te stellen of een fout te wijten is aan foutieve software of inconsistente data. Test data moet on demand geladen worden en gebruikt worden om te testen. Na gebruik moet de data direct verwijderd worden en bij een volgende test opnieuw worden geladen (of, indien nodig, een andere c.q. aangepaste set).

Data anonimiseren

Of wat te denken van organisaties die even snel een kopie van productie trekken voor testdoeleinden zonder de data te anonimiseren? Dat gebeurt veelal omdat anonimiseren complex is, maar brengt risico’s met zich mee ten aanzien van gegevensbescherming. Andersom gezegd: als je test data management wel goed op orde is, dan beschik je over de gegevens om de tests op de juiste manier uit te voeren, de mogelijkheid om op verzoek benodigde gegevens te verkrijgen en jouw testgegevens in de pipeline op te nemen. En ervoor te zorgen dat het aantal uit te voeren tests niet beperkt wordt door jouw test data.

Continuous integration

Zoals eerder uitgelegd, kan ook het uitrollen van nieuwe software geautomatiseerd worden, zonder dat hier inhoudelijke kennis voor nodig is. Op het moment dat een wijziging in de code wordt ‘ingecheckt’ (opgeslagen), gaan er automatisch een aantal processen van start. Zo wordt de software automatisch 'gebouwd' en klaargezet in de juiste omgeving. Daarnaast worden er automatisch kleine unit tests gestart om te verifiëren of er door de aangebrachte wijziging geen fouten zijn geïntroduceerd. En of alles ervoor nog steeds klopt en 1+3 bij wijze van spreken nog steeds 4 is. Ook na de build en unit tests loopt de verdere uitrol geheel geautomatiseerd. Voordeel hiervan is dat eventuele fouten eerder worden ontdekt en eenvoudiger kunnen worden herleid.

Geef teams de ruimte om eigen tooling te kiezen

Tot slot vinden wij het belangrijk dat een team een grote mate van vrijheid heeft in het kiezen van de (technische) hulpmiddelen of het besturingssysteem. Deze keuzevrijheid werkt motiverend en resulteert in productievere medewerkers. Daar is dan weer geen test voor nodig...

Kun jij wel wat hulp gebruiken bij het efficiënt inzetten van tooling om jouw ontwikkelproces te versnellen? Neem dan contact op met Miquel Asmus via miquela@delta-n.nl of op 085 487 52 20

  • DevOps-program-banner