اختبار تكامل الموارد السحابية
نفّذ اختبارات تكامل للتحقق من النشر الصحيح للموارد السحابية الفعلية التي يوفّرها Terraform ووظائفها.
اختبار تكامل الموارد السحابية درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 وواجهات برمجة التطبيقات السحابية وغير ذلك.
إعداد 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 لتوفير البنية التحتية، ثم استرداد المخرجات أو استدعاء واجهات 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، في كتابة هذه الاختبارات.
- سير العمل الأساسي: الإعداد والتطبيق والتحقق والإتلاف.
- أفضل الممارسات الأساسية لكتابة اختبارات تكامل فعّالة واقتصادية.
تمنحكم اختبارات التكامل الثقة بأن بنيتكم التحتية تعمل بصورة صحيحة في العالم الفعلي.
الأسئلة الشائعة
هل درس «اختبار تكامل الموارد السحابية» مجاني؟
نعم — نص درس «اختبار تكامل الموارد السحابية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.
ماذا ستتعلم في «اختبار تكامل الموارد السحابية»؟
نفّذ اختبارات تكامل للتحقق من النشر الصحيح للموارد السحابية الفعلية التي يوفّرها Terraform ووظائفها. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟
لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «اختبار تكامل الموارد السحابية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟
نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أمرا Terraform `validate` و`fmt`
- اختبار الوحدات باستخدام Terratest
- اختبار تكامل الموارد السحابية
- السياسة كتعليمة برمجية وفحوصات الامتثال