كيف تُولَّد مجموعة بيانات اصطناعية ضخمة للاختبار؟
من ثلاثة قرارات: الشكل (الحقول وأنواعها والصيغة — JSON أو CSV أو SQL أو XML)، والحجم (صفوف تكفي لتفعيل الترقيم والفهارس وحدود الاستيراد)، والتنوع (القيم الحدّية والقيم الفارغة والتكرارات والمحارف الخاصة والصف المشوّه العابر الذي يحتويه أي تصدير حقيقي). والبذرة العشوائية الثابتة تجعل المجموعة قابلة لإعادة الإنتاج، فيمكن إعادة تشغيل الاختبار الفاشل على الصفوف نفسها. وقواعد الصيغ مهمة عند الحجم الكبير: حقول CSV التي تحوي فواصل أو علامات اقتباس أو فواصل أسطر يجب اقتباسها كما يصف RFC 4180، ومستند JSON واحد ضخم يتصرف بشكل مختلف تماماً عن الصفوف نفسها بصيغة JSON Lines.
اقرأ الدليل: ما هو اختبار الأداء؟
كيفية استخدام مولّد بيانات اختبار API
- صِف الحقول (أو الصق JSON Schema / مخطط OpenAPI) في منطقة الإدخال.
- اختر عدد الصفوف الصالحة التي تحتاجها وصيغة المخرجات وما إذا كنت تريد تضمين المتغيرات الحدّية وغير الصالحة.
- اختيارياً حدّد بذرة (seed) حتى تُولَّد مجموعة البيانات نفسها في كل تشغيل.
- ولّد، وراجع المعاينة وجداول المتغيرات، ثم انسخ الملفات أو نزّلها لمشغّل الاختبارات لديك.
مزايا مولّد بيانات اختبار API
- صِف حقول الطلب بلغة وصف مبسّطة (DSL) بسطر لكل حقل (النوع والإلزامية والحدّ الأدنى/الأقصى والأطوال والقيم المعدودة والنمط) أو الصق JSON Schema أو كائناً نموذجياً أو مستند OpenAPI
- يولّد حتى 1,000 صف صالح بقيم اصطناعية واقعية (عناوين بريد على example.com وتواريخ ومعرّفات UUID وأنماط هواتف) — قابلة لإعادة الإنتاج باستخدام بذرة (seed)
- متغيرات حدّية موسومة بالنتيجة المتوقّعة: كل حدّ أدنى وأقصى رقمي مع خطوة واحدة داخله وخطوة واحدة خارجه، وكل حدّ طول وحدّ maxItems مع قيمة تتجاوزه بواحد، وminItems − 1، وقيم صفرية أو سالبة أو كبيرة جداً، أو فارغة أو من مسافات أو بأحرف Unicode، للحقول التي لا حدود لها
- متغيرات غير صالحة: حقول مطلوبة مفقودة، وأنواع خاطئة، وصيغ سيئة، وقيم خارج النطاق، وأعضاء قيم معدودة غير صالحة، وقيم null، وحقول إضافية
- تصدير الصفوف الصالحة بصيغة JSON أو JSON Lines أو CSV؛ وتصدير جميع المتغيرات معاً بصيغة JSON لمشغّلات الاختبارات المعتمدة على البيانات
- يعمل بالكامل في المتصفح؛ ولا يُرفع أي شيء
مثال على مولّد بيانات اختبار API
مجموعة بيانات تسجيل حساب
الإدخال:
email: email required
age: integer min=18 max=99
plan: enum(free|pro) requiredالنتيجة:
{"email":"harper.reed@example.com","age":31,"plan":"pro"} ← valid row
age = 17 → expected 4xx (minimum − 1 step)
missing "email" → expected 4xx (missing-required)الأسئلة الشائعة حول مولّد بيانات اختبار API
ما الفرق بينه وبين مولّد الحمولات؟
يركّز على مجموعات البيانات: صفوف كثيرة للاختبارات المعتمدة على البيانات، من قائمة حقول أو مخطط، بما في ذلك المتغيرات الحدّية وغير الصالحة.
هل البيانات حقيقية؟
لا — كل شيء بيانات اختبار اصطناعية لا تحاكي أشخاصاً حقيقيين أبداً. تستخدم عناوين البريد نطاقات example.* المحجوزة، والمعرّفات عشوائية.
هل يمكنني التحكم في صيغة المخرجات؟
نعم، تُدعم صيغ JSON وJSON Lines وCSV للصفوف الصالحة؛ وتُعرض المتغيرات كجداول وتُصدَّر معاً بصيغة JSON.
كيف أصف الحقول؟
حقل واحد في كل سطر: "email: email required"، أو "age: integer min=18 max=99"، أو "plan: enum(free|pro) required"، أو "tags: array maxItems=5". ويمكنك بدلاً من ذلك لصق JSON Schema أو كائن نموذجي أو مستند OpenAPI.
ما المتغيرات الحدّية؟
نسخ من حمولة صالحة يتغيّر في كل منها حقل واحد فقط، وكل نسخة موسومة بالنتيجة المتوقّعة من واجهة API. يحصل الرقم الذي له حدّ أدنى وحدّ أقصى على ستة صفوف: كل حدّ، وخطوة واحدة داخله (يُتوقّع قبولها)، وخطوة واحدة خارجه (يُتوقّع رفضها)؛ والخطوة 1 للأعداد الصحيحة، وإلا فهي قيمة multipleOf أو 0.01. ويحصل maxLength وmaxItems على الحدّ وعلى قيمة تزيد عليه بواحد، وminLength على الحدّ وعلى قيمة تنقص عنه بواحد، وminItems على قيمة تنقص عنه بواحد. أما الأرقام التي لا حدود لها فتحصل على الصفر وقيمة سالبة وقيمة كبيرة جداً، والسلاسل النصية العادية على قيمة فارغة وأخرى من مسافات فقط وأخرى بأحرف Unicode.
ملاحظات تقنية
تُترجم قائمة الحقول إلى JSON Schema (type وformat وminimum/maximum وminLength/maxLength وenum وpattern وitems) ثم تُغذّى إلى محرّك الحمولات نفسه المستخدم في مولّد حمولات API؛ وتُشتق الصفوف الحدّية من القيود الرقمية وقيود الطول والمصفوفات في ذلك المخطط.
المراجع
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Filesقواعد CSV الشائعة: الفاصلة كفاصل، ونهايات الأسطر CRLF، وتحويط الحقول التي تحتوي فواصل أو علامات اقتباس أو أسطر جديدة.
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Formatقواعد JSON: الكائنات والمصفوفات والنصوص والأرقام والقيم الثلاث الثابتة، وUTF-8 كترميز للتبادل.
- JSON Linesاتفاقية JSON Lines: قيمة JSON كاملة في كل سطر، بترميز UTF-8 وفواصل "\n" وامتداد .jsonl.
- Personal Data Protection Law (English translation)النظام السعودي لحماية البيانات الشخصية — ولماذا ينبغي أن تستخدم بيئات الاختبار بيانات اصطناعية بدلاً من نسخ سجلات العملاء الحقيقية.