Terraform-code testen

Terraform maakt de definitie, preview en implementatie van de cloudinfrastructuur mogelijk. Met Behulp van Terraform maakt u configuratiebestanden met behulp van de HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.

Terraform is een IaC-hulpprogramma (Infrastructure as Code). Deze categorie van het hulpprogramma verwijst naar het feit dat u uw Terraform-bestanden behandelt zoals u de broncode van het project zou doen. Onderdeel van dat proces omvat versiebeheer en broncodebeheer. Ook moet het testen deel uitmaken van uw proces. Dit artikel bevat een overzicht van de verschillende typen tests die kunnen worden uitgevoerd op een Terraform-project.

Integratietests implementeren

Integratietests valideren dat een nieuw geïntroduceerde codewijziging de bestaande code niet onderbreekt. In DevOps verwijst continue integratie (CI) naar een proces waarmee het hele systeem wordt gebouwd wanneer de codebasis wordt gewijzigd, zoals iemand die een pull-aanvraag wil samenvoegen in een Git-opslagplaats. De volgende lijst bevat veelvoorkomende voorbeelden van integratietests:

  • Hulpprogramma's voor statische codeanalyse, zoals lint en indeling.
  • Voer terraform-validatie uit om de syntaxis van het configuratiebestand te controleren.
  • Voer terraform-plan uit om ervoor te zorgen dat de configuratie werkt zoals verwacht.

Eenheidstests implementeren

Eenheidstests zorgen ervoor dat een specifiek onderdeel of een bepaalde functie van een programma zich correct gedraagt. Eenheidstests worden geschreven door de ontwikkelaar van de functionaliteit. Dit type testgestuurde ontwikkeling of TDD wordt ook wel testgestuurde ontwikkeling genoemd. Dit type test omvat continue korte ontwikkelingscycli. In de context van Terraform-projecten kan eenheidstests worden gebruikt terraform plan om ervoor te zorgen dat de werkelijke waarden die beschikbaar zijn in het gegenereerde plan gelijk zijn aan de verwachte waarden.

Het testen van eenheden kan met name nuttig zijn wanneer uw Terraform-modules complexer worden:

  • Dynamische blokken genereren
  • Lussen gebruiken
  • Lokale variabelen berekenen

Net als bij integratietests worden vaak eenheidstests opgenomen in het proces voor continue integratie.

Nalevingstests implementeren

Nalevingstests worden gebruikt om ervoor te zorgen dat de configuratie het beleid volgt dat u voor het project hebt gedefinieerd. U kunt bijvoorbeeld geopolitieke naamconventies definiëren voor uw Azure-resources. Of u wilt dat virtuele machines worden gemaakt op basis van een gedefinieerde subset van installatiekopieën. Nalevingstests worden gebruikt om deze regels af te dwingen.

Nalevingstests worden doorgaans ook gedefinieerd als onderdeel van het continue integratieproces.

End-to-end testen (E2E) implementeren

E2E-tests valideren dat een programma werkt voordat deze in productie wordt geïmplementeerd. Een voorbeeldscenario is een Terraform-module die twee virtuele machines implementeert in een virtueel netwerk. Mogelijk wilt u voorkomen dat de twee computers elkaar pingen. In dit voorbeeld kunt u een test definiëren om het beoogde resultaat vóór de implementatie te controleren.

E2E-tests zijn doorgaans een proces met drie stappen. Eerst wordt de configuratie toegepast op een testomgeving. Code wordt vervolgens uitgevoerd om de resultaten te verifiëren. Ten slotte wordt de testomgeving opnieuw geïnitialiseerd of verwijderd (zoals het toewijzen van een virtuele machine).