การทดสอบการผสานรวมทรัพยากรคลาวด์
ใช้งานการทดสอบการผสานรวมเพื่อตรวจสอบว่าทรัพยากรคลาวด์จริงที่ Terraform จัดเตรียมได้รับการปรับใช้และทำงานอย่างถูกต้อง
การทดสอบการผสานรวมทรัพยากรคลาวด์ เป็นบทเรียน Terraform Infrastructure as Code ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Terraform Infrastructure as Code และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน
การทดสอบการผสานรวมคืออะไร
ยินดีต้อนรับ! ในบทเรียนนี้ เราจะสำรวจ การทดสอบการผสานรวม สำหรับการกำหนดค่า Terraform ของคุณ ต่างจากการทดสอบหน่วยที่ตรวจสอบองค์ประกอบแต่ละส่วนแบบแยกจากกัน การทดสอบการผสานรวมจะตรวจสอบว่าส่วนต่าง ๆ ของโครงสร้างพื้นฐานทำงานร่วมกันได้อย่างถูกต้อง
สำหรับ Terraform นั่นหมายถึงการปรับใช้ทรัพยากรคลาวด์จริง แล้วตรวจสอบพฤติกรรมและการโต้ตอบระหว่างทรัพยากรเหล่านั้น
เหตุใดจึงต้องทดสอบการผสานรวม Terraform
การทดสอบการผสานรวมมีความสำคัญต่อ Terraform เพราะช่วยให้คุณมั่นใจว่าโค้ดของคุณ:
- ปรับใช้ได้อย่างถูกต้อง: ตรวจสอบว่าทรัพยากรถูกสร้างตามที่คาดไว้
- ทำงานตามที่ตั้งใจ: ตรวจสอบการทำงาน ไม่ใช่เพียงไวยากรณ์
- จัดการการพึ่งพากันได้: ทำให้แน่ใจว่าทรัพยากรที่เชื่อมโยงกันสื่อสารกันได้
- ป้องกันการถดถอย: ตรวจจับปัญหาเมื่อมีการเปลี่ยนแปลง
แนวคิดสำคัญคือการทดสอบสิ่งที่ใช้งานจริงในสภาพแวดล้อมที่ควบคุมได้
แนะนำ Terratest
แม้ว่าคุณจะเขียนสคริปต์เองได้ แต่เครื่องมือยอดนิยมที่สุดสำหรับการทดสอบการผสานรวม Terraform คือ Terratest ซึ่งเป็นไลบรารี Go แบบโอเพนซอร์สที่พัฒนาโดย HashiCorp
Terratest ช่วยให้คุณสามารถ:
- เขียนโค้ด Go เพื่อปรับใช้ Terraform
- เรียกใช้การตรวจสอบกับทรัพยากรที่ปรับใช้แล้ว
- ทำลายทรัพยากรหลังการทดสอบ
นอกจากนี้ยังมีฟังก์ชันช่วยสำหรับโต้ตอบกับ Terraform, API ของคลาวด์ และอื่น ๆ
การตั้งค่า Terratest
หากต้องการใช้ Terratest คุณต้องติดตั้ง Go ไว้ในเครื่อง เมื่อ Go พร้อมใช้งานแล้ว ให้สร้างมอดูล Go ใหม่สำหรับการทดสอบของคุณ:
1. สร้างไดเรกทอรีสำหรับการทดสอบ (เช่น test/)
2. เริ่มต้นมอดูล Go ภายในไดเรกทอรีนั้น:
cd test
go mod init my_tf_testsเพิ่มการพึ่งพา Terratest
หลังจากเริ่มต้นมอดูล Go แล้ว คุณต้องเพิ่ม Terratest เป็นการพึ่งพา คำสั่งนี้จะดาวน์โหลดไลบรารีและอัปเดตไฟล์ go.mod ของคุณ:
go get github.com/gruntwork-io/terratest/modules/terraformมอดูล Terraform สำหรับการทดสอบของเรา
มาสร้างการกำหนดค่า Terraform อย่างง่ายที่เราต้องการทดสอบกัน การกำหนดค่านี้จะเป็นบักเก็ต S3 พื้นฐาน ให้บันทึกเป็น s3-module/main.tf:
resource "aws_s3_bucket" "example" {
bucket = "my-unique-test-bucket-12345"
tags = {
Environment = "test"
ManagedBy = "Terraform"
}
}เขียนการทดสอบ Terratest แรกของคุณ
ตอนนี้มาเขียนไฟล์การทดสอบ Go ของเรากัน สร้างไฟล์ เช่น test/s3_test.go ขั้นตอนสำคัญมีดังนี้:
- กำหนดตัวเลือก Terraform (เส้นทางไปยังการกำหนดค่า)
- เริ่มต้นและนำ Terraform ไปใช้
- เรียกใช้การตรวจสอบ
- ทำลายทรัพยากร
วิธีนี้ช่วยให้สถานะหลังจากการทดสอบแต่ละครั้งสะอาด
Terratest: เริ่มต้น นำไปใช้ และตรวจสอบ
นี่คือโค้ด Go สำหรับการทดสอบบักเก็ต S3 ของเรา โปรดสังเกตว่าเราใช้ terraform.InitAndApply เพื่อจัดเตรียมโครงสร้างพื้นฐาน จากนั้นจึงดึงผลลัพธ์หรือเรียกใช้ API ของ AWS เพื่อตรวจสอบ
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"])
}เรียกใช้การทดสอบการผสานรวมของคุณ
หากต้องการเรียกใช้ Terratest ให้ไปยังไดเรกทอรี test/ ในเทอร์มินัล แล้วเรียกใช้คำสั่งทดสอบ Go แฟล็ก -v จะแสดงผลลัพธ์อย่างละเอียด
Terratest จะดำเนินการดังนี้:
- เริ่มต้น Terraform
- นำการกำหนดค่าไปใช้
- ดำเนินการตรวจสอบ
- ทำลายทรัพยากรที่สร้างขึ้น
cd test
go test -vแนวทางปฏิบัติที่ดีสำหรับการทดสอบการผสานรวม
โปรดคำนึงถึงเคล็ดลับเหล่านี้เพื่อให้การทดสอบการผสานรวมมีประสิทธิภาพ:
- การแยกจากกัน: ใช้ชื่อที่ไม่ซ้ำกันหรือส่วนต่อท้ายแบบสุ่มสำหรับทรัพยากร เพื่อหลีกเลี่ยงความขัดแย้ง
- การล้างทรัพยากร: ทำลายทรัพยากรหลังการทดสอบเสมอ (
defer terraform.Destroy) - ค่าใช้จ่าย: ระมัดระวังค่าใช้จ่ายของทรัพยากร เลือกใช้ทรัพยากรขนาดเล็กและราคาถูก
- ความเร็ว: การทดสอบการผสานรวมช้ากว่าการทดสอบหน่วย จึงควรเรียกใช้น้อยกว่า เช่น เรียกใช้ใน CI/CD
- ความสมจริง: ทดสอบกับสภาพแวดล้อมคลาวด์เดียวกับที่จะใช้ปรับใช้ (หรือบัญชีทดสอบโดยเฉพาะ)
ตรวจสอบความเข้าใจของคุณ
ข้อใดต่อไปนี้คือประโยชน์หลักของการใช้การทดสอบการผสานรวมกับการกำหนดค่า Terraform
สรุป: การทดสอบการผสานรวม
คุณได้เรียนรู้เกี่ยวกับการทดสอบการผสานรวมสำหรับ Terraform แล้ว! เนื้อหาที่ครอบคลุมมีดังนี้:
- การทดสอบการผสานรวมคืออะไร และเหตุใดจึงสำคัญต่อ Terraform
- Terratest ซึ่งเป็นไลบรารีของ Go ช่วยเขียนการทดสอบเหล่านี้อย่างไร
- กระบวนการพื้นฐาน: ตั้งค่า นำไปใช้ ตรวจสอบ และทำลาย
- แนวทางปฏิบัติที่ดีสำหรับการเขียนการทดสอบการผสานรวมที่มีประสิทธิภาพและประหยัดค่าใช้จ่าย
การทดสอบการผสานรวมช่วยให้มั่นใจได้ว่าโครงสร้างพื้นฐานของคุณทำงานได้อย่างถูกต้องในโลกจริง
คำถามที่พบบ่อย
บทเรียน “การทดสอบการผสานรวมทรัพยากรคลาวด์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทดสอบการผสานรวมทรัพยากรคลาวด์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Terraform Infrastructure as Code ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทดสอบการผสานรวมทรัพยากรคลาวด์”
ใช้งานการทดสอบการผสานรวมเพื่อตรวจสอบว่าทรัพยากรคลาวด์จริงที่ Terraform จัดเตรียมได้รับการปรับใช้และทำงานอย่างถูกต้อง คุณปฏิบัติ Terraform Infrastructure as Code ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Terraform Infrastructure as Code หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Terraform Infrastructure as Code บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การทดสอบการผสานรวมทรัพยากรคลาวด์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Terraform Infrastructure as Code นี้ได้ไหม
ได้ บทเรียน Terraform Infrastructure as Code ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- `validate` และ `fmt` ของ Terraform
- การทดสอบหน่วยด้วย Terratest
- การทดสอบการผสานรวมทรัพยากรคลาวด์
- นโยบายในรูปโค้ดและการตรวจสอบการปฏิบัติตามข้อกำหนด