Pengujian Unit dengan Terratest
Pelajari cara menulis pengujian unit untuk modul Terraform menggunakan Terratest, pustaka Go untuk menguji kode infrastruktur.
Pengujian Unit dengan Terratest adalah pelajaran Terraform Infrastructure as Code gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Terraform Infrastructure as Code, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Terraform Infrastructure as Code mencakup 4 pelajaran total.
Mengapa Menguji IaC?
Infrastruktur sebagai Kode (IaC) memungkinkan Anda mengelola infrastruktur seperti perangkat lunak. Sama seperti perangkat lunak, konfigurasi IaC juga dapat memiliki bug!
- Keandalan: Menemukan kesalahan sebelum penerapan.
- Konsistensi: Memastikan sumber daya disediakan sesuai harapan.
- Kepercayaan Diri: Melakukan perubahan dengan lebih tenang tanpa terlalu khawatir merusak infrastruktur yang sudah ada.
Menguji kode Terraform Anda sangat penting untuk membangun lingkungan cloud yang tangguh dan mudah dipelihara.
Pengujian Unit vs. Integrasi
Saat menguji IaC, kita biasanya membahas dua jenis utama:
- Pengujian Unit: Berfokus pada bagian kecil kode yang terisolasi, seperti satu modul Terraform. Pengujian ini memastikan setiap komponen bekerja dengan benar secara terpisah.
- Pengujian Integrasi: Memverifikasi bahwa beberapa komponen atau modul bekerja bersama sebagai sebuah sistem, sering kali dengan menerapkan sumber daya nyata ke lingkungan cloud.
Dalam pelajaran ini, kita akan berfokus pada pengujian unit untuk modul Terraform Anda.
Memperkenalkan Terratest
Terratest adalah pustaka Go yang dikembangkan oleh HashiCorp (pembuat Terraform) dan dirancang khusus untuk menguji kode infrastruktur.
- Terratest membantu Anda menulis pengujian otomatis untuk Terraform, Packer, Kubernetes, dan kode IaC lainnya.
- Terratest dapat menerapkan infrastruktur nyata ke penyedia cloud Anda, menjalankan pernyataan pemeriksaan terhadapnya, lalu membersihkannya.
- Terratest efektif digunakan untuk pengujian unit maupun integrasi.
Prasyarat Terratest
Untuk mulai menggunakan Terratest, Anda memerlukan beberapa hal berikut:
- Go: Terratest adalah pustaka Go, jadi Go harus sudah terpasang (disarankan versi 1.13 atau yang lebih baru).
- Terraform CLI: Antarmuka baris perintah Terraform harus sudah terpasang dan dapat diakses.
- Kredensial Penyedia Cloud: Jika Anda menerapkan sumber daya nyata (bahkan untuk pengujian unit yang berinteraksi dengan API cloud), Anda memerlukan akses terautentikasi ke penyedia cloud (misalnya, AWS CLI yang sudah dikonfigurasi).
Anda juga perlu memahami dasar-dasar konsep pemrograman Go.
Struktur File Pengujian Go
Pengujian Terratest ditulis dalam Go dan mengikuti konvensi pengujian standar Go:
- File pengujian diakhiri dengan
_test.go(misalnya,main_test.go). - Fungsi pengujian diawali dengan
Test(misalnya,TestMyModule(t *testing.T)). - Pengujian menggunakan paket bawaan Go
testing.
File-file ini biasanya berada di samping modul Terraform Anda atau di dalam direktori test khusus.
Penjelasan `terraform.Options`
Inti dari pengujian Terraform dengan Terratest adalah struktur terraform.Options. Objek ini memberi tahu Terratest cara menjalankan Terraform.
Kolom-kolom utamanya meliputi:
TerraformDir: Jalur menuju modul Terraform Anda.Vars: Variabel masukan untuk modul Terraform Anda.EnvVars: Variabel lingkungan yang akan ditetapkan untuk proses Terraform.BackendConfig: Konfigurasi untuk backend Terraform Anda.
Struktur ini menjadi cetak biru Anda untuk menjalankan perintah Terraform di dalam pengujian.
Alur Kerja Pengujian Dasar
Pengujian unit Terratest yang umum untuk Terraform mengikuti langkah-langkah berikut:
- Tentukan Options: Buat struktur
terraform.Optionsyang menunjuk ke modul Anda dan menetapkan variabel. - Terapkan: Gunakan
terraform.InitAndApply(t, options)untuk menginisialisasi dan menerapkan konfigurasi Anda. - Tunda Destroy: Segera tambahkan
defer terraform.Destroy(t, options)untuk memastikan pembersihan dilakukan setelah pengujian selesai. - Verifikasi: Gunakan
testify/assertdari Go atauterraform.Outputdari Terratest untuk memeriksa properti atau keluaran sumber daya.
Dengan demikian, lingkungan pengujian tetap bersih dan terisolasi.
Menulis Kode `terraform.Options`
Berikut program Go sederhana yang menunjukkan cara menyiapkan terraform.Options. Ini adalah langkah dasar untuk setiap interaksi dengan Terratest.
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.")
}Memverifikasi Keluaran
Setelah menerapkan konfigurasi Terraform, Anda perlu memverifikasi keluarannya. Terratest menyediakan fungsi untuk mengambil nilai-nilai ini dengan mudah.
terraform.Output(t, options, "output_name"): Mengambil satu keluaran berupa string.terraform.OutputMap(t, options, "output_name"): Mengambil keluaran berupa peta.terraform.OutputList(t, options, "output_name"): Mengambil keluaran berupa daftar.
Selanjutnya, gunakan verifikasi pengujian Go (misalnya, dari github.com/stretchr/testify/assert) untuk memeriksa apakah keluaran sesuai dengan yang diharapkan.
Periksa Pemahaman Anda
Terratest membantu Anda menguji kode Terraform dengan berinteraksi dengan sumber daya cloud nyata. Manakah dari berikut ini yang BUKAN langkah umum dalam alur kerja pengujian unit Terratest?
Rangkuman & Langkah Berikutnya
Anda telah mempelajari dasar-dasar pengujian unit Terraform dengan Terratest!
- Terratest adalah pustaka Go untuk menguji IaC.
- Terratest memungkinkan Anda menerapkan, memverifikasi, dan membersihkan infrastruktur cloud nyata.
- Komponen utamanya meliputi file
_test.go,func TestXxx(t *testing.T), dan strukturterraform.Options. - Alurnya mencakup penentuan options, penerapan Terraform, melakukan verifikasi, dan memastikan pembersihan dengan
defer.
Selanjutnya, pelajari cara menulis verifikasi yang lebih kompleks dan mengintegrasikan Terratest ke dalam pipeline CI/CD untuk pengujian otomatis.
Belajar Terraform Infrastructure as Code dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengujian Unit dengan Terratest” gratis?
Ya — teks lengkap “Pengujian Unit dengan Terratest” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Terraform Infrastructure as Code, upgrade ke CoddyKit PRO. Kursus Terraform Infrastructure as Code mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengujian Unit dengan Terratest”?
Pelajari cara menulis pengujian unit untuk modul Terraform menggunakan Terratest, pustaka Go untuk menguji kode infrastruktur. Kamu berlatih Terraform Infrastructure as Code dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Terraform Infrastructure as Code?
Tidak diperlukan pengalaman sebelumnya. Terraform Infrastructure as Code di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Pengujian Unit dengan Terratest” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Terraform Infrastructure as Code ini?
Ya. Setiap pelajaran Terraform Infrastructure as Code menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- `validate` dan `fmt` Terraform
- Pengujian Unit dengan Terratest
- Pengujian Integrasi Resource Cloud
- Kebijakan sebagai Kode dan Pemeriksaan Kepatuhan