Skills: مهارات الاختبار الآلي

آخر تحديث: 2026-08-31

الاختبارات هي شبكة أمان الكود — المهارات تجعل الشبكة أسرر نسيجًا وأحكم وأذكى.


1. أنواع مهارات الاختبار

(1) توليد الاختبارات

توليد اختبارات تلقائيًا من الكود المصدري:

YAML
---
name: test-generator
description: "توليد اختبارات وحدة تلقائيًا"
triggers:
  - keyword: "generate-test"
tools:
  - Read
  - Grep
  - Glob
  - Write
---
MARKDOWN
## تدفق التوليد
1. اقرأ الملف المصدري، حلّل توقيعات الدوال والمنطق
2. حدد الشروط الحدية ومسارات الاستثناء
3. Write لإنشاء ملف الاختبار
4. Bash لتشغيل الاختبارات للتحقق

(2) تنفيذ الاختبارات

كشف وتشغيل اختبارات المشروع تلقائيًا:

الإطار طريقة الكشف أمر التشغيل
pytest pyproject.toml pytest
Jest package.json npx jest
Go go.mod go test ./...
Rust Cargo.toml cargo test

(3) تشخيص الفشل

تحليل أسباب الفشل تلقائيًا عند فشل الاختبارات:

MARKDOWN
## تدفق التشخيص
1. اقرأ مخرجات الاختبار الفاشلة
2. حدد التأكيدات الفاشلة وأكوام الأخطاء
3. اقرأ الكود المصدري ذي الصلة
4. حلّل سبب الفشل
5. أخرج تقرير التشخيص واقتراحات الإصلاح

2. استراتيجية توليد الاختبارات

(1) اختبار على مستوى الدالة

PYTHON
# الكود المصدري
def divide(a: float, b: float) -> float:
    if b == 0:
        raise ValueError("Division by zero")
    return a / b
PYTHON
# اختبارات مولدة تلقائيًا
def test_divide_normal():
    assert divide(10, 2) == 5.0

def test_divide_negative():
    assert divide(-10, 2) == -5.0

def test_divide_zero():
    with pytest.raises(ValueError):
        divide(10, 0)

def test_divide_float():
    assert divide(7, 2) == 3.5

(2) أبعاد تغطية الاختبارات

البُعد نوع الاختبار مثال
المسار السعيد المسار الطبيعي مدخلات عادية تُرجع النتيجة المتوقعة
الحدية الشروط الحدية نص فارغ، صفر، القيمة القصوى
مسار الخطأ مسار الاستثناء مدخلات غير صالحة تطلق الاستثناء المتوقع
التزامن أمان الخيوط وصول خيوط متعددة إلى موارد مشتركة

3. تحليل التغطية

(1) جمع التغطية

BASH
# Python
pytest --cov=src --cov-report=term-missing

# JavaScript
npx jest --coverage

# Go
go test -coverprofile=coverage.out ./...

(2) تقرير التغطية

TEXT 📖 للعرض فقط
تقرير التغطية
├── التغطية الإجمالية: 72%
├── الملفات غير المغطاة:
│   ├── src/auth/__init__.py (0%) ← ملف الدخول، يحتاج اختبار
│   ├── src/utils/validators.py (45%) ← بعض الدوال غير مُختبرة
│   └── src/api/routes.py (60%) ← معالجة الأخطاء غير مغطاة
└── الاقتراح: أعطِ الأولوية لإضافة اختبارات لـ validators.py

4. ممارسة مهارة الاختبار

▶ مثال: مهارة مساعد TDD

أنشأت Alice مهارة مساعد TDD لمساعدة الفريق على ممارسة التطوير الموجه بالاختبار:

YAML
---
name: tdd-assistant
description: "مساعد TDD: اكتب الاختبارات أولاً، ثم نفّذ"
triggers:
  - keyword: "tdd"
tools:
  - Read
  - Write
  - Edit
  - Bash
---
MARKDOWN
## تدفق TDD
1. افهم المتطلبات
2. اكتب اختبارًا فاشلًا (RED)
3. Bash لتأكيد فشل الاختبار
4. Edit لكتابة الحد الأدنى من التنفيذ (GREEN)
5. Bash لتأكيد نجاح الاختبار
6. Edit لإعادة الهيكلة والتحسين (REFACTOR)
7. Bash لتأكيد أن الاختبارات لا تزال ناجحة

قال Bob: "أكبر عدو لـ TDD هو القصور الذاتي — المهارات تُدوّن العملية فلا يحتاج المطورون للنقاش حول 'اختبارات أولاً أم كود أولاً' — فقط اتبع التدفق."


❓ الأسئلة الشائعة

س هل جودة الاختبارات المولدة تلقائيًا كافية؟
ج كافية كنقطة بداية، لكن الشروط الحدية واختبارات المنطق التجاري تحتاج إضافة يدوية. الاختبارات المولدة من المهارات تغطي المسارات السعيدة والحدود الشائعة؛ السيناريوهات المعقدة لا تزال تحتاج تصميمًا بشريًا.
س هل يمكن للمهارات إصلاح الاختبارات الفاشلة تلقائيًا؟
ج يمكنها المحاولة، لكن نوصي بالتشخيص أولاً ثم الإصلاح. فشل التأكيدات البسيط يمكن إصلاحه تلقائيًا؛ أخطاء المنطق المعقدة تحتاج تأكيدًا بشريًا لاتجاه الإصلاح.
س كيف أوازن بين تغطية الاختبارات وسرعة التطوير؟
ج الوحدات الأساسية تستهدف 80%+، دوال الأدوات 60%+، الميزات الجديدة اكتب اختبارات المسار الحرج أولاً ثم أضف تدريجيًا.

📖 ملخص


📝 تمارين

  1. أساسي (⭐): أنشئ مهارة تنفيذ اختبارات تكشف تلقائيًا إطار اختبار المشروع وتشغّل الاختبارات.
  2. متوسط (⭐⭐): أنشئ مهارة توليد اختبارات تولّد اختبارات سعيدة/حدية/استثنائية لدوال محددة.
  3. متقدم (⭐⭐⭐): أنشئ مهارة مساعد TDD بدورة RED-GREEN-REFACTOR كاملة، مع إخراج تقرير حالة في كل مرحلة.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%