0Pricing
Terraform Infrastructure as Code · Lekcja

Testy integracyjne zasobów chmurowych

Zaimplementuj testy integracyjne, aby sprawdzać poprawność wdrażania i działania rzeczywistych zasobów chmurowych tworzonych przez Terraform.

Testy integracyjne zasobów chmurowych to bezpłatna lekcja Terraform Infrastructure as Code na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Terraform Infrastructure as Code, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Terraform Infrastructure as Code zawiera 4 lekcji w sumie.

Czym jest testowanie integracyjne?

Witamy! W tej lekcji omówimy testowanie integracyjne konfiguracji Terraform. W przeciwieństwie do testów jednostkowych, które sprawdzają poszczególne komponenty w izolacji, testy integracyjne weryfikują, czy wiele części infrastruktury współdziała ze sobą prawidłowo.

W przypadku Terraform oznacza to wdrażanie rzeczywistych zasobów chmurowych, a następnie sprawdzanie ich działania i wzajemnych interakcji.

Dlaczego warto testować Terraform integracyjnie?

Testy integracyjne mają kluczowe znaczenie w przypadku Terraform, ponieważ dają pewność, że kod:

  • Wdraża zasoby prawidłowo: Weryfikuje, czy zasoby są tworzone zgodnie z oczekiwaniami.
  • Działa zgodnie z przeznaczeniem: Sprawdza funkcjonalność, a nie tylko składnię.
  • Obsługuje zależności: Zapewnia, że powiązane zasoby mogą się ze sobą komunikować.
  • Zapobiega regresjom: Wykrywa problemy pojawiające się po wprowadzeniu zmian.

Chodzi o testowanie rzeczywistego rozwiązania w kontrolowanym środowisku.

Przedstawiamy Terratest

Choć można pisać własne skrypty, najpopularniejszym narzędziem do testowania integracyjnego Terraform jest Terratest. To biblioteka Go typu open source opracowana przez HashiCorp.

Terratest umożliwia:

  • Pisanie kodu Go wdrażającego Terraform.
  • Wykonywanie asercji dotyczących wdrożonych zasobów.
  • Usuwanie zasobów po zakończeniu testów.

Udostępnia funkcje pomocnicze do interakcji z Terraform, interfejsami API chmury i innymi usługami.

Konfigurowanie Terratest

Aby korzystać z Terratest, muszą mieć Państwo zainstalowane Go. Gdy Go będzie gotowe, należy utworzyć nowy moduł Go na potrzeby testów:

1. Utworzyć katalog na testy (np. test/).

2. Zainicjować w nim moduł Go:

cd test
go mod init my_tf_tests

Dodawanie zależności Terratest

Po zainicjowaniu modułu Go należy dodać Terratest jako zależność. To polecenie pobiera bibliotekę i aktualizuje plik go.mod:

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

Nasz testowy moduł Terraform

Utwórzmy prostą konfigurację Terraform, którą chcemy przetestować. Będzie to podstawowy bucket S3. Należy zapisać ją jako s3-module/main.tf:

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

Pisanie pierwszego testu Terratest

Teraz napiszmy plik testowy Go. Należy utworzyć plik taki jak test/s3_test.go. Najważniejsze kroki to:

  • Zdefiniowanie opcji Terraform (ścieżki do konfiguracji).
  • Zainicjowanie i zastosowanie Terraform.
  • Wykonanie asercji.
  • Usunięcie zasobów.

Zapewnia to czysty stan po każdym uruchomieniu testu.

Terratest: Init, Apply i Assert

Oto kod Go testu naszego bucketu S3. Zwróćmy uwagę, że używamy terraform.InitAndApply do aprowizowania infrastruktury, a następnie pobieramy wartości wyjściowe lub wywołujemy interfejsy API AWS w celu wykonania asercji.

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"])
}

Uruchamianie testu integracyjnego

Aby uruchomić test Terratest, należy przejść w terminalu do katalogu test/ i wykonać polecenie testowe Go. Flaga -v wyświetla szczegółowe dane wyjściowe.

Terratest wykona następujące czynności:

  • Zainicjuje Terraform.
  • Zastosuje konfigurację.
  • Wykona asercje.
  • Usunie utworzone zasoby.
cd test
go test -v

Najlepsze praktyki dotyczące testów integracyjnych

Podczas skutecznego testowania integracyjnego warto pamiętać o następujących wskazówkach:

  • Izolacja: Należy używać unikatowych nazw lub losowych przyrostków zasobów, aby uniknąć konfliktów.
  • Sprzątanie: Zawsze należy usuwać zasoby po zakończeniu testów (defer terraform.Destroy).
  • Koszty: Należy uwzględniać koszty zasobów. Warto używać małych i niedrogich zasobów.
  • Szybkość: Testy integracyjne są wolniejsze od jednostkowych. Należy uruchamiać je rzadziej, na przykład w CI/CD.
  • Realizm: Testy powinny korzystać z tego samego środowiska chmurowego (lub dedykowanego konta testowego), do którego będą wdrażane zasoby.

Sprawdź swoją wiedzę

Jakie są główne korzyści z używania testów integracyjnych dla konfiguracji Terraform?

Podsumowanie: testowanie integracyjne

Poznali Państwo testowanie integracyjne Terraform! Omówiliśmy:

  • Czym są testy integracyjne i dlaczego mają kluczowe znaczenie dla Terraform.
  • Jak Terratest, biblioteka Go, pomaga w pisaniu takich testów.
  • Podstawowy przebieg pracy: konfiguracja, zastosowanie, asercja i usunięcie.
  • Najważniejsze praktyki tworzenia skutecznych i ekonomicznych testów integracyjnych.

Testy integracyjne dają pewność, że infrastruktura działa prawidłowo w rzeczywistych warunkach.

Często zadawane pytania

Czy lekcja „Testy integracyjne zasobów chmurowych” jest bezpłatna?

Tak — pełny tekst „Testy integracyjne zasobów chmurowych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Terraform Infrastructure as Code, przejdź na CoddyKit PRO. Kurs Terraform Infrastructure as Code zawiera 4 lekcji w sumie.

Co nauczysz się w „Testy integracyjne zasobów chmurowych”?

Zaimplementuj testy integracyjne, aby sprawdzać poprawność wdrażania i działania rzeczywistych zasobów chmurowych tworzonych przez Terraform. Ćwiczysz Terraform Infrastructure as Code z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Terraform Infrastructure as Code?

Nie wymagamy żadnego doświadczenia. Terraform Infrastructure as Code w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Testy integracyjne zasobów chmurowych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Terraform Infrastructure as Code?

Tak. Każda lekcja Terraform Infrastructure as Code zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. `validate` i `fmt` w Terraform
  2. Testy jednostkowe za pomocą Terratest
  3. Testy integracyjne zasobów chmurowych
  4. Policy as Code i kontrole zgodności
← Powrót do Terraform Infrastructure as Code