DEV Community

Cover image for كيفية إنشاء بيانات اختبار API واقعية
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

كيفية إنشاء بيانات اختبار API واقعية

كل اختبار API يحتاج إلى بيانات تشغيل. اختبار تسجيل الدخول يحتاج إلى مستخدمين، اختبار الدفع يحتاج إلى طلبات وعناوين وسجلات دفع، واختبار البحث يحتاج إلى آلاف الصفوف حتى تختبر التصفح والفرز فعليًا. كتابة هذه البيانات يدويًا بطيئة، وغالبًا تكون “نظيفة” أكثر من اللازم فلا تكشف الأخطاء التي تظهر مع بيانات الإنتاج.

جرّب Apidog اليوم

مولد بيانات الاختبار يحل هذه المشكلة: ينشئ سجلات اصطناعية واقعية ومتنوعة عند الطلب، بحيث تختبر الحالات الهامشية بدل الاكتفاء بالمسار السعيد. في هذا الدليل ستتعرف على أنواع مولدات بيانات الاختبار، ومتى تستخدم كل نوع، وكيف تنشئ بيانات اختبار مباشرة داخل Apidog دون أداة منفصلة.

إذا كنت جديدًا على محاكاة استجابات API، ابدأ بـ ما هو Mock API، ثم عد إلى هنا لمعالجة جانب البيانات.

ما هو مولد بيانات الاختبار؟

مولد بيانات الاختبار هو أداة أو مكتبة تنشئ سجلات اصطناعية تشبه بيانات الإنتاج. بدل كتابة نفس القيم مرارًا:

{
  "name": "test",
  "email": "test@test.com"
}
Enter fullscreen mode Exit fullscreen mode

تصف شكل البيانات المطلوب:

  • اسم مستخدم
  • بريد إلكتروني صالح
  • سعر بين 10 و500
  • حالة من قائمة محددة
  • تاريخ ضمن نطاق معين

ثم يتولى المولد إنشاء القيم.

بيانات الاختبار الجيدة يجب أن تكون:

  • واقعية: الأسماء تبدو كأسماء، البريد الإلكتروني صالح، التواريخ منطقية.
  • متنوعة: لا تحصل على نفس السجل في كل مرة.
  • آمنة: لا تحتوي على بيانات عملاء حقيقية أو معلومات شخصية PII.

الهدف ليس إنشاء بيانات “جميلة”، بل زيادة التغطية: سلاسل فارغة، أسماء Unicode، أرقام ضخمة، تواريخ منتهية، قيم خارج النطاق، وحقول اختيارية مفقودة.

لماذا تحتاج بيانات واقعية لاختبار API؟

واجهات API تتحقق من المدخلات. فهي ترفض البريد غير الصالح، تمنع الأرقام خارج النطاق، وتغير المنطق بناءً على الحقول الاختيارية.

إذا كان كل اختبار يستخدم:

John Doe / john@example.com / quantity = 1
Enter fullscreen mode Exit fullscreen mode

فأنت تختبر المسار السعيد فقط.

باستخدام بيانات مولدة يمكنك:

  1. اختبار الحجم: أنشئ 5000 منتج لاختبار pagination والفرز والتصفية.
  2. اختبار الحدود: جرّب السعر 0، كمية سالبة، اسم بطول 256 حرفًا.
  3. تشغيل اختبارات موجهة بالبيانات: استخدم جدول مدخلات واحدًا لتشغيل نفس الاختبار على حالات كثيرة.

مثال بسيط لمجموعة بيانات اختبار:

[
  {
    "email": "valid.user@example.com",
    "password": "StrongPass123!",
    "expectedStatus": 200
  },
  {
    "email": "invalid-email",
    "password": "StrongPass123!",
    "expectedStatus": 400
  },
  {
    "email": "",
    "password": "",
    "expectedStatus": 400
  }
]
Enter fullscreen mode Exit fullscreen mode

الأنواع الرئيسية لمولدات بيانات الاختبار

تنقسم مولدات بيانات الاختبار غالبًا إلى أربع فئات. في المشاريع العملية قد تستخدم أكثر من نوع.

1. مكتبات الكود

مكتبات مثل Faker.js في JavaScript وFaker في Python تمنحك API برمجية لإنشاء البيانات.

مثال باستخدام Faker.js:

import { faker } from "@faker-js/faker";

const user = {
  name: faker.person.fullName(),
  email: faker.internet.email(),
  city: faker.location.city(),
  price: faker.commerce.price({ min: 10, max: 500 })
};

console.log(user);
Enter fullscreen mode Exit fullscreen mode

هذا الخيار مناسب عندما تحتاج إلى:

  • تحكم كامل في التوليد.
  • ربط البيانات بسكربتات seed أو migration.
  • إعادة إنتاج نفس البيانات باستخدام seed.

المقابل: ستكتب الكود وتحافظ عليه. إذا كنت تعمل في JavaScript، راجع Faker.js وكيفية استخدامه في Apidog.

2. مولدات قائمة بذاتها وعبر الإنترنت

