Integrasjonstesting av skyressurser
Implementer integrasjonstester for å kontrollere at faktiske skyressurser som er opprettet av Terraform, distribueres og fungerer riktig.
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_testsLegge 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/terraformTerraform-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 -vBeste 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.
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
- Terraform `validate` og `fmt`
- Enhetstesting med Terratest
- Integrasjonstesting av skyressurser
- Policy som kode og samsvarskontroller