كل الوحدات لماذا الاختبار أنواع الاختبار TDD مع الذكاء الاصطناعي لا تثق عمياءً English

اختبار الشيفرة المولّدة

أوّل شبكة أمانٍ حقيقية لـ«يعمل مرّة واحدة» — كي لا يكسر تغيير الذكاء الاصطناعي التالي ما سبقه بصمت.

الوحدة 6 · حوّل معايير القبول إلى اختباراتٍ آلية.

متوسّط الاختبار يتضمّن مختبرًا ~50 دقيقة

ماذا ستتعلّم

  • لماذا تهمّ الاختبارات أكثر حين يغيّر الذكاء الاصطناعي شيفرتك باستمرار
  • أنواع الاختبار التي تحتاجها فعلًا لتطبيقٍ صغير: الوحدة وتكامل الـAPI
  • TDD مع الذكاء الاصطناعي: حوّل معايير القبول إلى اختبارات، ثم اجعلها تنجح
  • لماذا التغطية ليست صحّةً — وكيف تقرأ اختبارات الذكاء الاصطناعي بعينٍ ناقدة
  • مختبر عملي: أضِف مُشغّل اختباراتٍ وغطِّ M1–M3، والتقط خطأً مقصودًا

المتطلبات المسبقة: الوحدة 5 — خزنة مقتطفاتٍ تعمل (إنشاء، عرض، بحث، حذف).

لماذا الاختبارات، ولماذا الآن

موطن الفشل رقم 1 من الوحدة 1 كان «يعمل مرّة واحدة»: العرض يعمل، لكن التغيير التالي يكسر شيئًا بصمت دون انتباه. وحين يعيد الذكاء الاصطناعي كتابة شيفرتك مرّاتٍ في اليوم، يتضاعف الخطر. الاختبارات الآلية هي العلاج — تعيد فحص معايير قبولك في ثوانٍ، كل مرّة.

بلا اختباراتمع اختبارات
تنقر في التطبيق آملًا ألّا شيء انكسرأمرٌ واحد يؤكّد أن كل ميزةٍ ما زالت تعمل
الانحدارات تُشحن بصمتالميزة المكسورة تُفشل البناء بصوتٍ عالٍ
«الاكتمال» إحساس«الاكتمال» = نجاح اختبارات معايير القبول

مواصفتك كتبت الاختبارات بالفعل

أتذكر معايير القبول التي كتبتها في الوحدة 3؟ «يُرفض العنوان الفارغ»، «البحث غير حسّاسٍ لحالة الأحرف»… كلٌّ منها اختبارٌ ينتظر الكتابة. الاختبارات ما هي إلا مواصفتك مصيّرةً قابلةً للتنفيذ.

الاختبارات التي تحتاجها فعلًا

لا تغرق في نظرية الاختبار. لتطبيقٍ صغير، نوعان يحملان الثقل:

النوعيفحصمثالٌ للخزنة
الوحدةدالّةً صغيرةً واحدة بمعزلمرشّح البحث يعيد المطابقات دون حساسية حالة الأحرف
تكامل الـAPIنقطة نهايةٍ من الطرف إلى الطرفPOST /snippets ينشئ ويعيد مقتطفًا؛ ويُرفض العنوان الفارغ

تجاوز جدل الهرم

ستسمع عن نِسَب الوحدة مقابل التكامل مقابل الطرف-إلى-الطرف. الآن: اكتب اختبارًا لكل معيار قبولٍ عند المستوى الأرخص فحصًا. غالبًا يكون ذلك اختبارات تكامل الـAPI لنقاط النهاية، وبضعة اختبارات وحدةٍ للمنطق الصعب.

TDD مع الذكاء الاصطناعي

يتزاوج التطوير المقاد بالاختبار جميلًا مع المساعد: اكتب الاختبار أولًا (من معيار قبول)، شاهده يفشل، ثم دع الذكاء الاصطناعي يجعله ينجح. الاختبار الفاشل هدفٌ واضحٌ لا يستطيع المساعد التِيه عنه.

1. Pick an acceptance criterion → "empty title is rejected with 400" 2. Write (or have AI write) a test → expect POST {title:""} to return 400 3. Run it → it fails (red) 4. Ask the AI to implement until it passes → green 5. Commit. Next criterion.

تفضّل الاختبار-بعد؟ لا بأس أيضًا — فقط لا تتخطّاه. القاعدة ببساطة: كل معيار قبولٍ ينتهي باختبار، سواء كتبته قبل الشيفرة أو بعدها.

طلبٌ ممتاز

«اكتب اختبارات تكامل API لمعايير قبول القصص M1–M3 في SPEC.md. اختبارٌ واحد لكل معيار، بأسماءٍ واضحة. لا تغيّر شيفرة التطبيق — الاختبارات فقط.» ثم تراجعها، وتشغّلها، وعندها فقط تدعه يصلح الإخفاقات.

لا تثق عمياءً أبدًا

