Integrationstestning av molnresurser
Implementera integrationstester för att verifiera att de faktiska molnresurser som Terraform provisionerar distribueras och fungerar korrekt.
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_testsLä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/terraformVå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 -vBä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.
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
- Terraform `validate` och `fmt`
- Enhetstestning med Terratest
- Integrationstestning av molnresurser
- Policy som kod och efterlevnadskontroller