Terratest ile Birim Testleri
Altyapı kodunu test etmeye yönelik bir Go kitaplığı olan Terratest'i kullanarak Terraform modülleriniz için birim testleri yazmayı öğrenin.
Terratest ile Birim Testleri, CoddyKit'te ücretsiz bir Terraform Infrastructure as Code dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Terraform Infrastructure as Code öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Terraform Infrastructure as Code kursu toplamda 4 dersten oluşur.
Kod Olarak Altyapınızı Neden Test Etmelisiniz?
Kod Olarak Altyapı (IaC), altyapıyı yazılım gibi yönetmenizi sağlar. Yazılımda olduğu gibi IaC yapılandırmalarında da hatalar bulunabilir!
- Güvenilirlik: Hataları dağıtımdan önce yakalayın.
- Tutarlılık: Kaynakların beklendiği gibi oluşturulduğundan emin olun.
- Güven: Mevcut altyapıyı bozma korkusunu azaltarak değişiklik yapın.
Sağlam ve bakımı kolay bulut ortamları oluşturmak için Terraform kodunuzu test etmek kritik önem taşır.
Birim Testleri ve Entegrasyon Testleri
Kod Olarak Altyapıyı test ederken genellikle iki ana türden söz ederiz:
- Birim Testleri: Tek bir Terraform modülü gibi kodunuzun küçük ve yalıtılmış bölümlerine odaklanır. Bireysel bileşenlerin yalıtılmış olarak doğru çalışmasını sağlar.
- Entegrasyon Testleri: Birden fazla bileşenin veya modülün bir sistem olarak birlikte çalıştığını doğrular; bunun için genellikle gerçek kaynaklar bir bulut ortamına dağıtılır.
Bu derste Terraform modüllerinizin birim testlerine odaklanacağız.
Terratest ile Tanışma
Terratest, özellikle altyapı kodunu test etmek için HashiCorp (Terraform'un geliştiricileri) tarafından geliştirilen bir Go kütüphanesidir.
- Terraform, Packer, Kubernetes ve diğer Kod Olarak Altyapı kodlarınız için otomatik testler yazmanıza yardımcı olur.
- Terratest, gerçek altyapıyı bulut sağlayıcınıza dağıtabilir, üzerinde doğrulamalar çalıştırabilir ve ardından altyapıyı temizleyebilir.
- Hem birim testleri hem de entegrasyon testleri için güçlüdür.
Terratest Ön Koşulları
Terratest'i kullanmaya başlamak için birkaç şeye ihtiyacınız olacaktır:
- Go: Terratest bir Go kitaplığıdır; bu nedenle Go'nun yüklü olması gerekir (1.13 veya üzeri sürüm önerilir).
- Terraform CLI: Terraform komut satırı arayüzü yüklü ve erişilebilir olmalıdır.
- Bulut sağlayıcısı kimlik bilgileri: Gerçek kaynaklar dağıtıyorsanız (bulut API'sine dokunan birim testlerinde bile), kimliği doğrulanmış bir bulut sağlayıcısı erişimine ihtiyacınız olacaktır (örneğin AWS CLI yapılandırılmış olmalıdır).
Ayrıca Go programlama kavramlarına temel düzeyde aşina olmanız gerekir.
Go Test Dosyası Yapısı
Terratest testleri Go ile yazılır ve Go'nun standart test kurallarını izler:
- Test dosyaları
_test.goile biter (örneğinmain_test.go). - Test işlevleri
Testile başlar (örneğinTestMyModule(t *testing.T)). - Go'nun yerleşik
testingpaketini kullanırlar.
Bu dosyalar genellikle Terraform modülünüzün yanında veya özel bir test dizininde bulunur.
`terraform.Options` Açıklaması
Bir Terratest Terraform testinin temelini terraform.Options yapısı oluşturur. Bu nesne, Terratest'e Terraform'u nasıl çalıştıracağını bildirir.
Önemli alanlar şunlardır:
TerraformDir: Terraform modülünüzün yolu.Vars: Terraform modülünüz için girdi değişkenleri.EnvVars: Terraform işlemi için ayarlanacak ortam değişkenleri.BackendConfig: Terraform arka ucunuzun yapılandırması.
Bu yapı, test içinde Terraform komutlarını çalıştırmak için kullanacağınız plandır.
Temel Test İş Akışı
Tipik bir Terratest Terraform birim testi şu adımları izler:
- Seçenekleri tanımlayın: Modülünüzü gösteren ve değişkenleri ayarlayan bir
terraform.Optionsyapısı oluşturun. - Dağıtın: Yapılandırmanızı başlatmak ve uygulamak için
terraform.InitAndApply(t, options)kullanın. - Yok etmeyi erteleyin: Test çalıştıktan sonra temizliğin yapılmasını sağlamak için hemen
defer terraform.Destroy(t, options)ekleyin. - Doğrulayın: Kaynak özelliklerini veya çıktıları kontrol etmek için Go'nun
testify/assertpaketini ya da Terratest'interraform.Outputişlevini kullanın.
Bu, temiz ve yalıtılmış bir test ortamı sağlar.
`terraform.Options` Kodlama
Aşağıda terraform.Options yapısının nasıl ayarlanacağını gösteren basit bir Go programı verilmiştir. Bu, Terratest ile yapılacak her etkileşimin temel adımıdır.
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.")
}Çıktıları Doğrulama
Terraform yapılandırmanızı uyguladıktan sonra çıktıları doğrulamak isteyeceksiniz. Terratest, bu değerleri kolayca almanız için işlevler sunar.
terraform.Output(t, options, "output_name"): Tek bir dize çıktısını alır.terraform.OutputMap(t, options, "output_name"): Bir eşlem çıktısını alır.terraform.OutputList(t, options, "output_name"): Bir liste çıktısını alır.
Daha sonra çıktıların beklentilerinizle eşleşip eşleşmediğini kontrol etmek için Go'nun test doğrulamalarını (örneğin github.com/stretchr/testify/assert paketinden) kullanırsınız.
Anlayışınızı Kontrol Edin
Terratest, gerçek bulut kaynaklarıyla etkileşime girerek Terraform kodunuzu test etmenize yardımcı olur. Aşağıdakilerden hangisi Terratest birim testi iş akışında tipik bir adım DEĞİLDİR?
Özet ve Sonraki Adımlar
Terratest ile Terraform'u birim testinden geçirmenin temellerini öğrendiniz!
- Terratest, IaC testi için kullanılan bir Go kitaplığıdır.
- Gerçek bulut altyapısını dağıtmanıza, doğrulamanıza ve temizlemenize olanak tanır.
- Temel bileşenler arasında
_test.godosyaları,func TestXxx(t *testing.T)veterraform.Optionsyapısı bulunur. - İş akışı; seçenekleri tanımlamayı, Terraform'u uygulamayı, doğrulamalar yapmayı ve
deferile temizliği sağlamayı içerir.
Sonraki adımda daha karmaşık doğrulamaların nasıl yazılacağını ve otomatik test için Terratest'in CI/CD işlem hatlarınıza nasıl entegre edileceğini keşfedin.
Sıkça Sorulan Sorular
“Terratest ile Birim Testleri” dersi ücretsiz mi?
Evet — “Terratest ile Birim Testleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Terraform Infrastructure as Code kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Terraform Infrastructure as Code kursu toplamda 4 dersten oluşur.
“Terratest ile Birim Testleri” dersinde ne öğreneceğim?
Altyapı kodunu test etmeye yönelik bir Go kitaplığı olan Terratest'i kullanarak Terraform modülleriniz için birim testleri yazmayı öğrenin. Terraform Infrastructure as Code ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Terraform Infrastructure as Code öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Terraform Infrastructure as Code, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Terratest ile Birim Testleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Terraform Infrastructure as Code dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Terraform Infrastructure as Code dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Terraform `validate` ve `fmt`
- Terratest ile Birim Testleri
- Bulut Kaynakları için Tümleştirme Testleri
- Kod Olarak İlke ve Uyumluluk Denetimleri