DevOps-bootcamp · leksjon

Integrasjonstesting av skyressurser

Implementer integrasjonstester for å kontrollere at faktiske skyressurser som er opprettet av Terraform, distribueres og fungerer riktig.

Leksjon 3 av 412 trinn

Integrasjonstesting av skyressurser er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Hva er integrasjonstesting?

Velkommen! I denne leksjonen skal De utforske integrasjonstesting av Terraform-konfigurasjoner. I motsetning til enhetstester, som kontrollerer individuelle komponenter isolert, bekrefter integrasjonstester at flere deler av infrastrukturen fungerer riktig sammen.

For Terraform innebærer dette å distribuere faktiske skyressurser og deretter kontrollere virkemåten og samspillet mellom dem.

Hvorfor integrasjonsteste Terraform?

Integrasjonstester er avgjørende for Terraform fordi de gir Dem tillit til at koden:

  • Distribuerer riktig: Bekrefter at ressurser opprettes som forventet.
  • Fungerer som tiltenkt: Kontrollerer funksjonalitet, ikke bare syntaks.
  • Håndterer avhengigheter: Sikrer at sammenkoblede ressurser kommuniserer.
  • Forhindrer regresjoner: Fanger opp problemer når endringer gjøres.

Det handler om å teste det som faktisk skal brukes, i et kontrollert miljø.

Introduksjon til Terratest

Selv om De kan skrive egendefinerte skript, er det mest populære verktøyet for integrasjonstesting av Terraform Terratest. Det er et åpen kildekode-Go-bibliotek utviklet av HashiCorp.

Terratest gjør det mulig å:

  • Skrive Go-kode for å distribuere Terraform.
  • Kjøre kontroller mot distribuerte ressurser.
  • Destruere ressurser etter tester.

Det tilbyr hjelpefunksjoner for samhandling med Terraform, sky-API-er og mer.

Sette opp Terratest

For å bruke Terratest må Go være installert på maskinen. Når Go er klart, oppretter De en ny Go-modul for testene:

1. Opprett en katalog for testene (for eksempel test/).

2. Initialiser en Go-modul i katalogen:

cd test
go mod init my_tf_tests

Legge til Terratest-avhengigheten

Etter at Go-modulen er initialisert, må De legge til Terratest som en avhengighet. Denne kommandoen henter biblioteket og oppdaterer go.mod-filen:

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

Terraform-testmodulen vår

La oss opprette en enkel Terraform-konfigurasjon som vi vil teste. Dette blir en grunnleggende S3-bucket. Lagre den som s3-module/main.tf:

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

Skrive Deres første Terratest

La oss nå skrive Go-testfilen vår. Opprett en fil som test/s3_test.go. De viktigste trinnene er:

  • Definere Terraform-alternativer (bane til konfigurasjonen).
  • Initialisere og bruke Terraform.
  • Kjøre kontroller.
  • Destruere ressurser.

Dette sikrer en ren tilstand etter hver testkjøring.

Terratest: Init, Apply og Assert

Her er Go-koden for testen av S3-bucketen vår. Legg merke til hvordan vi bruker terraform.InitAndApply til å klargjøre infrastrukturen, og deretter henter outputverdier eller kaller AWS-API-er for å utfø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"])
}

Kjøre integrasjonstesten

For å kjøre Terratest-testen går De til test/-katalogen i terminalen og kjører Go-testkommandoen. Flagget -v viser detaljert output.

Terratest vil:

  • Initialisere Terraform.
  • Bruke konfigurasjonen.
  • Utføre kontroller.
  • Destruere de opprettede ressursene.
cd test
go test -v

Beste praksis for integrasjonstester

Ha disse tipsene i bakhodet for effektiv integrasjonstesting:

  • Isolasjon: Bruk unike navn eller tilfeldige suffikser for ressurser for å unngå konflikter.
  • Opprydding: Destruer alltid ressurser etter tester (defer terraform.Destroy).
  • Kostnad: Vær oppmerksom på ressurskostnader. Bruk små og rimelige ressurser.
  • Hastighet: Integrasjonstester er tregere enn enhetstester. Kjør dem sjeldnere, for eksempel i CI/CD.
  • Realisme: Test mot det samme skymiljøet (eller en egen testkonto) som De skal distribuere til.

Kontroller forståelsen

Hvilken av følgende er en viktig fordel ved å bruke integrasjonstester for Terraform-konfigurasjoner?

Oppsummering: Integrasjonstesting

De har lært om integrasjonstesting for Terraform! Vi har gått gjennom:

  • Hva integrasjonstester er, og hvorfor de er viktige for Terraform.
  • Hvordan Terratest, et Go-bibliotek, hjelper med å skrive slike tester.
  • Den grunnleggende arbeidsflyten: oppsett, bruk, kontroll og destruksjon.
  • Viktige anbefalte fremgangsmåter for å skrive effektive og kostnadseffektive integrasjonstester.

Integrasjonstester gir tillit til at infrastrukturen fungerer riktig i den virkelige verden.

Gratis å komme i gang

Lær deg DevOps-bootcamp med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
142
Leksjoner
568

Ofte stilte spørsmål

Er leksjonen «Integrasjonstesting av skyressurser» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Integrasjonstesting av skyressurser», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Hva lærer jeg i «Integrasjonstesting av skyressurser»?

Implementer integrasjonstester for å kontrollere at faktiske skyressurser som er opprettet av Terraform, distribueres og fungerer riktig. Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med DevOps-bootcamp?

Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Integrasjonstesting av skyressurser»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?

Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Terraform `validate` og `fmt`
  2. Enhetstesting med Terratest
  3. Integrasjonstesting av skyressurser
  4. Policy som kode og samsvarskontroller
← Tilbake til DevOps-bootcamp