Intensiv DevOps-uddannelse · Lektion

Integrationstest af cloud-ressourcer

Implementér integrationstests for at kontrollere, at de faktiske cloud-ressourcer, som Terraform opretter, implementeres og fungerer korrekt.

Lektion 3 af 412 trin

Integrationstest af cloud-ressourcer er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad er integrationstest?

Velkommen! I denne lektion undersøger vi integrationstest af dine Terraform-konfigurationer. I modsætning til enhedstest, der kontrollerer enkelte komponenter isoleret, bekræfter integrationstest, at flere dele af din infrastruktur fungerer korrekt sammen.

For Terraform betyder det, at du implementerer faktiske cloud-ressourcer og derefter kontrollerer deres funktionsmåde og samspil.

Hvorfor integrationsteste Terraform?

Integrationstest er afgørende for Terraform, fordi de giver dig tillid til, at din kode:

  • Implementeres korrekt: Bekræfter, at ressourcer oprettes som forventet.
  • Fungerer efter hensigten: Kontrollerer funktionalitet, ikke kun syntaks.
  • Håndterer afhængigheder: Sikrer, at indbyrdes forbundne ressourcer kan kommunikere.
  • Forhindrer regressioner: Opdager problemer, når der foretages ændringer.

Det handler om at teste det, der faktisk skal bruges, i et kontrolleret miljø.

Introduktion til Terratest

Selvom du kunne skrive brugerdefinerede scripts, er det mest populære værktøj til integrationstest af Terraform Terratest. Det er et open source-Go-bibliotek udviklet af HashiCorp.

Terratest gør det muligt for dig at:

  • Skrive Go-kode, der implementerer Terraform.
  • Køre kontroller mod implementerede ressourcer.
  • Destruere ressourcer efter test.

Det indeholder hjælpefunktioner til interaktion med Terraform, cloud-API'er og meget mere.

Konfiguration af Terratest

For at bruge Terratest skal Go være installeret på din maskine. Når Go er klar, opretter du et nyt Go-modul til dine tests:

1. Opret en mappe til dine tests (f.eks. test/).

2. Initialiser et Go-modul i den:

cd test
go mod init my_tf_tests

Tilføj Terratest-afhængigheden

Efter at have initialiseret dit Go-modul skal du tilføje Terratest som en afhængighed. Denne kommando henter biblioteket og opdaterer din go.mod-fil:

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

Vores Terraform-testmodul

Lad os oprette en enkel Terraform-konfiguration, som vi vil teste. Det bliver en grundlæggende S3-bucket. Gem den som s3-module/main.tf:

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

Skriv din første Terratest

Lad os nu skrive vores Go-testfil. Opret en fil som test/s3_test.go. De vigtigste trin er:

  • Definér Terraform-indstillinger (sti til konfigurationen).
  • Initialisér og anvend Terraform.
  • Kør kontroller.
  • Destruér ressourcer.

Det sikrer en ren tilstand efter hver testkørsel.

Terratest: Initialisér, anvend og kontrollér

Her er Go-koden til vores test af S3-bucketen. Bemærk, hvordan vi bruger terraform.InitAndApply til at klargøre infrastrukturen og derefter henter uddata eller kalder AWS-API'er for at udføre kontroller.

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 din integrationstest

For at køre din Terratest skal du gå til mappen test/ i terminalen og udføre Go-testkommandoen. Flaget -v viser udførligt output.

Terratest vil:

  • Initialisere Terraform.
  • Anvende konfigurationen.
  • Udføre kontroller.
  • Destruere de oprettede ressourcer.
cd test
go test -v

Bedste praksis for integrationstest

Husk disse råd for at få en effektiv integrationstest:

  • Isolering: Brug unikke navne eller tilfældige suffikser til ressourcer for at undgå konflikter.
  • Oprydning: Destruér altid ressourcer efter test (defer terraform.Destroy).
  • Omkostninger: Vær opmærksom på omkostningerne ved ressourcer. Brug små og billige ressourcer.
  • Hastighed: Integrationstest er langsommere end enhedstest. Kør dem mindre hyppigt, eventuelt i CI/CD.
  • Realisme: Test mod det samme cloud-miljø (eller en dedikeret testkonto), som du vil implementere i.

Test din forståelse

Hvilken af følgende er en væsentlig fordel ved at bruge integrationstest til Terraform-konfigurationer?

Opsummering: Integrationstest

Du har lært om integrationstest af Terraform! Vi gennemgik:

  • Hvad integrationstest er, og hvorfor de er vigtige for Terraform.
  • Hvordan Terratest, et Go-bibliotek, hjælper med at skrive disse tests.
  • Det grundlæggende forløb: konfiguration, anvendelse, kontrol og destruktion.
  • Vigtige bedste praksisser til at skrive effektive og omkostningseffektive integrationstest.

Integrationstest giver dig tillid til, at din infrastruktur fungerer korrekt i den virkelige verden.

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Integrationstest af cloud-ressourcer” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Integrationstest af cloud-ressourcer”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Integrationstest af cloud-ressourcer”?

Implementér integrationstests for at kontrollere, at de faktiske cloud-ressourcer, som Terraform opretter, implementeres og fungerer korrekt. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Integrationstest af cloud-ressourcer”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Terraform `validate` og `fmt`
  2. Enhedstest med Terratest
  3. Integrationstest af cloud-ressourcer
  4. Policy som kode og compliance-tjek
← Tilbage til Intensiv DevOps-uddannelse