أدوات مثل Mockaroo تسمح لك بتحديد الأعمدة من واجهة ويب، ثم تنزيل CSV أو JSON أو SQL.

استخدمها عندما تحتاج إلى:

  • ملف seed سريع.
  • بيانات تجريبية لمرة واحدة.
  • تصدير CSV/JSON بدون كتابة كود.

الجانب السلبي: البيانات ثابتة. إذا تغير المخطط، غالبًا ستعود للأداة وتعيد التصدير يدويًا.

3. مولدات تعتمد على المخطط Schema-based

إذا كان لديك OpenAPI أو JSON Schema، يمكن للمولد قراءة أنواع الحقول والقيود ثم إنشاء بيانات متوافقة مع العقد.

مثال JSON Schema مبسط:

{
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "email": { "type": "string", "format": "email" },
    "status": {
      "type": "string",
      "enum": ["active", "pending", "closed"]
    }
  },
  "required": ["id", "email", "status"]
}
Enter fullscreen mode Exit fullscreen mode

المولد المستند إلى المخطط يستطيع إنشاء سجل مثل:

{
  "id": 101,
  "email": "sara.ali@example.com",
  "status": "active"
}
Enter fullscreen mode Exit fullscreen mode

هذا يحافظ على توافق بيانات الاختبار مع مواصفات API. راجع كيفية إنشاء بيانات وهمية من مخططات OpenAPI. معيار JSON Schema هو الأساس الذي يجعل الأنواع والتنسيقات والقيود قابلة للقراءة آليًا.

4. مولدات تعتمد على الذكاء الاصطناعي

مولدات الذكاء الاصطناعي مفيدة عندما تحتاج إلى سجلات مترابطة وسياقية، مثل:

  • تذكرة دعم واقعية.
  • وصف منتج متماسك.
  • ملف مستخدم يحتوي على اسم، دور، شركة، وملاحظات منطقية.

هذا النوع مناسب عندما لا تكفي القيم العشوائية لكل حقل. راجع إنشاء بيانات وهمية باستخدام Claude Code كمثال عملي.

كيفية إنشاء بيانات اختبار في Apidog

إذا كنت تختبر واجهات API داخل Apidog، فلست مضطرًا لاستخدام مولد منفصل. توليد البيانات متاح داخل سير العمل نفسه: المحاكاة، بيانات الاختبار، والتشغيل الموجه بالبيانات.

1. محاكاة ذكية حسب الحقول

عند محاكاة نقطة نهاية في Apidog، يقرأ Apidog أسماء الحقول وأنواعها، ثم ينشئ قيمًا مناسبة تلقائيًا.

أمثلة:

  • حقل email يحصل على بريد إلكتروني صالح.
  • حقل createdAt يحصل على تاريخ.
  • حقل price يحصل على رقم.
  • حقل status يمكن ضبطه على قيم محددة مثل active أو pending.

يمكنك أيضًا إضافة قواعد بأسلوب Faker للتحكم في الإخراج. ابدأ من تنزيل Apidog، ثم عرّف نقطة نهاية وستحصل على بيانات واقعية بدون الحفاظ على ملف db.json.

واجهة توليد بيانات اختبار في Apidog

2. بيانات اختبار مولدة بالذكاء الاصطناعي

يمكن لـ Apidog إنشاء دفعة من سجلات الاختبار لنقطة نهاية اعتمادًا على مخططها. هذا مفيد عندما تريد مجموعة بيانات متنوعة بدون كتابة قاعدة يدوية لكل حقل.

توليد بيانات اختبار بالذكاء الاصطناعي في Apidog

3. اختبار موجه بالبيانات

هنا تكتمل الحلقة. يمكنك إرفاق CSV أو JSON بخطوة اختبار، ثم يقوم Apidog بتشغيل نفس الخطوة مرة لكل صف، مع استبدال القيم كمتغيرات.

مثال CSV:

email,password,expectedStatus
valid.user@example.com,StrongPass123!,200
invalid-email,StrongPass123!,400
,,400
Enter fullscreen mode Exit fullscreen mode

الفكرة:

  • اختبار واحد.
  • مدخلات كثيرة.
  • نفس نمط التحقق assertions.

لمعرفة الإعداد خطوة بخطوة، راجع كيفية تشغيل اختبارات API ذات المعلمات من CSV و JSON. وإذا كنت تقارن الأدوات، راجع أي أداة تستخدم للاختبار الموجه بالبيانات لواجهة برمجة التطبيقات. للعمل داخل CI، استخدم نفس مجموعات البيانات مع الاختبار الموجه بالبيانات في Apidog CLI.

خطوة بخطوة: إنشاء بيانات اختبار لنقطة نهاية

اتبع هذا التدفق العملي:

  1. افتح مشروعك في Apidog.
  2. اختر نقطة النهاية التي تريد توليد بيانات لها.
  3. عرّف مخطط الاستجابة أو استورده من ملف OpenAPI.
  4. شغّل المحاكاة.
  5. راجع القيم التي تم إنشاؤها لكل حقل.
  6. أضف قواعد مخصصة للحقول المهمة، مثل:
    • status: واحدة من active, pending, closed
    • price: رقم ضمن نطاق محدد
    • email: بريد إلكتروني صالح
  7. أنشئ Dataset بصيغة CSV أو JSON.
  8. اربط Dataset بخطوة الاختبار.
  9. شغّل الاختبار لتكراره على كل صف.

