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

ولِّد صفوفًا من بيانات اختبار تبدو واقعية لكنها مختلَقة بالكامل — أسماء وبريد إلكتروني وهواتف وعناوين — لضمان الجودة واختبار قواعد البيانات. لا شيء هنا يخص شخصًا حقيقيًا.

249 مشاهدة

جميع البيانات أدناه مُختلَقة عشوائيًا لأغراض الاختبار فقط — ولا تصف أي شخص حقيقي.

لماذا يُعد الاختبار ببيانات مستخدمين حقيقية ممارسة سيئة

ملء قاعدة بيانات تطوير بتصدير شريحة من جدول عملاء الإنتاج يبدو مريحًا، وهو من أكثر الطرق شيوعًا التي تُسرِّب بها الشركات بيانات شخصية عن غير قصد. بموجب لوائح مثل اللائحة العامة لحماية البيانات (GDPR) في الاتحاد الأوروبي وقانون حماية البيانات الشخصية (KVKK) في تركيا، يُفترَض ألا تُعالَج البيانات الشخصية إلا للغرض المحدد الذي جُمعت من أجله وأن تُحمى بأمان يناسب ذلك الغرض — وغالبًا ما تكون بيئة الاختبار المرحلي أو التطوير أقل تأمينًا بكثير من بيئة الإنتاج، ويمكن لكل مهندس الوصول إليها روتينيًا، وأحيانًا تُسجَّل أو تُنسَخ احتياطيًا إلى تخزين أقل أمانًا، أو تنكشف عن غير قصد إذا فُهرِس رابط بيئة الاختبار أو أُسيء ضبط خادم اختبار. وجود اسم عميل حقيقي وبريده الإلكتروني ورقم هاتفه وعنوانه في قاعدة بيانات لم تُدقَّق أبدًا لمستوى التعرّض ذاك مسؤولية امتثال وأمان كلاسيكية، وعبارة "استخدمنا بيانات الإنتاج في عرض توضيحي" جملة متكررة في تقارير ما بعد اختراقات البيانات الحقيقية. البيانات المُلفَّقة تتجاوز المشكلة برمّتها: لا يوجد شخص حقيقي يجب إخطاره، ولا أساس موافقة يجب تبريره، ولا خرق يجب الإبلاغ عنه إذا تسرّبت قاعدة بيانات اختبار، لأن الصفوف لم تُطابِق أحدًا قط.

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

كيف تعمل العشوائية

تُختار كل قيمة هنا — أي اسم، وأي مدينة، وأي أرقام في رقم هاتف — باستخدام crypto.getRandomValues()، مصدر الأرقام العشوائية الآمن تشفيريًا الخاص بواجهة Web Crypto API، بدلًا من Math.random(). ولتوضيح السبب بدقة: المخاطر الأمنية الفعلية لاختيار اسم وهمي لصف اختبار قريبة من الصفر، لذا فهذا ليس متطلبًا أمنيًا بالطريقة التي يكون بها عند توليد كلمة مرور أو رمز جلسة مثلًا. سبب استخدام هذه الأداة له مع ذلك هو إظهار العادة الافتراضية الصحيحة — Math.random() مولّد شبه عشوائي سريع وغير تشفيري يمكن من حيث المبدأ التنبؤ بمخرجاته أو إعادة إنتاجها عبر البيئات، بينما تسحب crypto.getRandomValues() من مصدر إنتروبيا آمن في نظام التشغيل وهي الأداة الصحيحة كلما احتاجت العشوائية أن تكون غير قابلة للتنبؤ — لذا فإن اللجوء إليها افتراضيًا يتجنب خطأ استخدام Math.random() في سياق — كتوليد رمز خصم أو رمز إعادة تعيين — حيث تكون قابلية التنبؤ مشكلة حقيقية. لتجنب انحياز باقي القسمة (تحيز دقيق يجعل بعض القيم أكثر احتمالًا قليلًا جدًا من غيرها عندما لا يقسم النطاق العشوائي بالتساوي على مساحة المخرجات)، يستخدم كل اختيار أخذ عينات بالرفض (rejection sampling): تُرفض القيم التي قد تُدخل ذلك التحيز وتُسحَب من جديد.

  • مجمعات أسماء ومدن منفصلة لكل لغة: اختيار "التركية" يُولِّد من مجموعة مخصصة من الأسماء الأولى والألقاب والمدن التركية؛ اختيار "الإنجليزية" يسحب من مجموعة إنجليزية منفصلة، بحيث تُقرأ البيانات متسقة محليًا لا خليطًا من قواعد تسمية غير مترابطة.
  • نطاقات وهمية فقط: تستخدم رسائل البريد الإلكتروني المُولَّدة دائمًا example.com أو example.org أو example.net، وهي النطاقات المحجوزة رسميًا بموجب RFC 2606 للاستخدام التوثيقي والاختباري — لا يُستخدَم أبدًا نطاق حقيقي قابل للتسجيل يمكن أن يوجّه بريدًا عن غير قصد إلى مكان ما.
  • تصدير CSV بتنسيق RFC 4180: الحقول مفصولة بفواصل ومحاطة بعلامات اقتباس، بحيث تُحلَّل القيم التي تحتوي فواصل أو علامات اقتباس أو فواصل أسطر بشكل صحيح في Excel أو Google Sheets أو أي مستورد CSV متوافق مع المعايير.
  • محلي بالكامل: يحدث التوليد داخل متصفحك؛ لا يُرسَل أي شيء إلى خادم، ولا يُسجَّل، ولا يُخزَّن في أي مكان بخلاف التنزيل الخاص بك.

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