لاختبارات الذكاء الاصطناعي فخّ: قد يكتب المساعد اختبارًا ينجح دائمًا، أو يختبر الشيء الخطأ، ويبلّغ بفخرٍ «كل شيءٍ أخضر». الأخضر ذو معنًى فقط إن كانت الاختبارات حقيقية.

الفخّالحارس
اختبارٌ لا يؤكّد شيئًا ذا معنىاقرأ كل اختبار — هل يفحص السلوك فعلًا؟
تغطية 100%، ثقة 0%التغطية تقيس الأسطر المُشغّلة، لا الصحّة. لا تطارِد الرقم.
ينجح لأنه يحاكي كل شيءأبقِ بعض الاختبارات على الأقل تضرب نقطة النهاية الحقيقية.

البرهان: اكسره عن قصد

السبيل الوحيد للوثوق باختبارٍ هو رؤيته يفشل للسبب الصحيح. أدخِل خطأً مؤقّتًا (مثلًا اقبل عنوانًا فارغًا) وأكّد أن اختبارًا يحمرّ. إن لم يفشل شيء، فاختبارك لم يكن يختبر شيئًا.

مختبر عملي: غطِّ M1–M3 باختبارات

ستضيف مُشغّل اختبارات، وتحوّل معايير قبولك إلى اختباراتٍ آلية، وتُثبت أنها تعمل بالتقاط خطأٍ مقصود.

ما تحتاجه

مستودع snippet-vault من الوحدة 5 وM1–M3 تعمل.

1

افرَع وأضِف مُشغّل اختبارات

git checkout -b feature/tests

اطلب من المساعد إعداد مُشغّل اختباراتٍ في api/ (Jest أو Vitest مع Supertest لـHTTP). راجع تغيير الإعداد؛ وأودِعه.

2

حوّل معايير القبول إلى اختبارات

Write API integration tests for the acceptance criteria of M1–M3 in SPEC.md: create returns the snippet, empty title → 400, list returns all, search filters case-insensitively, delete removes one. One test per criterion, clear names. Tests only — don't touch app code.

اقرأ كل اختبار. هل يؤكّد كلٌّ السلوك الحقيقي؟

3

شغّلها خضراء

cd api && npm test

إن فشل أيٌّ منها، قرّر: أهو الاختبار خطأ أم الشيفرة؟ أصلح الصحيح. أودِع عند الاخضرار.

4

أثبِت أن اختبارًا يعضّ

اسمح مؤقّتًا لنقطة الإنشاء بقبول عنوانٍ فارغ. شغّل الاختبارات — يجب أن يحمرّ اختبار «يُرفض العنوان الفارغ». إن لم يفعل، فاختبارك زائف؛ أصلحه. ثم تراجَع عن الخطأ.

5

ادمج وتأمّل

git add . git commit -m "Add tests for M1–M3 acceptance criteria" git checkout main && git merge feature/tests

في REFLECTION.md: أيّ اختبارٍ التقط الخطأ المقصود، وهل تبيّن أن اختبارًا كتبه الذكاء الاصطناعي لا يؤكّد شيئًا؟ أودِعه.

ما الذي تسلّمه

مستودع snippet-vault. تحقّق من نفسك:

  • npm test يعمل وينجح في api/
  • هناك اختبارٌ لكل معيار قبولٍ لـM1–M3
  • أكّدت أن اختبارًا يحمرّ حين تكسر الشيفرة
  • REFLECTION.md يدوّن الخطأ الذي التقطه اختبار

مسرد مصغّر

المصطلحالمعنى المبسّط
اختبار الوحدةيفحص دالّةً صغيرةً واحدة بمعزل.
اختبار التكامليفحص أجزاءً تعمل معًا — مثلًا نقطة API كاملة.
TDDاكتب الاختبار الفاشل أولًا، ثم برمِج حتى ينجح.
الانحدارميزةٌ كانت تعمل فكسرها تغييرٌ جديد.
التغطيةنسبة أسطر الشيفرة التي تشغّلها اختباراتك — مفيدة، لا برهان صحّة.

الخلاصة وما التالي

صار لديك الآن

مجموعة اختباراتٍ تحوّل معايير قبولك إلى شبكة أمانٍ قابلة للتنفيذ — تعمل بأمرٍ واحد، ومثبتٌ أنها تلتقط خطأً حقيقيًّا. «يعمل مرّة واحدة» صار «يبقى يعمل».

التالي: الوحدة 7 — بوابات الجودة والأمان. الاختبارات تلتقط السلوك المكسور؛ الآن نضيف البوابات التي تلتقط الأسلوب السيّئ والثغرات الأمنية الخطيرة — التدقيق، وفحص الأسرار، والتحقّق — قبل وصولها إلى main.

اختبار الشيفرة المولّدة

الأهداف لماذا الاختبار أنواع الاختبار TDD لا تثق عمياءً المختبر العملي المسرد الخلاصة