بيانات الاختبار
بيانات الاختبار (Test Data) هي البيانات اللازمة لتنفيذ الاختبارات: القيم التي يُدخلها الاختبار، والسجلات التي يجب أن تكون موجودة قبل أن يبدأ — حسابات ومنتجات وطلبات وإعدادات، كلٌّ منها في حالة معروفة. فلاختبار «يستطيع العميل إلغاء طلب قبل شحنه» يكون الضغط على «إلغاء» هو الإجراء، لكن الاختبار لا يبدأ أصلاً من دون عميل يستطيع تسجيل الدخول وطلبٍ مدفوع لم يُشحن بعد.
ينبغي أن تذكر كل حالة اختبار بياناتها، ويتناول هذا الدرس اختيارها والحصول عليها من مصدر آمن وإدارتها كي يمكن تكرار الاختبارات.
لماذا يهم
البيانات تحدد ما يستطيع الاختبار اكتشافه. فالاختبارات التي تعمل بسجلات مرتبة فقط — «Test User» وطلب واحد وعنوان قصير — تثبت المسار السعيد (Happy Path) ولا تكاد تثبت غيره؛ أما العيوب فتنتظر في الحقل الفارغ، والاسم الذي فيه فاصلة عليا (Apostrophe)، والطلب الذي سُلِّم قبل 14 يوماً بالضبط. والبيانات تحدد كذلك هل يمكن الوثوق بالنتيجة: فالاختبار الذي يفشل لأن زميلاً عدّل حساباً مشتركاً، أو ينجح بسبب سجل متبقٍّ، يضيّع الوقت ويخفي مشكلات حقيقية.
وتحمل البيانات مخاطر نظامية أيضاً. فنسخة من الإنتاج في بيئة الاختبار تكشف البيانات الشخصية لعملاء حقيقيين أمام كل من يملك صلاحية الوصول إلى بيئة الاختبار، وغالباً بضوابط أضعف من ضوابط الإنتاج. وهذا في المملكة العربية السعودية معالجة لبيانات شخصية يحكمها نظام حماية البيانات الشخصية (PDPL).
أربعة أنواع من بيانات الاختبار
لكل شرط اختبار، اسأل: أيّ بيانات ستُظهر ما إذا كان السلوك صحيحاً؟ تغطي أربعة أنواع معظم الاحتياجات، ومجموعة الاختبارات الجيدة تمزج بينها عن قصد، بناءً على درسَي الاختبار الإيجابي والسلبي والحالات الحدّية والطرفية.
- الصالحة (Valid): بيانات يجب أن يقبلها النظام ويعالجها — عميل مسجَّل، ومنتج متوفر، وبريد إلكتروني مثل
sara.k@example.com. - غير الصالحة (Invalid): بيانات يجب أن يرفضها النظام بأمان — حقل إلزامي فارغ، وصيغة خاطئة، وبطاقة منتهية الصلاحية، أو سجل في حالة خاطئة مثل طلب أُلغي من قبل.
- الحدّية (Boundary): قيم على أطراف المسموح به — أطول اسم، والصفر، وآخر يوم في الفترة. ويختارها بدقة تحليلُ القيم الحدّية (Boundary Value Analysis) الذي تشرحه وحدة تصميم الاختبار.
- الشبيهة بالإنتاج (Production-like): بيانات تشبه الاستخدام الحقيقي في شكلها وحجمها — أسماء مكتوبة بالعربية وبالخط الديفاناغاري، وعناوين طويلة، وعميل لديه مئات الطلبات — من دون أن تعود إلى شخص حقيقي.
جرّبها: مولّد مجموعات الأحرف الخاصة جرّبها: مولّد مجموعات بيانات Unicode
من أين تأتي بيانات الاختبار
المصدران الأولان أدناه اصطناعيان (Synthetic): بيانات مُنشأة خصيصاً للاختبار لا تصف أي شخص حقيقي. والبيانات الاصطناعية هي الخيار الافتراضي لأنك تتحكم في كل قيمة، بما فيها الحدود والقيم غير الصالحة والحالات النادرة.
- مصنوعة يدوياً: يكتب المختبِر السجلات القليلة الدقيقة التي يحتاجها الاختبار في جدول بيانات أو ملف تجهيز (Fixture) أو سكربت تعبئة بيانات (Seed Script). دقيقة، لكنها بطيئة حين يلزم حجم كبير.
- مولَّدة: تُنشئ أداة أو سكربت السجلات من قواعد، أو يُنشئها الاختبار عبر الواجهة البرمجية (API) للمنتج فتلتزم بقواعد العمل. قابلة للتكرار، من عشرة صفوف إلى مليون.
- بيانات إنتاج مقنّعة (Masked): نسخة من الإنتاج استُبدلت فيها الأسماء والمعرّفات وأرقام الهواتف وعناوين البريد الإلكتروني والعناوين أو خُلطت أو حُذفت، مع إبقاء الروابط بين الجداول. واقعية — ومفيدة في تجربة مسبقة لترحيل البيانات (Migration) مثلاً — لكنها تحتاج إلى عملية معتمدة.
- بيانات الإنتاج كما هي: سجلات حقيقية، لا مكان لها في بيئات الاختبار من دون أساس نظامي وموافقة وحماية بمستوى الإنتاج.
مصنوعة يدوياًاصطناعية
يكتب المختبِر السجلات الدقيقة التي يحتاجها الاختبار
- التحكم في القيم:
- كامل: أي حالة أو قيمة حدّية أو غير صالحة
- الواقعية:
- الحالات التي فكّر فيها أحدٌ فقط
- الحجم:
- سجلات قليلة
- خطر البيانات الشخصية:
- لا خطر: لا تصف شخصاً حقيقياًنجاح
- أنسب استخدام:
- الحالات والحدود الدقيقة في حالات الاختبار
مولَّدةاصطناعية
تُنشئ أداة أو سكربت أو الواجهة البرمجية للمنتج السجلات من قواعد
- التحكم في القيم:
- عالٍ: القواعد تحدد الصيغ والنطاقات والحجم
- الواقعية:
- بقدر واقعية قواعدها
- الحجم:
- من عشرة صفوف إلى مليون
- خطر البيانات الشخصية:
- لا خطر: لا تصف شخصاً حقيقياًنجاح
- أنسب استخدام:
- التهيئة القابلة للتكرار وبيانات الحمل والتوطين
نسخة إنتاج مقنّعةمن الإنتاج
الحقول الشخصية مستبدلة أو مخلوطة أو محذوفة، مع إبقاء الروابط بين الجداول
- التحكم في القيم:
- منخفض: ما يتصادف وجوده في الإنتاج فقط
- الواقعية:
- أشكال وتوزيعات حقيقية
- الحجم:
- جزء منها أو الحجم الكامل
- خطر البيانات الشخصية:
- قد تكشف الهوية: تحتاج إلى موافقةتنبيه
- أنسب استخدام:
- تمارين الترحيل التي تحتاج إلى توزيعات حقيقية
نسخة إنتاج كما هيبيانات حقيقية
سجلات عملاء حقيقيين دون تغيير
- التحكم في القيم:
- منخفض: ما يتصادف وجوده في الإنتاج فقط
- الواقعية:
- حقيقية، بما فيها أخطاؤها
- الحجم:
- الحجم الكامل
- خطر البيانات الشخصية:
- بيانات شخصية حقيقية في نظام اختبارفشل
- أنسب استخدام:
- لا تصلح لبيئات الاختبار
عامل البيانات المقنّعة على أنها بيانات شخصية إلى أن يقرر مسؤول حماية البيانات أو فريق الخصوصية غير ذلك.
جرّبها: مصنع بيانات الاختبار جرّبها: مولّد مستخدمين وهميين جرّبها: مولّد عملاء وهميين
البيانات الشخصية: أبقِ الأشخاص الحقيقيين خارج أنظمة الاختبار
يعرّف نظام حماية البيانات الشخصية (PDPL)، الذي تشرف عليه الهيئة السعودية للبيانات والذكاء الاصطناعي (سدايا SDAIA)، البيانات الشخصية تعريفاً واسعاً: كل بيانات يمكن أن تؤدي إلى معرفة الفرد بصورة مباشرة أو غير مباشرة، مثل الاسم ورقم الهوية والعنوان ورقم الهاتف. والبيانات الصحية من الفئات المصنّفة بيانات حساسة.
التقنيع (Masking) لا يجعل البيانات مجهولة الهوية تلقائياً. فإن استبدلت الأسماء وأبقيت تاريخ الميلاد والحي وجهة العمل، فقد يظل السجل يشير إلى شخص واحد. وتقرير ما إذا كانت مجموعة مقنّعة ما زالت بيانات شخصية يعود إلى مسؤول حماية البيانات أو فريق الخصوصية؛ وإلى أن يقرروا، عاملها على أنها بيانات شخصية.
- استخدم النطاقات التي تحجزها RFC 2606، مثل
example.com، لبريد الاختبار، حتى لا تصل أي رسالة إلى صندوق بريد حقيقي. - ادفع فقط ببطاقات الاختبار التي ينشرها مزوّد الدفع في بيئته التجريبية (Sandbox).
- أبقِ البيانات الشخصية الحقيقية خارج تقارير الأخطاء ولقطات الشاشة والسجلات (Logs) وأدوات الذكاء الاصطناعي؛ وإن وجدت شيئاً منها في نظام اختبار فأبلغ عنه ولا تنسخه.
جرّبها: مولّد عناوين بريد إلكتروني وهمية جرّبها: بيانات اختبار العناوين السعودية
إدارة بيانات الاختبار
إدارة بيانات الاختبار (Test Data Management – TDM) هي الطريقة التي يخطط بها الفريق لبيانات الاختبار ويوفّرها ويحميها ويحافظ عليها كي تبقى الاختبارات قابلة للتكرار. قد يكون لها في المؤسسة الكبيرة دور مخصص، وهي في الفريق الصغير بضع عادات:
- التخطيط: اكتب بيانات كل حالة اختبار في صورة حالة محددة. فعبارة «عميل صالح» ليست بيانات اختبار، أما «العميل C-101 الذي لديه طلب واحد مدفوع بالبطاقة سُلِّم قبل ثلاثة أيام» فهي كذلك.
- التوفير: أنشئ البيانات بسكربتات أو مولّدات محفوظة في نظام إدارة الإصدارات (Version Control) بجوار الاختبارات، لا يدوياً يوم التنفيذ.
- العزل: امنح كل مختبِر أو تشغيل متوازٍ سجلاته الخاصة بمعرّفات فريدة، حتى لا تغيّر الاختبارات بيانات بعضها.
- إبقاؤها حديثة: اكتب التواريخ نسبةً إلى يوم التشغيل («سُلِّم اليوم ناقص 14 يوماً»)؛ فالتاريخ الثابت يتوقف عن اختبار القاعدة بعد أسابيع.
- إعادة الضبط والإزالة: استعِد خط أساس (Baseline) معروفاً بين التشغيلات، واحذف الملفات المصدَّرة والنسخ التي لم تعد تحتاجها.
مثال تطبيقي: بيانات الاختبار لقاعدة الاسترداد
المتطلب: «يستطيع العملاء طلب استرداد المبلغ خلال 14 يوماً من التسليم. ويُعاد مبلغ الدفع بالبطاقة إلى البطاقة، ومبلغ طلبات الدفع عند الاستلام إلى محفظة العميل».
قبل كتابة الخطوات، يُعدّ المختبِر قائمة البيانات: صفوفاً صالحة لمسارَي الاسترداد، وصفوفاً حدّية على جانبي اليوم 14 بتواريخ نسبية، وصفوفاً غير صالحة لحالة خاطئة ومالك خاطئ، وصفاً واحداً شبيهاً بالإنتاج. ويسأل مالك المنتج أولاً: هل تشمل عبارة «خلال 14 يوماً» اليوم الرابع عشر؟ والجدول يفترض أنها تشمله.
ID Kind Record (all synthetic) Expected
TD-01 valid card order, delivered today-3, 240.00 SAR refund to card
TD-02 valid cash-on-delivery order, delivered today-5 refund to wallet
TD-03 boundary card order, delivered today-14 refund accepted
TD-04 boundary card order, delivered today-15 refund refused
TD-05 invalid state order shipped, not yet delivered no refund option
TD-06 invalid state order already refunded refund refused
TD-07 invalid owner order of C-102, opened by its id access denied
TD-08 production-like customer with 350 orders, Arabic full name history pages load
Log in as C-101 for TD-01 to TD-07; TD-08 logs in as C-103.
All emails end in @example.com. Dates are relative to the run date.
Restore baseline "refunds-v3" before each run.أخطاء شائعة
- الاختبار ببيانات مرتبة ومعتادة فقط، فلا تُجرَّب أبداً البيانات الفارغة أو الطويلة جداً أو غير اللاتينية أو التي في حالة خاطئة.
- نسخ بيانات الإنتاج، أو «تقنيعها» بتغيير الأسماء وحدها.
- مشاركة حساب اختبار واحد بين المختبِرين أو التشغيلات المتوازية، فتغيّر الاختبارات بيانات بعضها وتفشل عشوائياً.
- تثبيت تواريخ تتقادم: فالاختبار المكتوب لطلب «سُلِّم في 3 مارس» يتوقف عن اختبار قاعدة الأيام الـ14 بعد أسابيع.
- كتابة «عميل صالح» بدلاً من السجل المحدد وحالته، فلا يستطيع أحد تكرار الاختبار أو إعادة إنتاج الخطأ.
من منظور ضمان الجودة
في العمل الفعلي، يخطط المختبِر للبيانات أثناء تحليل الاختبار وتصميمه، لا يوم التنفيذ، ويرصد الحالات التي يصعب إنشاؤها، مثل طلب سُلِّم قبل 15 يوماً أو دفعة رفضها البنك. ويطرحها في جلسات تحسين قائمة العمل (Backlog Refinement)، لأن بعضها يحتاج إلى مساعدة المطور، مثل سكربت تعبئة بيانات أو طريقة لضبط تاريخ التسليم.
سجّل البيانات في حالة الاختبار وفي كل تقرير خطأ: معرّف السجل، وحالته، وطريقة إنشائه. وتعامل المواصفة ISO/IEC/IEEE 29119-3 متطلبات بيانات الاختبار بوصفها عنصر توثيق مستقلاً؛ أما في الفريق الرشيق (Agile) فتكفي غالباً ملاحظة قصيرة في القصة.
تمرين عملي
جهّز بيانات الاختبار لحجز المواعيد
لتطبيق عيادة ثلاث قواعد: يُحجز الموعد قبل حلوله بيوم واحد إلى 30 يوماً؛ ولا يملك المريض أكثر من موعدين قادمين؛ ويُحجز للمرضى دون 18 عاماً من حساب وليّ الأمر. اكتب جدول بيانات اختبار من ثمانية صفوف على الأقل يغطي أنواع البيانات الأربعة، مع النتيجة المتوقعة ومصدر كل صف.
ثم ردّ على زميل يقترح نسخ مرضى الشهر الماضي من الإنتاج وتغيير أسمائهم.
إظهار الإجابة النموذجية
صالحة: بالغ بلا مواعيد يحجز لليوم + 7، ووليّ أمر يحجز لطفل مرتبط بحسابه عمره 10 سنوات (يُحجز كلاهما).
حدّية: اليوم + 1 واليوم + 30 (يُحجز)، واليوم نفسه واليوم + 31 (يُرفض)؛ وموعد قادم ثانٍ (يُحجز) وثالث (يُرفض)؛ ومريض يبلغ 18 عاماً اليوم يحجز بنفسه، ومن يبلغها غداً يُوجَّه إلى وليّ أمر. واسأل مالك المنتج: هل يُحسب العمر يوم الحجز أم يوم الموعد؟
غير صالحة: حساب مريض عمره 17 عاماً، وتاريخ ماضٍ أو فارغ، ووليّ أمر يحجز لطفل غير مرتبط بحسابه (كلها تُرفض). شبيهة بالإنتاج: 500 سجل مريض مولَّد بأسماء مكتوبة بالحروف العربية والديفاناغارية واللاتينية (يجد البحث المريض بجزء من اسمه في كل خط).
المصادر: سجلات يدوية للحالات المحددة، ومولَّدة للحجم؛ وكلها اصطناعية، والأعمار والتواريخ محسوبة من يوم التشغيل.
الرد: «لا. سجلات المرضى بيانات شخصية، ونظام حماية البيانات الشخصية يعدّ البيانات الصحية حساسة. وتاريخ الميلاد والحي وسجل الزيارات قد تكشف هوية الشخص، ثم إن البيانات الاصطناعية تعطينا الحالات والحدود التي نحتاجها أصلاً».
أسئلة شائعة
هل يمكن استخدام بيانات الإنتاج في الاختبار أبداً؟
فقط تحت ضوابط: أساس نظامي وموافقة الجهة المسؤولة عن حماية البيانات، وتقنيع تم التحقق منه، وضوابط وصول مماثلة لضوابط الإنتاج، وحذف بعد الاستخدام. والبيانات الاصطناعية هي الخيار الافتراضي. أما الفحوص التي يجب أن تعمل في الإنتاج فتستخدم حسابات اختبار مخصصة، لا سجلات العملاء.
هل البيانات المقنّعة هي نفسها البيانات المجهولة الهوية؟
لا. يستبدل التقنيع حقولاً مختارة أو يخفيها، وقد تكشف الحقول الباقية هوية شخص حين تجتمع، وبعض التقنيع يمكن عكسه. ولا تُعدّ البيانات مجهولة الهوية إلا حين يتعذّر ربطها بشخص، وتقرير ذلك مهمة فريق الخصوصية.
من المسؤول عن بيانات الاختبار؟
المسؤولية مشتركة. يحدد المختبِرون متطلبات البيانات ويتحققون منها قبل التشغيل، وغالباً يكتب المطورون أو مهندسو DevOps سكربتات تعبئة البيانات ومهام إعادة الضبط، ويقرر مسؤول حماية البيانات في أي شيء مشتق من بيانات شخصية. وفي بعض المؤسسات الكبيرة دور مخصص لإدارة بيانات الاختبار.
هل أكتب بيانات الاختبار في حالة الاختبار أم في ملف منفصل؟
كلاهما بحسب الحجم. اكتب السجل أو القيمة المحددة في حالة الاختبار حين تكون قليلة، واحفظ المجموعات الأكبر في جدول أو ملف بيانات تشير إليه حالة الاختبار داخل نظام إدارة الإصدارات، كي تعمل الخطوات نفسها مع صفوف كثيرة. وهذا أساس الاختبار المعتمد على البيانات (Data-driven Testing).
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- Personal Data Protection Law (English translation)النظام السعودي لحماية البيانات الشخصية — ولماذا ينبغي أن تستخدم بيئات الاختبار بيانات اصطناعية بدلاً من نسخ سجلات العملاء الحقيقية.
- ISO/IEC/IEEE 29119-3:2021 — Software and systems engineering — Software testing — Part 3: Test documentationنماذج ومحتوى وثائق الاختبار — سياسة الاختبار واستراتيجيته وخطته وتقارير الحالة والإنجاز وتقارير الحوادث.
- RFC 2606: Reserved Top Level DNS Namesيحجز example.com وexample.net وexample.org و.test/.example للتوثيق والاختبار — النطاقات التي تُستخدم في البيانات الوهمية.
تدرّب بأدوات متقن
مصنع متكامل لبيانات الاختبار الاصطناعية: مستخدمون وعملاء وشركات وعناوين وأرقام وتواريخ وسلاسل نصية بصيغة JSON أو CSV أو SQL أو XML.
ولّد سجلات مستخدمين وهمية (الاسم واسم المستخدم والبريد الإلكتروني وكلمة المرور وبذرة الصورة الرمزية والدور) لحسابات الاختبار.
ولّد عناوين بريد إلكتروني اختبارية بنطاقات محجوزة آمنة (example.com و.test) مع متغيرات العنونة بعلامة الزائد (plus-addressing).
ولّد سكربتات تهيئة SQL (جملة CREATE TABLE وجمل INSERT) بصفوف اختبار واقعية لأي لهجة.
ولّد مدخلات مليئة بالأحرف الخاصة: علامات الاقتباس، والأحرف الوصفية لـ SQL/HTML/JSON، وأحرف التحكم، والرموز التعبيرية، وحيل المسارات.
ولّد أسماء وعناوين وجملاً وأرقاماً عربية (بالأرقام العربية-الهندية) وحالات حدّية للكتابة من اليمين إلى اليسار لاختبار التوطين.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.