Dela via


Testa Terraform-kod

Terraform möjliggör definition, förhandsversion och distribution av molninfrastruktur. Med Terraform skapar du konfigurationsfiler med hjälp av HCL-syntax. Med HCL-syntaxen kan du ange molnleverantören – till exempel Azure – och de element som utgör din molninfrastruktur. När du har skapat konfigurationsfilerna skapar du en körningsplan som gör att du kan förhandsgranska ändringarna i infrastrukturen innan de distribueras. När du har verifierat ändringarna tillämpar du körningsplanen för att distribuera infrastrukturen.

Terraform är ett IaC-verktyg (Infrastruktur som kod). Den här kategorin av verktyg refererar till det faktum att du behandlar dina Terraform-filer som du skulle göra med projektets källkod. En del av den processen omfattar versionshantering och källkodskontroll. Dessutom bör testning också vara en del av din process. Den här artikeln ger en översikt över de olika typer av tester som kan köras mot ett Terraform-projekt.

Implementera integreringstestning

Integreringstester verifierar att en nyligen introducerad kodändring inte bryter befintlig kod. I DevOps refererar kontinuerlig integrering (CI) till en process som skapar hela systemet när kodbasen ändras , till exempel någon som vill slå samman en PR till en Git-lagringsplats. Följande lista innehåller vanliga exempel på integreringstester:

  • Analysverktyg för statisk kod, till exempel lint och format.
  • Kör terraform validate för att verifiera syntaxen för konfigurationsfilen.
  • Kör terraform-planen för att säkerställa att konfigurationen fungerar som förväntat.

Implementera enhetstestning

Enhetstester säkerställer att en specifik del eller funktion i ett program fungerar korrekt. Enhetstester skrivs av utvecklaren av funktionen. Den här typen av testning kallas ibland testdriven utveckling eller TDD och omfattar kontinuerliga korta utvecklingscykler. I samband med Terraform-projekt kan enhetstestning ske i form av användning terraform plan för att säkerställa att de faktiska värden som är tillgängliga i den genererade planen är lika med de förväntade värdena.

Enhetstestning kan vara särskilt fördelaktigt när dina Terraform-moduler börjar bli mer komplexa:

  • Generera dynamiska block
  • Använda loopar
  • Beräkna lokala variabler

Precis som med integreringstester ingår enhetstester många gånger i processen för kontinuerlig integrering.

Implementera efterlevnadstestning

Efterlevnadstestning används för att säkerställa att konfigurationen följer de principer som du har definierat för projektet. Du kan till exempel definiera geopolitiska namngivningskonventioner för dina Azure-resurser. Eller så kanske du vill att virtuella datorer ska skapas från en definierad delmängd av avbildningar. Efterlevnadstestning skulle användas för att framtvinga dessa regler.

Efterlevnadstestning definieras också vanligtvis som en del av den kontinuerliga integreringsprocessen.

Implementera testning från slutpunkt till slutpunkt (E2E)

E2E-tester verifierar att ett program fungerar innan det distribueras till produktion. Ett exempelscenario kan vara en Terraform-modul som distribuerar två virtuella datorer till ett virtuellt nätverk. Du kanske vill förhindra att de två datorerna pingar varandra. I det här exemplet kan du definiera ett test för att verifiera det avsedda resultatet före distributionen.

E2E-testning är vanligtvis en trestegsprocess. Först tillämpas konfigurationen på en testmiljö. Koden skulle sedan köras för att verifiera resultatet. Slutligen initieras eller tas testmiljön antingen om eller tas bort (till exempel frigöring av en virtuell dator).