DevOps-bootcamp · Lektion

Integrationstestning av molnresurser

Implementera integrationstester för att verifiera att de faktiska molnresurser som Terraform provisionerar distribueras och fungerar korrekt.

Lektion 3 av 412 steg

Integrationstestning av molnresurser är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad är integrationstestning?

Välkommen! I den här lektionen utforskar vi integrationstestning av Era Terraform-konfigurationer. Till skillnad från enhetstester, som kontrollerar enskilda komponenter isolerat, verifierar integrationstester att flera delar av Er infrastruktur fungerar korrekt tillsammans.

För Terraform innebär detta att verkliga molnresurser distribueras och att deras beteende och samspel sedan kontrolleras.

Varför integrationstesta Terraform?

Integrationstester är viktiga för Terraform eftersom de ger Er förtroende för att Er kod:

  • Distribueras korrekt: Verifierar att resurser skapas som förväntat.
  • Fungerar som avsett: Kontrollerar funktionalitet, inte bara syntax.
  • Hanterar beroenden: Säkerställer att sammankopplade resurser kan kommunicera.
  • Förhindrar regressioner: Upptäcker problem när ändringar görs.

Det handlar om att testa det verkliga systemet i en kontrollerad miljö.

Introduktion till Terratest

Även om Ni kan skriva egna skript är det populäraste verktyget för integrationstestning av Terraform Terratest. Det är ett Go-bibliotek med öppen källkod som har utvecklats av HashiCorp.

Med Terratest kan Ni:

  • Skriva Go-kod för att distribuera Terraform.
  • Köra verifieringar mot distribuerade resurser.
  • Förstöra resurser efter testerna.

Det tillhandahåller hjälpfunktioner för interaktion med Terraform, moln-API:er med mera.

Konfigurera Terratest

För att använda Terratest måste Go vara installerat på Er dator. När Go är klart skapar Ni en ny Go-modul för Era tester:

1. Skapa en katalog för Era tester (till exempel test/).

2. Initiera en Go-modul i den:

cd test
go mod init my_tf_tests

Lägg till Terratest-beroendet

När Go-modulen har initierats behöver Ni lägga till Terratest som ett beroende. Detta kommando hämtar biblioteket och uppdaterar Er go.mod-fil:

go get github.com/gruntwork-io/terratest/modules/terraform

Vår Terraform-testmodul

Nu skapar vi en enkel Terraform-konfiguration som vi vill testa. Det blir en grundläggande S3-bucket. Spara den som s3-module/main.tf:

resource "aws_s3_bucket" "example" {
  bucket = "my-unique-test-bucket-12345"
  tags = {
    Environment = "test"
    ManagedBy   = "Terraform"
  }
}

Skriv Ert första Terratest

Nu skriver vi vår Go-testfil. Skapa en fil som test/s3_test.go. De viktigaste stegen är:

  • Definiera Terraform-alternativ (sökvägen till konfigurationen).
  • Initiera och tillämpa Terraform.
  • Köra verifieringar.
  • Förstöra resurserna.

Detta säkerställer ett rent tillstånd efter varje testkörning.

Terratest: Initiera, tillämpa och verifiera

Här är Go-koden för vårt test av S3-bucketen. Lägg märke till hur vi använder terraform.InitAndApply för att provisionera infrastrukturen och sedan hämtar utdata eller anropar AWS-API:er för verifieringar.

package test

import (
  "testing"
  "github.com/gruntwork-io/terratest/modules/aws"
  "github.com/gruntwork-io/terratest/modules/terraform"
  "github.com/stretchr/testify/assert"
)

func TestS3BucketCreation(t *testing.T) {
  t.Parallel()

  terraformOptions := &terraform.Options{
    TerraformDir: "../s3-module",
  }

  // Defer destroy to ensure cleanup
  defer terraform.Destroy(t, terraformOptions)

  // Init and apply Terraform
  terraform.InitAndApply(t, terraformOptions)

  // Get the bucket name directly from the config or outputs
  bucketName := "my-unique-test-bucket-12345"

  // Assertions
  aws.AssertS3BucketExists(t, "us-east-1", bucketName)
  tags := aws.GetS3BucketTags(t, "us-east-1", bucketName)
  assert.Equal(t, "test", tags["Environment"])
}

Kör Ert integrationstest

För att köra Ert Terratest går Ni till katalogen test/ i terminalen och kör Go-testkommandot. Flaggan -v visar detaljerad utdata.

Terratest kommer att:

  • Initiera Terraform.
  • Tillämpa konfigurationen.
  • Utföra verifieringar.
  • Förstöra de skapade resurserna.
cd test
go test -v

Bästa praxis för integrationstester

Håll dessa råd i åtanke för effektiv integrationstestning:

  • Isolering: Använd unika namn eller slumpmässiga suffix för resurser för att undvika konflikter.
  • Rensning: Förstör alltid resurser efter testerna (defer terraform.Destroy).
  • Kostnad: Var uppmärksam på resurskostnader. Använd små och billiga resurser.
  • Hastighet: Integrationstester är långsammare än enhetstester. Kör dem mer sällan, till exempel i CI/CD.
  • Verklighetstrogenhet: Testa mot samma molnmiljö (eller ett särskilt testkonto) som Ni ska distribuera till.

Kontrollera Er förståelse

Vilken av följande är en huvudsaklig fördel med att använda integrationstester för Terraform-konfigurationer?

Sammanfattning: Integrationstestning

Ni har lärt Er om integrationstestning av Terraform! Vi har gått igenom:

  • Vad integrationstester är och varför de är viktiga för Terraform.
  • Hur Terratest, ett Go-bibliotek, hjälper till att skriva dessa tester.
  • Det grundläggande arbetsflödet: konfigurera, tillämpa, verifiera och förstöra.
  • Viktiga bästa metoder för att skriva effektiva och kostnadseffektiva integrationstester.

Integrationstester ger Er förtroende för att infrastrukturen fungerar korrekt i verkligheten.

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Integrationstestning av molnresurser” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Integrationstestning av molnresurser”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Integrationstestning av molnresurser”?

Implementera integrationstester för att verifiera att de faktiska molnresurser som Terraform provisionerar distribueras och fungerar korrekt. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Integrationstestning av molnresurser”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Terraform `validate` och `fmt`
  2. Enhetstestning med Terratest
  3. Integrationstestning av molnresurser
  4. Policy som kod och efterlevnadskontroller
← Tillbaka till DevOps-bootcamp