Yksikkötestaus Terratestillä
Oppikaa kirjoittamaan Terraform-moduulien yksikkötestejä Terratestillä, joka on infrastruktuurikoodin testaamiseen tarkoitettu Go-kirjasto.
Yksikkötestaus Terratestillä on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Miksi IaC:tä kannattaa testata?
Infrastructure as Code (IaC) mahdollistaa infrastruktuurin hallinnan ohjelmiston tavoin. Ohjelmistojen tapaan myös IaC-määrityksissä voi olla virheitä!
- Luotettavuus: Havaitse virheet ennen käyttöönottoa.
- Yhdenmukaisuus: Varmista, että resurssit luodaan odotetulla tavalla.
- Luottamus: Tee muutoksia pienemmällä riskillä rikkoa olemassa oleva infrastruktuuri.
Terraform-koodin testaaminen on olennaista vankkojen ja ylläpidettävien pilviympäristöjen rakentamisessa.
Yksikkötestit ja integraatiotestit
IaC:tä testattaessa puhumme usein kahdesta päätyypistä:
- Yksikkötestit: Keskittyvät koodin pieniin, eristettyihin osiin, kuten yksittäiseen Terraform-moduuliin. Ne varmistavat, että yksittäiset komponentit toimivat oikein erillään.
- Integraatiotestit: Varmistavat, että useat komponentit tai moduulit toimivat yhdessä järjestelmänä. Niissä otetaan usein käyttöön todellisia resursseja pilviympäristöön.
Tässä oppitunnissa keskitymme Terraform-moduulien yksikkötestaukseen.
Terratestin esittely
Terratest on HashiCorpin (Terraformin kehittäjän) kehittämä Go-kirjasto, joka on suunniteltu erityisesti infrastruktuurikoodin testaamiseen.
- Sen avulla voit kirjoittaa automaattisia testejä Terraform-, Packer-, Kubernetes- ja muulle IaC-koodille.
- Terratest voi ottaa todellisen infrastruktuurin käyttöön pilvipalveluntarjoajallasi, suorittaa sille tarkistuksia ja poistaa infrastruktuurin sen jälkeen.
- Se soveltuu tehokkaasti sekä yksikkö- että integraatiotestaukseen.
Terratestin edellytykset
Terratestin käytön aloittamiseen tarvitaan muutama asia:
- Go: Terratest on Go-kirjasto, joten Go on asennettava (suositeltu versio on vähintään 1.13).
- Terraform CLI: Terraform-komentorivityökalun on oltava asennettuna ja käytettävissä.
- Pilvipalveluntarjoajan tunnistetiedot: Jos otatte käyttöön oikeita resursseja (myös yksikkötesteissä, jotka käyttävät pilvipalvelun ohjelmointirajapintaa), tarvitsette todennetun käyttöoikeuden pilvipalveluntarjoajaan (esimerkiksi määritetyn AWS CLI:n).
Tarvitsette myös Go-ohjelmoinnin peruskäsitteiden tuntemusta.
Go-testitiedoston rakenne
Terratest-testit kirjoitetaan Golla, ja niissä noudatetaan Gon vakiintuneita testaussääntöjä:
- Testitiedostojen nimen lopussa on
_test.go(esimerkiksimain_test.go). - Testifunktioiden nimi alkaa merkkijonolla
Test(esimerkiksiTestMyModule(t *testing.T)). - Niissä käytetään Gon sisäänrakennettua
testing-pakettia.
Nämä tiedostot sijaitsevat yleensä Terraform-moduulin yhteydessä tai erillisessä test-hakemistossa.
`terraform.Options` – selitys
Terratestin Terraform-testin ydin on terraform.Options-rakenne. Tämä olio määrittää Terratestille, miten Terraform suoritetaan.
Tärkeimpiä kenttiä ovat:
TerraformDir: Terraform-moduulin polku.Vars: Terraform-moduulin syötemuuttujat.EnvVars: Terraform-prosessille asetettavat ympäristömuuttujat.BackendConfig: Terraform-taustajärjestelmän määritykset.
Se toimii suunnitelmana Terraform-komentojen suorittamiseen testin aikana.
Testin peruskulku
Tyypillinen Terraformin Terratest-yksikkötesti etenee seuraavasti:
- Määritä asetukset: Luo
terraform.Options-rakenne, joka viittaa moduuliinne ja määrittää muuttujat. - Ota käyttöön: Alusta ja ota määritykset käyttöön komennolla
terraform.InitAndApply(t, options). - Ajasta tuhoaminen: Lisää heti
defer terraform.Destroy(t, options)varmistaaksesi resurssien siivouksen testin suorittamisen jälkeen. - Tee tarkistukset: Tarkista resurssien ominaisuudet tai tulosteet Gon
testify/assert-paketilla tai Terratestinterraform.Output-funktiolla.
Näin testausympäristö pysyy puhtaana ja eristettynä.
`terraform.Options`-rakenteen koodaaminen
Tässä on yksinkertainen Go-ohjelma, joka havainnollistaa terraform.Options-rakenteen määrittämistä. Tämä on Terratestin käytön perusta.
package main
import (
"fmt"
"path/filepath"
"github.com/gruntwork-io/terratest/modules/terraform"
)
func main() {
// Define the path to your Terraform configuration directory.
// In a real test, this would point to your module under test.
terraformConfigDir := filepath.Join(".", "my-example-module")
// Create a terraform.Options object.
// This struct holds all the configuration for running Terraform via Terratest.
options := &terraform.Options{
TerraformDir: terraformConfigDir,
// You would add input variables here, e.g.:
// Vars: map[string]interface{}{"instance_type": "t2.micro"},
// And environment variables, e.g.:
// EnvVars: map[string]string{"AWS_REGION": "us-east-1"},
}
fmt.Println("--- Terratest Options Configuration Demo ---")
fmt.Printf("Configured Terraform Directory: %s\n", options.TerraformDir)
fmt.Println("This shows how to initialize Terratest options.")
fmt.Println("Actual Terratest unit tests are run using 'go test' command.")
}Tulosteiden tarkistaminen
Kun Terraform-määritykset on otettu käyttöön, niiden tulosteet kannattaa tarkistaa. Terratest tarjoaa funktioita näiden arvojen helppoon hakemiseen.
terraform.Output(t, options, "output_name"): Hakee yksittäisen merkkijonotulosteen.terraform.OutputMap(t, options, "output_name"): Hakee karttatulosteen.terraform.OutputList(t, options, "output_name"): Hakee listatulosteen.
Käyttäkää sen jälkeen Gon testiväitteitä (esimerkiksi paketin github.com/stretchr/testify/assert tarjoamia) tarkistamaan, vastaavatko tulosteet odotuksianne.
Testaa ymmärryksesi
Terratest auttaa testaamaan Terraform-koodia käsittelemällä oikeita pilviresursseja. Mikä seuraavista EI ole tyypillinen Terratest-yksikkötestin vaihe?
Kertaus ja seuraavat vaiheet
Olette oppineet Terratestin avulla tehtävän Terraformin yksikkötestauksen perusteet!
- Terratest on IaC:n testaamiseen tarkoitettu Go-kirjasto.
- Sen avulla voitte ottaa käyttöön oikeaa pilvi-infrastruktuuria, tehdä tarkistuksia ja siivota resurssit.
- Tärkeisiin osiin kuuluvat
_test.go-tiedostot,func TestXxx(t *testing.T)jaterraform.Options-rakenne. - Työnkulkuun kuuluvat asetusten määrittäminen, Terraformin käyttöönottaminen, tarkistusten tekeminen ja siivouksen varmistaminen
defer-komennolla.
Seuraavaksi tutustukaa monimutkaisempien tarkistusten kirjoittamiseen ja Terratestin integroimiseen CI/CD-putkiinne automaattista testausta varten.
Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 142
- Oppitunnit
- 568
Usein kysytyt kysymykset
Onko oppitunti ”Yksikkötestaus Terratestillä” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Yksikkötestaus Terratestillä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yksikkötestaus Terratestillä”?
Oppikaa kirjoittamaan Terraform-moduulien yksikkötestejä Terratestillä, joka on infrastruktuurikoodin testaamiseen tarkoitettu Go-kirjasto. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Yksikkötestaus Terratestillä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?
Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Terraformin `validate` ja `fmt`
- Yksikkötestaus Terratestillä
- Pilviresurssien integraatiotestaus
- Käytännöt koodina ja vaatimustenmukaisuuden tarkistukset