Integrationstest af cloud-ressourcer
Implementér integrationstests for at kontrollere, at de faktiske cloud-ressourcer, som Terraform opretter, implementeres og fungerer korrekt.
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_testsTilfø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/terraformVores 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 -vBedste 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.
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
- Terraform `validate` og `fmt`
- Enhedstest med Terratest
- Integrationstest af cloud-ressourcer
- Policy som kode og compliance-tjek