هل أي من هذه البيانات حقيقي أو يمكن تتبعه إلى شخص حقيقي؟

لا. يُجمَّع كل صف بدمج قيم عشوائية من مجمعات ثابتة للأسماء والمدن والشركات والنطاقات بُنيت خصيصًا لهذه الأداة. لا يوجد بحث مقابل أي شخص حقيقي أو قائمة عملاء أو مصدر بيانات خارجي؛ أي تشابه مع فرد حقيقي محض صدفة.

لماذا تستخدم الأداة crypto.getRandomValues() بدلًا من Math.random()؟

المخاطر الأمنية هنا منخفضة، لكن الأداة تُصمِّم عمدًا نموذج العادة الافتراضية الصحيحة: تسحب crypto.getRandomValues() من مصدر إنتروبيا آمن في نظام التشغيل وتتجنب خطر قابلية التنبؤ الذي تحمله Math.random()، لذا فإن استخدامها افتراضيًا يبني الحدس الصحيح لسياقات — كالرموز أو الأكواد — حيث تكون قابلية التنبؤ مشكلة فعلية.

هل يمكنني استخدام هذا لملء قاعدة بيانات إنتاج أو مشتركة؟

صُمِّمت هذه الأداة لضمان الجودة والاختبار المرحلي والتطوير المحلي — لا لملء أي شيء يواجه العملاء. بما أن القيم مُولَّدة عشوائيًا، فمن الممكن ظهور أسماء أو رسائل بريد إلكتروني مكررة عبر عمليات توليد منفصلة ولا يُتحقَّق من ذلك.

لماذا تكون نطاقات البريد الإلكتروني المُولَّدة دائمًا example.com أو ما شابه؟

example.com وexample.net وexample.org نطاقات محجوزة بشكل دائم بموجب RFC 2606 خصيصًا للتوثيق والاختبار، ومضمون ألا تُخصَّص أبدًا لمؤسسة حقيقية — استخدامها يتجنب المخاطرة الصغيرة لكن الحقيقية في توليد عنوان وهمي عن غير قصد على نطاق يملكه شخص فعليًا.

ما تنسيق تنزيل CSV؟

يتبع RFC 4180: حقول مفصولة بفواصل، كل قيمة محاطة بعلامتَي اقتباس مزدوجتين مع تهريب أي علامات اقتباس داخلية، ونهايات أسطر CRLF — وهو التنسيق الذي يتوقعه Excel وGoogle Sheets وتقريبًا كل أداة استيراد قاعدة بيانات افتراضيًا.

التعليقات

لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!

أدوات مشابهة