النتيجة: نفس المكان الذي تكتب فيه الاختبارات ينتج أيضًا بيانات التطوير وبيانات التشغيل.

كيفية اختيار مولد بيانات الاختبار

إذا كنت تحتاج إلى... استخدم لماذا
تحكم برمجي كامل في JS/Python مكتبة Faker مرنة، قابلة للبرمجة، وقابلة لإعادة الإنتاج باستخدام seeds
ملف seed ثابت سريع Mockaroo أو ما شابه بدون كود، صدّر واستخدم
بيانات تطابق عقد API مولد مستند إلى OpenAPI/JSON Schema يبقى متزامنًا مع المواصفات
سجلات سياقية ومترابطة مولد AI ينتج بيانات متماسكة بين الحقول
بيانات مرتبطة بالمحاكاة والاختبارات Apidog أداة واحدة للمحاكاة، التوليد، والتشغيل

لا يوجد خيار واحد مناسب للجميع. إذا كان فريقك يعتمد على السكربتات، فغالبًا ستستخدم Faker. إذا كنت تصمم وتختبر API داخل Apidog، فستحصل على التوليد والمحاكاة والاختبارات الموجهة بالبيانات داخل نفس مساحة العمل.

أفضل الممارسات لبيانات اختبار API

  • استخدم seed عند الحاجة للتكرار: الاختبار الفاشل مفيد فقط إذا استطعت إعادة إنتاج نفس البيانات.
  • ولّد بيانات غير صالحة أيضًا: لا تختبر القيم الصحيحة فقط. أضف حقولًا فارغة، أنواعًا خاطئة، payloads كبيرة، ورموزًا منتهية.
  • حافظ على تزامن البيانات مع المخطط: عندما يتغير العقد، أعد توليد البيانات.
  • لا تستخدم PII حقيقية: لا تنسخ بيانات العملاء إلى بيئة الاختبار أو المستودع.
  • اختر الحجم المناسب: اختبارات pagination تحتاج آلاف الصفوف، لكن اختبار validation قد يحتاج عشرات الحالات فقط.
  • افصل بيانات happy path عن edge cases: هذا يجعل فشل الاختبارات أسهل في التحليل.
  • استخدم أسماء حقول واضحة: أدوات التوليد تفهم email, createdAt, price أفضل من أسماء مبهمة مثل field1.

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

ما الفرق بين مولد بيانات الاختبار وخادم المحاكاة mock server؟

مولد البيانات ينشئ السجلات. خادم المحاكاة يقدم هذه السجلات عبر HTTP كاستجابات API وهمية.

غالبًا تحتاج إلى الاثنين. لذلك يجمع Apidog بينهما: المحاكاة تعيد البيانات التي تم توليدها. أما المولد المستقل فيعطيك ملفًا فقط.

هل يمكنني إنشاء بيانات اختبار من مواصفات OpenAPI؟

نعم. الأدوات المستندة إلى المخطط تقرأ الأنواع والقيود من OpenAPI أو JSON Schema وتنتج سجلات مطابقة. راجع إنشاء بيانات وهمية من مخططات OpenAPI.

هل البيانات المولدة آمنة لوضعها في المستودع؟

إذا كانت اصطناعية بالكامل ولا تحتوي على PII حقيقية، فهي آمنة عادة. لا ترفع أبدًا تصديرًا من قاعدة بيانات الإنتاج إلى المستودع.

كيف أشغّل اختبارًا واحدًا على مدخلات كثيرة؟

استخدم الاختبار الموجه بالبيانات. أنشئ CSV أو JSON، اربطه بخطوة الاختبار، وسيتم تشغيل الاختبار مرة لكل صف. يوضح دليل الاختبار ذو المعلمات الإعداد.

هل أحتاج إلى خادم وهمي لاستخدام بيانات الاختبار؟

ليس دائمًا. إذا كنت تريد REST API مؤقتة من ملف ثابت، راجع دليل json-server و JSONPlaceholder. أما إذا كنت تريد محاكاة واعية بالمخطط وقابلة للمشاركة بين أعضاء الفريق، فاستخدم محاكاة Apidog المدمجة.

النسخة المختصرة

مولد بيانات الاختبار يحول إنشاء السجلات من عمل يدوي بطيء إلى وصف قابل للتكرار. استخدم Faker للتحكم البرمجي، أو مولدًا مستندًا إلى المخطط للحفاظ على التوافق مع OpenAPI/JSON Schema، أو مولد AI عندما تحتاج إلى بيانات سياقية مترابطة.

إذا كنت تختبر APIs داخل Apidog، يمكنك توليد البيانات، تشغيل mock server، وتنفيذ اختبارات موجهة بالبيانات من نفس المكان. قم بتنزيل Apidog، عرّف نقطة نهاية، وشاهد بيانات اختبار واقعية في أول استجابة.

Top comments (0)